Skip to content

Commit 75b89ed

Browse files
committed
Simplify Arbitrary *DerivedPath again
Turns out, we didn't need the manual stuff, at least not yet.
1 parent ccbe6b2 commit 75b89ed

File tree

1 file changed

+7
-26
lines changed

1 file changed

+7
-26
lines changed

hnix-store-tests/src/System/Nix/Arbitrary/DerivedPath.hs

Lines changed: 7 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,11 @@
44
module System.Nix.Arbitrary.DerivedPath where
55

66
import Data.Set qualified
7-
import Test.QuickCheck
7+
import Test.QuickCheck (Arbitrary(..), oneof)
8+
import Test.QuickCheck.Arbitrary.Generic (GenericArbitrary(..))
89
import System.Nix.Arbitrary.OutputName ()
910
import System.Nix.Arbitrary.StorePath ()
10-
import System.Nix.DerivedPath
11+
import System.Nix.DerivedPath (SingleDerivedPath, DerivedPath, OutputsSpec(..))
1112

1213
instance Arbitrary OutputsSpec where
1314
arbitrary = oneof
@@ -17,28 +18,8 @@ instance Arbitrary OutputsSpec where
1718
<$> ((:) <$> arbitrary <*> arbitrary)
1819
]
1920

20-
arbitrarySingleDerivedPath :: Word -> Gen SingleDerivedPath
21-
arbitrarySingleDerivedPath = \case
22-
0 -> SingleDerivedPath_Opaque <$> arbitrary
23-
depth -> SingleDerivedPath_Built
24-
<$> (arbitrarySingleDerivedPath $ depth - 1)
25-
<*> arbitrary
21+
deriving via GenericArbitrary SingleDerivedPath
22+
instance Arbitrary SingleDerivedPath
2623

27-
arbitraryDerivedPath :: Word -> Gen DerivedPath
28-
arbitraryDerivedPath = \case
29-
0 -> DerivedPath_Opaque <$> arbitrary
30-
depth -> DerivedPath_Built
31-
<$> (arbitrarySingleDerivedPath $ depth - 1)
32-
<*> arbitrary
33-
34-
instance Arbitrary SingleDerivedPath where
35-
arbitrary = do
36-
n <- getSize
37-
k <- choose (0, n)
38-
arbitrarySingleDerivedPath $ fromIntegral k
39-
40-
instance Arbitrary DerivedPath where
41-
arbitrary = do
42-
n <- getSize
43-
k <- choose (0, n)
44-
arbitraryDerivedPath $ fromIntegral k
24+
deriving via GenericArbitrary DerivedPath
25+
instance Arbitrary DerivedPath

0 commit comments

Comments
 (0)