packages feed

bytestring-builder-varword-0.1.0.0: test/Data/ByteString/Builder/VarWordSpec.hs

module Data.ByteString.Builder.VarWordSpec where

import Test.Hspec

import Data.ByteString (ByteString)
import Data.ByteString.Builder (Builder)
import qualified Data.ByteString.Builder as Builder
import qualified Data.ByteString.Lazy as LBS
import Data.Word

import Data.ByteString.Builder.VarWord (varWordBe, denseVarWordBe, varWordLe)

spec :: Spec
spec = do
  varWordSpec "Big-endian chunked builder"
    varWordBe "\135\196\64"
  varWordSpec "Big-endian dense chunked builder"
    denseVarWordBe "\134\195\64"
  varWordSpec "Little-endian chunked builder"
    varWordLe "\192\196\7"

varWordSpec :: String -> (Word32 -> Builder) -> ByteString -> Spec
varWordSpec s b expected = describe s $ do
  it "should serialise a known number" $ do
    LBS.toStrict (Builder.toLazyByteString $ b 123456)
    `shouldBe` expected