on master help sign in
uuid: Bump dependencies on tests and benchmarks.
659d495Antoine Latter
uuid/tests/TestUUID.hs+34−29
@@ -1,4 +1,5 @@
1{-# LANGUAGE ViewPatterns #-}
1{-# LANGUAGE ViewPatterns #-}
2+
2import Control.Monad (replicateM)
3import Control.Monad (replicateM)
3import Data.Bits
4import Data.Bits
4import qualified Data.ByteString.Lazy as BL
5import qualified Data.ByteString.Lazy as BL
@@ -10,13 +11,14 @@ import qualified Data.UUID as U
10import qualified Data.UUID.V1 as U
11import qualified Data.UUID.V1 as U
11import qualified Data.UUID.V3 as U3
12import qualified Data.UUID.V3 as U3
12import qualified Data.UUID.V5 as U5
13import qualified Data.UUID.V5 as U5
13−import qualified Test.HUnit as H
14−import Test.HUnit hiding (Test)
15−import Test.QuickCheck hiding ((.&.))
16−import Test.Framework (defaultMain, Test)
17−import Test.Framework.Providers.HUnit (hUnitTestToTests)
18−import Test.Framework.Providers.QuickCheck2 (testProperty)
19
14
15+import Test.QuickCheck ( Arbitrary(arbitrary), choose )
16+import Test.Tasty ( TestTree, testGroup, defaultMain )
17+import Test.Tasty.HUnit
18+ ( Assertable(assert), assertBool, (@?=), testCase )
19+import Test.Tasty.QuickCheck ( testProperty )
20+
21+type Test = TestTree
20
22
21isValidVersion :: Int -> U.UUID -> Bool
23isValidVersion :: Int -> U.UUID -> Bool
22isValidVersion v u = lenOK && variantOK && versionOK
24isValidVersion v u = lenOK && variantOK && versionOK
@@ -31,33 +33,35 @@ instance Arbitrary U.UUID where
31 arbitrary = choose (U.nil, U.nil)
33 arbitrary = choose (U.nil, U.nil)
32
34
33
35
34−test_null :: H.Test
36+test_null :: Test
35−test_null = H.TestList [
37+test_null =
38+ testCase "namespaceDNS is not null" $
36− "namespaceDNS is not null" ~: assertBool "" (not $ U.null U3.namespaceDNS)
39+ assertBool "" (not $ U.null U3.namespaceDNS)
37− ]
38
40
39−test_v1 :: [Maybe U.UUID] -> H.Test
41+test_v1 :: [Maybe U.UUID] -> Test
40−test_v1 v1s = H.TestList [
42+test_v1 v1s = testGroup "version 1" [
41− "V1 unique" ~: nub (v1s \\ nub v1s) @?= [],
43+ testCase "V1 unique" $ nub (v1s \\ nub v1s) @?= [],
42− "V1 not null" ~: H.TestList $ map (testUUID (not . U.null)) v1s,
44+ testGroup "V1 not null" $ map (testUUID (not . U.null)) v1s,
43− "V1 valid" ~: H.TestList $ map (testUUID (isValidVersion 1)) v1s
45+ testGroup "V1 valid" $ map (testUUID (isValidVersion 1)) v1s
44 ]
46 ]
45− where testUUID :: (U.UUID -> Bool) -> Maybe U.UUID -> H.Test
47+ where testUUID :: (U.UUID -> Bool) -> Maybe U.UUID -> Test
46− testUUID p u = maybe False p u ~? show u
48+ testUUID p u =
47−
49+ testCase (show u) $
50+ assert $ maybe False p u
51+
48−test_v3 :: H.Test
52+test_v3 :: Test
49−test_v3 = H.TestList [
53+test_v3 =
50− "V3 computation" ~:
54+ testCase "V3 computation" $
51 U3.generateNamed U3.namespaceDNS name @?= uV3
55 U3.generateNamed U3.namespaceDNS name @?= uV3
52− ]
53− where name = map (fromIntegral . ord) "www.widgets.com" :: [Word8]
54− uV3 = fromJust $ U.fromString "3d813cbb-47fb-32ba-91df-831e1593ac29"
55
56
56−test_v5 :: H.Test
57+ where name = map (fromIntegral . ord) "www.widgets.com" :: [Word8]
58+ uV3 = fromJust $ U.fromString "3d813cbb-47fb-32ba-91df-831e1593ac29"
59+
60+test_v5 :: Test
57−test_v5 = H.TestList [
61+test_v5 =
58− "V5 computation" ~:
62+ testCase "V5 computation" $
59 U5.generateNamed U5.namespaceDNS name @?= uV5
63 U5.generateNamed U5.namespaceDNS name @?= uV5
60− ]
64+
61 where name = map (fromIntegral . ord) "www.widgets.com" :: [Word8]
65 where name = map (fromIntegral . ord) "www.widgets.com" :: [Word8]
62 uV5 = fromJust $ U.fromString "21f7f8de-8051-5b89-8680-0195ef798b6a"
66 uV5 = fromJust $ U.fromString "21f7f8de-8051-5b89-8680-0195ef798b6a"
63
67
@@ -91,8 +95,9 @@ main :: IO ()
91main = do
95main = do
92 v1s <- replicateM 100 U.nextUUID
96 v1s <- replicateM 100 U.nextUUID
93 defaultMain $
97 defaultMain $
98+ testGroup "tests" $
94 concat $
99 concat $
95− [ hUnitTestToTests $ H.TestList [
100+ [ [
96 test_null,
101 test_null,
97 test_v1 v1s,
102 test_v1 v1s,
98 test_v3,
103 test_v3,
uuid/uuid.cabal+5−5
@@ -64,11 +64,11 @@ Test-Suite testuuid
64 uuid,
64 uuid,
65 bytestring >= 0.9 && < 0.11,
65 bytestring >= 0.9 && < 0.11,
66 HUnit >=1.2 && < 1.3,
66 HUnit >=1.2 && < 1.3,
67− QuickCheck >=2.4 && < 2.8,
67+ QuickCheck >=2.4 && < 2.9,
68 random >= 1.0.1 && < 1.2,
68 random >= 1.0.1 && < 1.2,
69− test-framework == 0.8.*,
69+ tasty == 0.10.*,
70− test-framework-hunit == 0.3.*,
70+ tasty-hunit == 0.9.*,
71− test-framework-quickcheck2 == 0.3.*
71+ tasty-quickcheck == 0.8.*
72
72
73benchmark benchmark
73benchmark benchmark
74 Type: exitcode-stdio-1.0
74 Type: exitcode-stdio-1.0
@@ -78,6 +78,6 @@ benchmark benchmark
78 Ghc-Options: -Wall -fno-warn-orphans
78 Ghc-Options: -Wall -fno-warn-orphans
79 Build-depends: base == 4.*,
79 Build-depends: base == 4.*,
80 uuid,
80 uuid,
81− criterion >= 0.4 && < 0.9,
81+ criterion >= 0.4 && < 1.2,
82 mersenne-random-pure64,
82 mersenne-random-pure64,
83 random >= 1.0.1 && < 1.2
83 random >= 1.0.1 && < 1.2