@@ -46,6 +46,7 @@ import Data.List (sort)
4646import qualified Data.Primitive.ByteArray as BA
4747import qualified Data.Vector.Primitive as VP
4848import Data.Word
49+ import qualified Database.LSMTree as Unified
4950import Database.LSMTree.Common (Range (.. ))
5051import Database.LSMTree.Extras
5152import Database.LSMTree.Extras.Index (Append (.. ))
@@ -75,6 +76,25 @@ import Test.QuickCheck.Instances ()
7576 Common LSMTree types
7677-------------------------------------------------------------------------------}
7778
79+ instance (Arbitrary v , Arbitrary blob ) => Arbitrary (Unified. Update v blob ) where
80+ arbitrary = QC. arbitrary2
81+ shrink = QC. shrink2
82+
83+ instance Arbitrary2 Unified. Update where
84+ liftArbitrary2 genVal genBlob = frequency
85+ [ (10 , Unified. Insert <$> genVal <*> liftArbitrary genBlob)
86+ , (5 , Unified. Mupsert <$> genVal)
87+ , (1 , pure Unified. Delete )
88+ ]
89+
90+ liftShrink2 shrinkVal shrinkBlob = \ case
91+ Unified. Insert v blob ->
92+ Unified. Delete
93+ : map (uncurry Unified. Insert )
94+ (liftShrink2 shrinkVal (liftShrink shrinkBlob) (v, blob))
95+ Unified. Mupsert v -> Unified. Insert v Nothing : map Unified. Mupsert (shrinkVal v)
96+ Unified. Delete -> []
97+
7898instance (Arbitrary v , Arbitrary blob ) => Arbitrary (Normal. Update v blob ) where
7999 arbitrary = QC. arbitrary2
80100 shrink = QC. shrink2
0 commit comments