hw-bits-0.7.1.1: test/HaskellWorks/Data/Bits/FromBitTextByteStringSpec.hs
{-# OPTIONS_GHC -fno-warn-incomplete-patterns #-}
{-# LANGUAGE OverloadedLists #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE ScopedTypeVariables #-}
module HaskellWorks.Data.Bits.FromBitTextByteStringSpec (spec) where
import Data.Word
import HaskellWorks.Data.Bits.FromBitTextByteString
import HaskellWorks.Hspec.Hedgehog
import Hedgehog
import Test.Hspec
import qualified Data.Bit as Bit
import qualified Data.ByteString as BS
import qualified Data.Vector.Storable as DVS
import qualified Data.Vector.Unboxed as DVU
{-# ANN module ("HLint: ignore Redundant do" :: String) #-}
spec :: Spec
spec = describe "HaskellWorks.Data.Bits.FromBitTextByteStringSpec" $ do
describe "For (DVS.Vector Word8)" $ do
it "fromBitTextByteString (BS.unpack []) :: DVS.Vector Word8" . requireTest $ do
let w = fromBitTextByteString (BS.pack []) :: DVS.Vector Word8
w === DVS.fromList []
it "fromBitTextByteString (BS.unpack \"0\") :: DVS.Vector Word8" . requireTest $ do
let w = fromBitTextByteString "0" :: DVS.Vector Word8
w === DVS.fromList [0x0]
it "fromBitTextByteString (BS.unpack \"1\") :: DVS.Vector Word8" . requireTest $ do
let w = fromBitTextByteString "1" :: DVS.Vector Word8
w === DVS.fromList [0x1]
it "fromBitTextByteString (BS.unpack \"11110000\") :: DVS.Vector Word8" . requireTest $ do
let w = fromBitTextByteString "11110000" :: DVS.Vector Word8
w === DVS.fromList [0x0f]
it "fromBitTextByteString (BS.unpack \"111100000\") :: DVS.Vector Word8" . requireTest $ do
let w = fromBitTextByteString "111100000" :: DVS.Vector Word8
w === DVS.fromList [0x0f, 0x0]
it "fromBitTextByteString (BS.unpack \"111100001\") :: DVS.Vector Word8" . requireTest $ do
let w = fromBitTextByteString "111100001" :: DVS.Vector Word8
w === DVS.fromList [0x0f, 0x1]
describe "For (DVS.Vector Word16)" $ do
it "fromBitTextByteString (BS.unpack []) :: DVS.Vector Word16" . requireTest $ do
let w = fromBitTextByteString (BS.pack []) :: DVS.Vector Word16
w === DVS.fromList []
it "fromBitTextByteString (BS.unpack \"0\") :: DVS.Vector Word16" . requireTest $ do
let w = fromBitTextByteString "0" :: DVS.Vector Word16
w === DVS.fromList [0x0]
it "fromBitTextByteString (BS.unpack \"1\") :: DVS.Vector Word16" . requireTest $ do
let w = fromBitTextByteString "1" :: DVS.Vector Word16
w === DVS.fromList [0x1]
it "fromBitTextByteString (BS.unpack \"1111000011110000\") :: DVS.Vector Word16" . requireTest $ do
let w = fromBitTextByteString "1111000011110000" :: DVS.Vector Word16
w === DVS.fromList [0x0f0f]
it "fromBitTextByteString (BS.unpack \"11110000111100000\") :: DVS.Vector Word16" . requireTest $ do
let w = fromBitTextByteString "11110000111100000" :: DVS.Vector Word16
w === DVS.fromList [0x0f0f, 0x0]
it "fromBitTextByteString (BS.unpack \"11110000111100001\") :: DVS.Vector Word16" . requireTest $ do
let w = fromBitTextByteString "11110000111100001" :: DVS.Vector Word16
w === DVS.fromList [0x0f0f, 0x1]
describe "For (DVS.Vector Word32)" $ do
it "fromBitTextByteString (BS.unpack []) :: DVS.Vector Word32" . requireTest $ do
let w = fromBitTextByteString (BS.pack []) :: DVS.Vector Word32
w === DVS.fromList []
it "fromBitTextByteString (BS.unpack \"0\") :: DVS.Vector Word32" . requireTest $ do
let w = fromBitTextByteString "0" :: DVS.Vector Word32
w === DVS.fromList [0x0]
it "fromBitTextByteString (BS.unpack \"1\") :: DVS.Vector Word32" . requireTest $ do
let w = fromBitTextByteString "1" :: DVS.Vector Word32
w === DVS.fromList [0x1]
it "fromBitTextByteString (BS.unpack \"11110000111100001111000011110000\") :: DVS.Vector Word32" . requireTest $ do
let w = fromBitTextByteString "11110000111100001111000011110000" :: DVS.Vector Word32
w === DVS.fromList [0x0f0f0f0f]
it "fromBitTextByteString (BS.unpack \"111100001111000011110000111100000\") :: DVS.Vector Word32" . requireTest $ do
let w = fromBitTextByteString "111100001111000011110000111100000" :: DVS.Vector Word32
w === DVS.fromList [0x0f0f0f0f, 0x0]
it "fromBitTextByteString (BS.unpack \"111100001111000011110000111100001\") :: DVS.Vector Word32" . requireTest $ do
let w = fromBitTextByteString "111100001111000011110000111100001" :: DVS.Vector Word32
w === DVS.fromList [0x0f0f0f0f, 0x1]
describe "For (DVS.Vector Word64)" $ do
it "fromBitTextByteString (BS.unpack []) :: DVS.Vector Word64" . requireTest $ do
let w = fromBitTextByteString (BS.pack []) :: DVS.Vector Word64
w === DVS.fromList []
it "fromBitTextByteString (BS.unpack \"0\") :: DVS.Vector Word64" . requireTest $ do
let w = fromBitTextByteString "0" :: DVS.Vector Word64
w === DVS.fromList [0x0]
it "fromBitTextByteString (BS.unpack \"1\") :: DVS.Vector Word64" . requireTest $ do
let w = fromBitTextByteString "1" :: DVS.Vector Word64
w === DVS.fromList [0x1]
it "fromBitTextByteString (BS.unpack \"1111000011110000111100001111000011110000111100001111000011110000\") :: DVS.Vector Word64" . requireTest $ do
let w = fromBitTextByteString "1111000011110000111100001111000011110000111100001111000011110000" :: DVS.Vector Word64
w === DVS.fromList [0x0f0f0f0f0f0f0f0f]
it "fromBitTextByteString (BS.unpack \"11110000111100001111000011110000111100001111000011110000111100000\") :: DVS.Vector Word64" . requireTest $ do
let w = fromBitTextByteString "11110000111100001111000011110000111100001111000011110000111100000" :: DVS.Vector Word64
w === DVS.fromList [0x0f0f0f0f0f0f0f0f, 0x0]
it "fromBitTextByteString (BS.unpack \"11110000111100001111000011110000111100001111000011110000111100001\") :: DVS.Vector Word64" . requireTest $ do
let w = fromBitTextByteString "11110000111100001111000011110000111100001111000011110000111100001" :: DVS.Vector Word64
w === DVS.fromList [0x0f0f0f0f0f0f0f0f, 0x1]
describe "For (DVU.Vector Bit.Bit)" $ do
it "fromBitTextByteString (BS.unpack []) :: DVU.Vector Bit.Bit" . requireTest $ do
let w = fromBitTextByteString (BS.pack []) :: DVU.Vector Bit.Bit
w === DVU.fromList []
it "fromBitTextByteString (BS.unpack \"0\") :: DVU.Vector Bit.Bit" . requireTest $ do
let w = fromBitTextByteString "0" :: DVU.Vector Bit.Bit
w === DVU.fromList [0]
it "fromBitTextByteString (BS.unpack \"1\") :: DVU.Vector Bit.Bit" . requireTest $ do
let w = fromBitTextByteString "1" :: DVU.Vector Bit.Bit
w === DVU.fromList [1]
it "fromBitTextByteString (BS.unpack \"1111000011110000111100001111000011110000111100001111000011110000\") :: DVU.Vector Bit.Bit" . requireTest $ do
let w = fromBitTextByteString "1111000011110000111100001111000011110000111100001111000011110000" :: DVU.Vector Bit.Bit
w === DVU.fromList [1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0]
it "fromBitTextByteString (BS.unpack \"11110000111100001111000011110000111100001111000011110000111100000\") :: DVU.Vector Bit.Bit" . requireTest $ do
let w = fromBitTextByteString "11110000111100001111000011110000111100001111000011110000111100000" :: DVU.Vector Bit.Bit
w === DVU.fromList [1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,0]
it "fromBitTextByteString (BS.unpack \"11110000111100001111000011110000111100001111000011110000111100001\") :: DVU.Vector Bit.Bit" . requireTest $ do
let w = fromBitTextByteString "11110000111100001111000011110000111100001111000011110000111100001" :: DVU.Vector Bit.Bit
w === DVU.fromList [1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,1]