@@ -6,50 +6,36 @@ module Test.Spec.QuickCheck (
6
6
7
7
import Prelude
8
8
9
- import Effect.Class (liftEffect )
10
- import Data.Foldable (intercalate )
11
- import Data.List (mapMaybe , length )
12
- import Data.Maybe (Maybe (..))
13
- import Data.Tuple (Tuple (..))
14
- import Effect.Aff (Aff , error , throwError )
15
- import Test.QuickCheck as QC
9
+ import Data.Array (fold )
10
+ import Data.Foldable (intercalate )
11
+ import Data.List (mapMaybe , null )
12
+ import Data.Maybe (Maybe (..))
13
+ import Data.Tuple.Nested (type (/\), (/\))
14
+ import Effect.Aff (Aff , error , throwError )
15
+ import Effect.Class (liftEffect )
16
+ import Test.QuickCheck as QC
16
17
17
18
-- | Runs a Testable with a random seed and 100 inputs.
18
- quickCheck :: forall p .
19
- (QC.Testable p ) =>
20
- p ->
21
- Aff Unit
19
+ quickCheck :: ∀ p . (QC.Testable p ) => p -> Aff Unit
22
20
quickCheck = quickCheck' 100
23
21
24
22
-- | Runs a Testable with a random seed and the given number of inputs.
25
- quickCheck' :: forall p .
26
- (QC.Testable p ) =>
27
- Int ->
28
- p ->
29
- Aff Unit
23
+ quickCheck' :: ∀ p . (QC.Testable p ) => Int -> p -> Aff Unit
30
24
quickCheck' n prop = do
31
25
seed <- liftEffect QC .randomSeed
32
26
quickCheckPure seed n prop
33
27
34
- getErrorMessage :: Tuple QC.Seed QC.Result -> Maybe String
35
- getErrorMessage (Tuple seed result) =
36
- case result of
37
- QC.Success -> Nothing
38
- QC.Failed msg ->
39
- Just $
40
- " Test (seed " <> show (QC .unSeed seed) <> " ) failed: \n " <> msg
28
+ getErrorMessage :: QC.Seed /\ QC.Result -> Maybe String
29
+ getErrorMessage (_ /\ QC.Success ) =
30
+ Nothing
31
+ getErrorMessage (seed /\ QC.Failed msg) =
32
+ Just $ fold [" Test (seed " , show (QC .unSeed seed), " ) failed: \n " , msg]
41
33
42
34
-- | Runs a Testable with a given seed and number of inputs.
43
- quickCheckPure :: forall p .
44
- (QC.Testable p ) =>
45
- QC.Seed ->
46
- Int ->
47
- p ->
48
- Aff Unit
35
+ quickCheckPure :: ∀ p . (QC.Testable p ) => QC.Seed -> Int -> p -> Aff Unit
49
36
quickCheckPure seed n prop = do
50
37
let results = QC .quickCheckPure' seed n prop
51
38
let msgs = mapMaybe getErrorMessage results
52
39
53
- if length msgs > 0
54
- then throwError $ error $ intercalate " \n " msgs
55
- else pure unit
40
+ unless (null msgs) $
41
+ throwError $ error $ intercalate " \n " msgs
0 commit comments