Skip to content

Commit 3f5bda8

Browse files
authored
Merge pull request #431 from IntersectMBO/dcoutts/lockstep-io-sim-tweak-generation
Add more labels to the quickcheck-lockstep StateMachine tests
2 parents 79ae97f + 28c4890 commit 3f5bda8

File tree

3 files changed

+257
-25
lines changed

3 files changed

+257
-25
lines changed

test/Database/LSMTree/Model/Normal.hs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@ module Database.LSMTree.Model.Normal (
3030
, snapshot
3131
-- * Multiple writable table handles
3232
, duplicate
33+
-- * Testing
34+
, size
3335
) where
3436

3537
import qualified Crypto.Hash.SHA256 as SHA256
@@ -61,6 +63,9 @@ type role Table nominal nominal nominal
6163
empty :: Table k v blob
6264
empty = Table Map.empty
6365

66+
size :: Table k v blob -> Int
67+
size (Table m) = Map.size m
68+
6469
-- | This instance is for testing and debugging only.
6570
instance
6671
(SerialiseKey k, SerialiseValue v, SerialiseValue blob)

test/Database/LSMTree/Model/Normal/Session.hs

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,14 @@ module Database.LSMTree.Model.Normal.Session (
2424
Model (..)
2525
, initModel
2626
, UpdateCounter (..)
27-
-- ** SomeTable
27+
-- ** SomeTable, for testing
2828
, SomeTable (..)
2929
, toSomeTable
3030
, fromSomeTable
31+
, withSomeTable
32+
, TableHandleID
33+
, tableHandleID
34+
, Model.size
3135
-- ** Constraints
3236
, C
3337
, C_
@@ -118,7 +122,9 @@ newtype UpdateCounter = UpdateCounter Word64
118122
deriving stock (Show, Eq, Ord)
119123
deriving newtype (Num)
120124

121-
newtype SomeTable = SomeTable Dynamic
125+
data SomeTable where
126+
SomeTable :: (Typeable k, Typeable v, Typeable blob)
127+
=> Model.Table k v blob -> SomeTable
122128

123129
instance Show SomeTable where
124130
show (SomeTable table) = show table
@@ -127,13 +133,20 @@ toSomeTable ::
127133
(Typeable k, Typeable v, Typeable blob)
128134
=> Model.Table k v blob
129135
-> SomeTable
130-
toSomeTable = SomeTable . toDyn
136+
toSomeTable = SomeTable
131137

132138
fromSomeTable ::
133139
(Typeable k, Typeable v, Typeable blob)
134140
=> SomeTable
135141
-> Maybe (Model.Table k v blob)
136-
fromSomeTable (SomeTable tbl) = fromDynamic tbl
142+
fromSomeTable (SomeTable tbl) = cast tbl
143+
144+
withSomeTable ::
145+
(forall k v blob. (Typeable k, Typeable v, Typeable blob)
146+
=> Model.Table k v blob -> a)
147+
-> SomeTable
148+
-> a
149+
withSomeTable f (SomeTable tbl) = f tbl
137150

138151
newtype SomeCursor = SomeCursor Dynamic
139152

0 commit comments

Comments
 (0)