@@ -20,8 +20,8 @@ import Test.Hspec (Arg, Expectation, Spec, SpecWith, describe, it)
20import Test.Hspec.Hedgehog (hedgehog)
20import Test.Hspec.Hedgehog (hedgehog)
22import Data.TypeRepMap.Internal (TypeRepMap (..), WrapTypeable (..), delete, insert, invariantCheck,
22import Data.TypeRepMap.Internal (TypeRepMap (..), WrapTypeable (..), delete, insert, invariantCheck,
23− lookup, member, generateOrderMapping, fromSortedList, alter,
23+ lookup, member, union, generateOrderMapping, fromSortedList,
24− adjust)
24+ adjust, alter, intersection)
26import qualified Hedgehog.Gen as Gen
26import qualified Hedgehog.Gen as Gen
27import qualified Hedgehog.Range as Range
27import qualified Hedgehog.Range as Range
@@ -39,6 +39,7 @@ typeRepMapPropertySpec = describe "TypeRepMap Property tests" $ do
39 alterDeleteSpec
39 alterDeleteSpec
40 alterAdjustSpec
40 alterAdjustSpec
41 alterModifySpec
41 alterModifySpec
42 describe "Internal helpers" $ do
43 describe "Internal helpers" $ do
43 generateOrderMappingInvariantSpec
44 generateOrderMappingInvariantSpec
44 describe "Instance Laws" $ do
45 describe "Instance Laws" $ do
@@ -118,6 +119,12 @@ alterModifySpec = it "lookup k (alter f) == f (lookup k m)" $ hedgehog $ do
118 | otherwise = Just $ IntProxy p (n * 10)
119 | otherwise = Just $ IntProxy p (n * 10)
119 lookup @n @IntProxy (alter @n f m) === f (lookup @n @IntProxy m)
120 lookup @n @IntProxy (alter @n f m) === f (lookup @n @IntProxy m)
122+intersectionSpec :: Property
123+intersectionSpec = it "m `intersection` (m `union` n) == m" $ hedgehog $ do
126+ m `intersection` (m `union` n) === m
121----------------------------------------------------------------------------
128----------------------------------------------------------------------------
122-- Internal helpers
129-- Internal helpers
123----------------------------------------------------------------------------
130----------------------------------------------------------------------------