@@ -12,6 +12,8 @@ import qualified Data.UUID as U
12import qualified Data.UUID.V1 as U
12import qualified Data.UUID.V1 as U
13import qualified Data.UUID.V3 as U3
13import qualified Data.UUID.V3 as U3
14import qualified Data.UUID.V5 as U5
14import qualified Data.UUID.V5 as U5
15+import Foreign (alloca, peek, poke)
16+import System.IO.Unsafe (unsafePerformIO)
15import qualified Test.HUnit as H
17import qualified Test.HUnit as H
16import Test.HUnit hiding (Test)
18import Test.HUnit hiding (Test)
17import Test.QuickCheck hiding ((.&.))
19import Test.QuickCheck hiding ((.&.))
@@ -166,6 +168,17 @@ toASCIIBytes_fromASCIIBytes :: U.UUID -> Bool
166toASCIIBytes_fromASCIIBytes uuid =
168toASCIIBytes_fromASCIIBytes uuid =
167 Just uuid == U.fromASCIIBytes (U.toASCIIBytes uuid)
169 Just uuid == U.fromASCIIBytes (U.toASCIIBytes uuid)
171+prop_storableRoundTrip :: Test
172+prop_storableRoundTrip =
173+ testProperty "Storeable round-trip" $ unsafePerformIO . prop
175+ prop :: U.UUID -> IO Bool
180+ return $ uuid == uuid2
169main :: IO ()
182main :: IO ()
171 v1s <- replicateM 100 U.nextUUID
184 v1s <- replicateM 100 U.nextUUID
@@ -182,6 +195,7 @@ main = do
182 , [ prop_stringRoundTrip,
195 , [ prop_stringRoundTrip,
183 prop_readShowRoundTrip,
196 prop_readShowRoundTrip,
184 prop_byteStringRoundTrip,
197 prop_byteStringRoundTrip,
198+ prop_storableRoundTrip,
185 prop_stringLength,
199 prop_stringLength,
186 prop_byteStringLength,
200 prop_byteStringLength,
187 prop_randomsDiffer,
201 prop_randomsDiffer,