uuid 1.2.13 → 1.2.14
raw patch · 2 files changed
+67/−58 lines, 2 filesdep +test-frameworkdep +test-framework-hunitdep +test-framework-quickcheck2dep ~cryptohash
Dependencies added: test-framework, test-framework-hunit, test-framework-quickcheck2
Dependency ranges changed: cryptohash
Files
- tests/TestUUID.hs +61/−55
- uuid.cabal +6/−3
tests/TestUUID.hs view
@@ -9,8 +9,12 @@ import qualified Data.UUID.V1 as U import qualified Data.UUID.V3 as U3 import qualified Data.UUID.V5 as U5-import Test.HUnit+import qualified Test.HUnit as H+import Test.HUnit hiding (Test) import Test.QuickCheck hiding ((.&.))+import Test.Framework (defaultMain, Test(..))+import Test.Framework.Providers.HUnit (hUnitTestToTests)+import Test.Framework.Providers.QuickCheck2 (testProperty) import System.IO @@ -27,20 +31,20 @@ arbitrary = choose (U.nil, U.nil) -test_null :: Test-test_null = TestList [+test_null :: H.Test+test_null = H.TestList [ "nil is null" ~: assertBool "" (U.null U.nil), "namespaceDNS is not null" ~: assertBool "" (not $ U.null U3.namespaceDNS) ] -test_nil :: Test-test_nil = TestList [+test_nil :: H.Test+test_nil = H.TestList [ "nil string" ~: U.toString U.nil @?= "00000000-0000-0000-0000-000000000000", "nil bytes" ~: U.toByteString U.nil @?= B.pack (replicate 16 0) ] -test_conv :: Test-test_conv = TestList [+test_conv :: H.Test+test_conv = H.TestList [ "conv bytes to string" ~: maybe "" (U.toString) (U.fromByteString b16) @?= s16, "conv string to bytes" ~:@@ -49,89 +53,89 @@ where b16 = B.pack [1..16] s16 = "01020304-0506-0708-090a-0b0c0d0e0f10" -test_v1 :: [Maybe U.UUID] -> Test-test_v1 v1s = TestList [+test_v1 :: [Maybe U.UUID] -> H.Test+test_v1 v1s = H.TestList [ "V1 unique" ~: nub (v1s \\ nub v1s) @?= [],- "V1 not null" ~: TestList $ map (testUUID (not . U.null)) v1s,- "V1 valid" ~: TestList $ map (testUUID (isValidVersion 1)) v1s+ "V1 not null" ~: H.TestList $ map (testUUID (not . U.null)) v1s,+ "V1 valid" ~: H.TestList $ map (testUUID (isValidVersion 1)) v1s ]- where testUUID :: (U.UUID -> Bool) -> Maybe U.UUID -> Test+ where testUUID :: (U.UUID -> Bool) -> Maybe U.UUID -> H.Test testUUID p u = maybe False p u ~? show u -test_v3 :: Test-test_v3 = TestList [+test_v3 :: H.Test+test_v3 = H.TestList [ "V3 computation" ~: U3.generateNamed U3.namespaceDNS name @?= uV3 ] where name = map (fromIntegral . ord) "www.widgets.com" :: [Word8] uV3 = fromJust $ U.fromString "3d813cbb-47fb-32ba-91df-831e1593ac29" -test_v5 :: Test-test_v5 = TestList [+test_v5 :: H.Test+test_v5 = H.TestList [ "V5 computation" ~: U5.generateNamed U5.namespaceDNS name @?= uV5 ] where name = map (fromIntegral . ord) "www.widgets.com" :: [Word8] uV5 = fromJust $ U.fromString "21f7f8de-8051-5b89-8680-0195ef798b6a" -prop_stringRoundTrip :: Property-prop_stringRoundTrip = label "String round trip" stringRoundTrip+prop_stringRoundTrip :: Test+prop_stringRoundTrip = testProperty "String round trip" stringRoundTrip where stringRoundTrip :: U.UUID -> Bool stringRoundTrip u = maybe False (== u) $ U.fromString (U.toString u) -prop_byteStringRoundTrip :: Property-prop_byteStringRoundTrip = label "ByteString round trip" byteStringRoundTrip+prop_byteStringRoundTrip :: Test+prop_byteStringRoundTrip = testProperty "ByteString round trip" byteStringRoundTrip where byteStringRoundTrip :: U.UUID -> Bool byteStringRoundTrip u = maybe False (== u) $ U.fromByteString (U.toByteString u) -prop_stringLength :: Property-prop_stringLength = label "String length" stringLength+prop_stringLength :: Test+prop_stringLength = testProperty "String length" stringLength where stringLength :: U.UUID -> Bool stringLength u = length (U.toString u) == 36 -prop_byteStringLength :: Property-prop_byteStringLength = label "ByteString length" byteStringLength+prop_byteStringLength :: Test+prop_byteStringLength = testProperty "ByteString length" byteStringLength where byteStringLength :: U.UUID -> Bool byteStringLength u = B.length (U.toByteString u) == 16 -prop_randomsDiffer :: Property-prop_randomsDiffer = label "Randoms differ" randomsDiffer+prop_randomsDiffer :: Test+prop_randomsDiffer = testProperty "Randoms differ" randomsDiffer where randomsDiffer :: (U.UUID, U.UUID) -> Bool randomsDiffer (u1, u2) = u1 /= u2 -prop_randomNotNull :: Property-prop_randomNotNull = label "Random not null" randomNotNull+prop_randomNotNull :: Test+prop_randomNotNull = testProperty "Random not null" randomNotNull where randomNotNull :: U.UUID -> Bool randomNotNull = not. U.null -prop_randomsValid :: Property-prop_randomsValid = label "Random valid" randomsValid+prop_randomsValid :: Test+prop_randomsValid = testProperty "Random valid" randomsValid where randomsValid :: U.UUID -> Bool randomsValid = isValidVersion 4 -prop_v3NotNull :: Property-prop_v3NotNull = label "V3 not null" v3NotNull+prop_v3NotNull :: Test+prop_v3NotNull = testProperty "V3 not null" v3NotNull where v3NotNull :: [Word8] -> Bool v3NotNull = not . U.null . U3.generateNamed U3.namespaceDNS -prop_v3Valid :: Property-prop_v3Valid = label "V3 valid" v3Valid+prop_v3Valid :: Test+prop_v3Valid = testProperty "V3 valid" v3Valid where v3Valid :: [Word8] -> Bool v3Valid = isValidVersion 3 . U3.generateNamed U3.namespaceDNS -prop_v5NotNull :: Property-prop_v5NotNull = label "V5 not null" v5NotNull+prop_v5NotNull :: Test+prop_v5NotNull = testProperty "V5 not null" v5NotNull where v5NotNull :: [Word8] -> Bool v5NotNull = not . U.null . U5.generateNamed U5.namespaceDNS -prop_v5Valid :: Property-prop_v5Valid = label "V5 valid" v5Valid+prop_v5Valid :: Test+prop_v5Valid = testProperty "V5 valid" v5Valid where v5Valid :: [Word8] -> Bool v5Valid = isValidVersion 5 . U5.generateNamed U5.namespaceDNS -prop_readShowRoundTrip :: Property-prop_readShowRoundTrip = label "Read/Show round-trip" prop+prop_readShowRoundTrip :: Test+prop_readShowRoundTrip = testProperty "Read/Show round-trip" prop where -- we're using 'Maybe UUID' to add a bit of -- real-world complexity. prop :: U.UUID -> Bool@@ -140,25 +144,27 @@ main :: IO () main = do v1s <- replicateM 100 U.nextUUID- _ <- runTestText (putTextToHandle stderr False) (TestList [+ defaultMain $+ concat $+ [ hUnitTestToTests $ H.TestList [ test_null, test_nil, test_conv, test_v1 v1s, test_v3, test_v5- ])- mapM_ quickCheck $ [- prop_stringRoundTrip,- prop_readShowRoundTrip,- prop_byteStringRoundTrip,- prop_stringLength,- prop_byteStringLength,- prop_randomsDiffer,- prop_randomNotNull,- prop_randomsValid,- prop_v3NotNull,- prop_v3Valid,- prop_v5NotNull,- prop_v5Valid+ ]+ , [ prop_stringRoundTrip,+ prop_readShowRoundTrip,+ prop_byteStringRoundTrip,+ prop_stringLength,+ prop_byteStringLength,+ prop_randomsDiffer,+ prop_randomNotNull,+ prop_randomsValid,+ prop_v3NotNull,+ prop_v3Valid,+ prop_v5NotNull,+ prop_v5Valid+ ] ]
uuid.cabal view
@@ -1,5 +1,5 @@ Name: uuid-Version: 1.2.13+Version: 1.2.14 Copyright: (c) 2008-2013 Antoine Latter Author: Antoine Latter Maintainer: aslatter@gmail.com@@ -29,7 +29,7 @@ Build-Depends: base >=3 && < 5, binary >= 0.4 && < 0.8, bytestring >= 0.9 && < 1.1,- cryptohash >= 0.7 && < 0.10,+ cryptohash >= 0.7 && < 0.11, maccatcher >= 1.0 && < 2.2, random >= 1.0.1 && < 1.1, time >= 1.1 && < 1.5@@ -80,4 +80,7 @@ bytestring >= 0.9 && < 1.1, HUnit >=1.2 && < 1.3, QuickCheck >=2.4 && < 2.7,- random >= 1.0.1 && < 1.1+ random >= 1.0.1 && < 1.1,+ test-framework == 0.8.*,+ test-framework-hunit == 0.3.*,+ test-framework-quickcheck2 == 0.3.*