-
"All operations preserve the invariant: \
-
\all token quantities held within a map are non-zero" $ do
-
it "prop_arbitrary_invariant" $
-
property prop_arbitrary_invariant
-
it "prop_shrink_invariant" $
-
property prop_shrink_invariant
-
it "prop_empty_invariant" $
-
property prop_empty_invariant
-
it "prop_singleton_invariant" $
-
property prop_singleton_invariant
-
it "prop_fromFlatList_invariant" $
-
property prop_fromFlatList_invariant
-
it "prop_fromNestedList_invariant" $
-
property prop_fromNestedList_invariant
-
it "prop_add_invariant" $
-
property prop_add_invariant
-
it "prop_subtract_invariant" $
-
property prop_subtract_invariant
-
it "prop_difference_invariant" $
-
property prop_difference_invariant
-
it "prop_intersection_invariant" $
-
property prop_intersection_invariant
-
it "prop_setQuantity_invariant" $
-
property prop_setQuantity_invariant
-
it "prop_adjustQuantity_invariant" $
-
property prop_adjustQuantity_invariant
describe "Construction and deconstruction" $ do
property testPrettyNested
-
--------------------------------------------------------------------------------
-
--------------------------------------------------------------------------------
-
-- Tests that all quantities within the given map are non-zero.
-
invariantHolds :: TokenMap -> Bool
-
all TokenQuantity.isNonZero $ getQuantity <$> TokenMap.toFlatList b
-
prop_arbitrary_invariant :: TokenMap -> Property
-
prop_arbitrary_invariant = property . invariantHolds
-
prop_shrink_invariant :: TokenMap -> Property
-
prop_shrink_invariant b = property $ all invariantHolds $ shrink b
-
prop_empty_invariant :: Property
-
prop_empty_invariant = property $ invariantHolds TokenMap.empty
-
prop_singleton_invariant :: (AssetId, TokenQuantity) -> Property
-
prop_singleton_invariant (asset, quantity) = property $
-
invariantHolds $ TokenMap.singleton asset quantity
-
prop_fromFlatList_invariant :: [(AssetId, TokenQuantity)] -> Property
-
prop_fromFlatList_invariant entries =
-
property $ invariantHolds $ TokenMap.fromFlatList entries
-
prop_fromNestedList_invariant
-
:: [(TokenPolicyId, NonEmpty (TokenName, TokenQuantity))] -> Property
-
prop_fromNestedList_invariant entries =
-
property $ invariantHolds $ TokenMap.fromNestedList entries
-
prop_add_invariant :: TokenMap -> TokenMap -> Property
-
prop_add_invariant b1 b2 = property $ invariantHolds $ TokenMap.add b1 b2
-
prop_subtract_invariant :: TokenMap -> TokenMap -> Property
-
prop_subtract_invariant m1 m2 = property $
-
m2 `leq` m1 ==> invariantHolds result
-
case TokenMap.subtract m1 m2 of
-
Nothing -> error "prop_subtract_invariant"
-
prop_difference_invariant :: TokenMap -> TokenMap -> Property
-
prop_difference_invariant m1 m2 =
-
property $ invariantHolds $ TokenMap.difference m1 m2
-
prop_intersection_invariant :: TokenMap -> TokenMap -> Property
-
prop_intersection_invariant m1 m2 =
-
property $ invariantHolds $ TokenMap.intersection m1 m2
-
prop_setQuantity_invariant
-
:: TokenMap -> AssetId -> TokenQuantity -> Property
-
prop_setQuantity_invariant b asset quantity = property $
-
invariantHolds $ TokenMap.setQuantity b asset quantity
-
prop_adjustQuantity_invariant :: TokenMap -> AssetId -> Property
-
prop_adjustQuantity_invariant b asset = property $
-
invariantHolds $ TokenMap.adjustQuantity b asset TokenQuantity.predZero
--------------------------------------------------------------------------------
-- Construction and deconstruction properties
--------------------------------------------------------------------------------