packages feed

reedsolomon-0.0.1.0: test/Vector.hs

module Vector (tests) where

import Data.Word (Word8)

import qualified Data.ByteString as B
import qualified Data.Vector.Storable as V

import Test.Tasty (TestTree, testGroup)
import Test.Tasty.QuickCheck (testProperty)

import Data.Vector.Storable.ByteString (fromByteString, toByteString)

vectorByteString :: [Word8] -> Bool
vectorByteString l = toByteString (V.fromList l) == B.pack l

byteStringVector :: [Word8] -> Bool
byteStringVector l = fromByteString (B.pack l) == V.fromList l

roundtripVectorByteString :: [Word8] -> Bool
roundtripVectorByteString l = V.toList (fromByteString $ toByteString $ V.fromList l) == l

roundtripByteStringVector :: [Word8] -> Bool
roundtripByteStringVector l = B.unpack (toByteString $ fromByteString $ B.pack l) == l

tests :: TestTree
tests = testGroup "Vector" [
      testGroup "Properties" [
            testProperty "vectorByteString" vectorByteString
          , testProperty "byteStringVector" byteStringVector
          , testProperty "roundtripVectorByteString" roundtripVectorByteString
          , testProperty "roundtripByteStringVector" roundtripByteStringVector
          ]
    ]