{-# 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) ] ]