packages feed

genvalidity-mergeful-0.2.0.0: bench/Bench.hs

{-# LANGUAGE AllowAmbiguousTypes #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TypeApplications #-}

module Main where

import Criterion.Main as Criterion
import Data.GenValidity.Criterion
import Data.GenValidity.Mergeful ()
import Data.Mergeful.Collection
import Data.Mergeful.Item
import Data.Mergeful.Value

main :: IO ()
main =
  Criterion.defaultMain
    [ bgroup "Utils" [genValidBench @ServerTime, genValidBench @(Timed Bool)],
      bgroup
        "Value"
        [ genValidBench @ChangedFlag,
          genValidBench @(ValueMergeResult Bool),
          genValidBench @(ClientValue Bool),
          genValidBench @(ValueSyncRequest Bool),
          genValidBench @(ValueSyncResponse Bool),
          genValidBench @(ServerValue Bool)
        ],
      bgroup
        "Item"
        [ genValidBench @(ItemMergeResult Bool),
          genValidBench @(ClientItem Bool),
          genValidBench @(ItemSyncRequest Bool),
          genValidBench @(ItemSyncResponse Bool),
          genValidBench @(ServerItem Bool)
        ],
      bgroup
        "Collection"
        [ genValidBench @ClientId,
          genValidBench @(ClientStore ClientId Int Bool),
          genValidBench @(SyncRequest ClientId Int Bool),
          genValidBench @(ClientAddition Int),
          genValidBench @(SyncResponse ClientId Int Bool),
          genValidBench @(ServerStore Int Bool)
        ]
    ]