1{-# LANGUAGE DerivingStrategies #-}
2{-# LANGUAGE DerivingVia #-}
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
7-- `size` parameter while generating.
9module RecursiveTest where
11import Control.DeepSeq (NFData)
12import GHC.Generics (Generic)
14import Test.QuickCheck.Arbitrary.Generic
17 deriving (Eq, Show, Generic)
18 deriving anyclass NFData
19#if MIN_VERSION_QuickCheck(2, 14, 0)
20 deriving Arbitrary via (GenericArbitrary Unit)
22instance Arbitrary Unit where
23 arbitrary = genericArbitrary
24 shrink = genericShrink
27prop_unitTotal :: Unit -> Property
30data Single = Single Int
31 deriving (Eq, Show, Generic)
32 deriving anyclass NFData
33#if MIN_VERSION_QuickCheck(2, 14, 0)
34 deriving Arbitrary via (GenericArbitrary Single)
36instance Arbitrary Single where
37 arbitrary = genericArbitrary
38 shrink = genericShrink
41prop_singleTotal :: Single -> Property
42prop_singleTotal = total
44data Multiple = M1 | M2 | M3 Int
45 deriving (Eq, Show, Generic)
46 deriving anyclass NFData
47#if MIN_VERSION_QuickCheck(2, 14, 0)
48 deriving Arbitrary via (GenericArbitrary Multiple)
50instance Arbitrary Multiple where
51 arbitrary = genericArbitrary
52 shrink = genericShrink
55prop_multipleTotal :: Multiple -> Property
56prop_multipleTotal = total
61 , multiple :: Multiple
62 } deriving (Eq, Show, Generic)
63 deriving anyclass NFData
64#if MIN_VERSION_QuickCheck(2, 14, 0)
65 deriving Arbitrary via (GenericArbitrary Rec)
67instance Arbitrary Rec where
68 arbitrary = genericArbitrary
69 shrink = genericShrink
72prop_recTotal :: Rec -> Property
79 deriving (Eq, Show, Generic)
80 deriving anyclass NFData
81#if MIN_VERSION_QuickCheck(2, 14, 0)
82 deriving Arbitrary via (GenericArbitrary Expr)
84instance Arbitrary Expr where
85 arbitrary = genericArbitrary
86 shrink = genericShrink
89prop_exprTotal :: Expr -> Property
99 deriving (Eq, Show, Generic)
100 deriving anyclass NFData
101#if MIN_VERSION_QuickCheck(2, 14, 0)
102 deriving Arbitrary via (GenericArbitrary Recursive)
104instance Arbitrary Recursive where
105 arbitrary = genericArbitrary
106 shrink = genericShrink
109prop_recursiveTotal :: Recursive -> Property
110prop_recursiveTotal = total
113 = Deep DeepRecursive DeepRecursive DeepRecursive DeepRecursive DeepRecursive
115 deriving (Eq, Show, Generic)
116 deriving anyclass NFData
117#if MIN_VERSION_QuickCheck(2, 14, 0)
118 deriving Arbitrary via (GenericArbitrary DeepRecursive)
120instance Arbitrary DeepRecursive where
121 arbitrary = genericArbitrary
122 shrink = genericShrink
125prop_deepRecursiveTotal :: DeepRecursive -> Property
126prop_deepRecursiveTotal = total
129 deriving (Eq, Show, Generic)
130 deriving anyclass NFData
132-- Note that deriving via doesn't work for case with arguments
133instance (Arg (P p) p, Arbitrary p) => Arbitrary (P p) where
134 arbitrary = genericArbitrary
135 shrink = genericShrink
137prop_Ptotal :: P (P Int) -> Property
keysesc to close
- j k
- move down, up
- enter
- open
- esc
- back, or up a level
- 1 2 3 4
- readme, files, commits, refs
- /
- filter
- y
- copy the clone command
- c
- compare the chosen commit with another (or shift-click both)
- ?
- show or hide this list