@@ -1,14 +1,13 @@
1{-# LANGUAGE DerivingStrategies #-}
1{-# LANGUAGE DerivingStrategies #-}
2{-# LANGUAGE DerivingVia #-}
2{-# LANGUAGE DerivingVia #-}
3{-# LANGUAGE DeriveAnyClass #-}
3{-# LANGUAGE DeriveAnyClass #-}
4−{-# OPTIONS_GHC -fconstraint-solver-iterations=5 #-} -- GHC-9.2.4
6-- | Testing that our Arbitrary instances do not get stuck and respect the
5-- | Testing that our Arbitrary instances do not get stuck and respect the
7-- `size` parameter while generating.
6-- `size` parameter while generating.
9module RecursiveTest where
8module RecursiveTest where
11−import Control.DeepSeq (NFData)
10+import Control.DeepSeq
12import GHC.Generics (Generic)
11import GHC.Generics (Generic)
13import Test.QuickCheck
12import Test.QuickCheck
14import Test.QuickCheck.Arbitrary.Generic
13import Test.QuickCheck.Arbitrary.Generic
@@ -16,13 +15,7 @@ import Test.QuickCheck.Arbitrary.Generic
16data Unit = Unit
15data Unit = Unit
17 deriving (Eq, Show, Generic)
16 deriving (Eq, Show, Generic)
18 deriving anyclass NFData
17 deriving anyclass NFData
19−#if MIN_VERSION_QuickCheck(2, 14, 0)
20 deriving Arbitrary via (GenericArbitrary Unit)
18 deriving Arbitrary via (GenericArbitrary Unit)
22−instance Arbitrary Unit where
23− arbitrary = genericArbitrary
24− shrink = genericShrink
27prop_unitTotal :: Unit -> Property
20prop_unitTotal :: Unit -> Property
28prop_unitTotal = total
21prop_unitTotal = total
@@ -30,13 +23,7 @@ prop_unitTotal = total
30data Single = Single Int
23data Single = Single Int
31 deriving (Eq, Show, Generic)
24 deriving (Eq, Show, Generic)
32 deriving anyclass NFData
25 deriving anyclass NFData
33−#if MIN_VERSION_QuickCheck(2, 14, 0)
34 deriving Arbitrary via (GenericArbitrary Single)
26 deriving Arbitrary via (GenericArbitrary Single)
36−instance Arbitrary Single where
37− arbitrary = genericArbitrary
38− shrink = genericShrink
41prop_singleTotal :: Single -> Property
28prop_singleTotal :: Single -> Property
42prop_singleTotal = total
29prop_singleTotal = total
@@ -44,13 +31,7 @@ prop_singleTotal = total
44data Multiple = M1 | M2 | M3 Int
31data Multiple = M1 | M2 | M3 Int
45 deriving (Eq, Show, Generic)
32 deriving (Eq, Show, Generic)
46 deriving anyclass NFData
33 deriving anyclass NFData
47−#if MIN_VERSION_QuickCheck(2, 14, 0)
48 deriving Arbitrary via (GenericArbitrary Multiple)
34 deriving Arbitrary via (GenericArbitrary Multiple)
50−instance Arbitrary Multiple where
51− arbitrary = genericArbitrary
52− shrink = genericShrink
55prop_multipleTotal :: Multiple -> Property
36prop_multipleTotal :: Multiple -> Property
56prop_multipleTotal = total
37prop_multipleTotal = total
@@ -61,13 +42,7 @@ data Rec = Rec
61 , multiple :: Multiple
42 , multiple :: Multiple
62 } deriving (Eq, Show, Generic)
43 } deriving (Eq, Show, Generic)
63 deriving anyclass NFData
44 deriving anyclass NFData
64−#if MIN_VERSION_QuickCheck(2, 14, 0)
65− deriving Arbitrary via (GenericArbitrary Rec)
45+ deriving Arbitrary via (GenericArbitrary Rec)
67−instance Arbitrary Rec where
68− arbitrary = genericArbitrary
69− shrink = genericShrink
72prop_recTotal :: Rec -> Property
47prop_recTotal :: Rec -> Property
73prop_recTotal = total
48prop_recTotal = total
@@ -78,13 +53,7 @@ data Expr
78 | Mul Expr Expr
53 | Mul Expr Expr
79 deriving (Eq, Show, Generic)
54 deriving (Eq, Show, Generic)
80 deriving anyclass NFData
55 deriving anyclass NFData
81−#if MIN_VERSION_QuickCheck(2, 14, 0)
82 deriving Arbitrary via (GenericArbitrary Expr)
56 deriving Arbitrary via (GenericArbitrary Expr)
84−instance Arbitrary Expr where
85− arbitrary = genericArbitrary
86− shrink = genericShrink
89prop_exprTotal :: Expr -> Property
58prop_exprTotal :: Expr -> Property
90prop_exprTotal = total
59prop_exprTotal = total
@@ -98,13 +67,7 @@ data Recursive
98 | R5 Recursive String
67 | R5 Recursive String
99 deriving (Eq, Show, Generic)
68 deriving (Eq, Show, Generic)
100 deriving anyclass NFData
69 deriving anyclass NFData
101−#if MIN_VERSION_QuickCheck(2, 14, 0)
102 deriving Arbitrary via (GenericArbitrary Recursive)
70 deriving Arbitrary via (GenericArbitrary Recursive)
104−instance Arbitrary Recursive where
105− arbitrary = genericArbitrary
106− shrink = genericShrink
109prop_recursiveTotal :: Recursive -> Property
72prop_recursiveTotal :: Recursive -> Property
110prop_recursiveTotal = total
73prop_recursiveTotal = total
@@ -114,13 +77,7 @@ data DeepRecursive
115 deriving (Eq, Show, Generic)
78 deriving (Eq, Show, Generic)
116 deriving anyclass NFData
79 deriving anyclass NFData
117−#if MIN_VERSION_QuickCheck(2, 14, 0)
118 deriving Arbitrary via (GenericArbitrary DeepRecursive)
80 deriving Arbitrary via (GenericArbitrary DeepRecursive)
120−instance Arbitrary DeepRecursive where
121− arbitrary = genericArbitrary
122− shrink = genericShrink
125prop_deepRecursiveTotal :: DeepRecursive -> Property
82prop_deepRecursiveTotal :: DeepRecursive -> Property
126prop_deepRecursiveTotal = total
83prop_deepRecursiveTotal = total