objectid-0.1.0.2: tests/TestAll.hs
module Main
( main
) where
import Data.ObjectID
import qualified Data.ByteString as ByteString
import Data.ByteString.Arbitrary
import Data.Serialize ( encode, decode )
import Data.Word ( Word64 )
import Test.Tasty
import Test.Tasty.QuickCheck ( testProperty )
main :: IO ()
main = defaultMain $
testGroup "ObjectID"
[ testProperty "ByteString" bytestring
, testProperty "Integer" integer
, testProperty "Double" double
, testProperty "Word" word
, testProperty "Neg ByteString" neg_bytestring
, testProperty "Neg Integer" neg_integer
, testProperty "Neg Double" neg_double
, testProperty "Neg Word" neg_word
]
where
bytestring :: ArbByteString -> Bool
bytestring (ABS bs) =
let oid = calculateByteString bs
ser = encode oid
Right des = decode ser
in oid == des
integer :: Integer -> Bool
integer = seri
double :: Double -> Bool
double = seri
word :: Word64 -> Bool
word = seri
seri s =
let oid = calculateSerialize s
ser = encode oid
Right des = decode ser
in oid == des
neg_bytestring :: ArbByteString -> Bool
neg_bytestring (ABS bs) =
let oid = calculateSerialize bs
ser = ByteString.reverse $ encode oid
Right des = decode ser
in oid /= des
neg_integer :: Integer -> Bool
neg_integer = neg_seri
neg_double :: Double -> Bool
neg_double = neg_seri
neg_word :: Word64 -> Bool
neg_word = neg_seri
neg_seri s =
let oid = calculateSerialize s
ser = ByteString.reverse $ encode oid
Right des = decode ser
in oid /= des