packages feed

http2-0.1.2: test/DecodeSpec.hs

module DecodeSpec where

import Data.List (sort)
import Network.HPACK.Context
import Network.HPACK.HeaderBlock
import Test.Hspec

import HeaderBlock

shouldBeSameAs :: (Ord a, Show a) => [a] -> [a] -> Expectation
shouldBeSameAs xs ys = sort xs `shouldBe` sort ys

spec :: Spec
spec = do
    describe "fromHeaderBlock" $ do
        it "decodes HeaderSet in request" $ do
            (c1,h1) <- newContextForDecoding 4096 >>= flip fromHeaderBlock e31
            h1 `shouldBeSameAs` e31h
            (c2,h2) <- fromHeaderBlock c1 e32
            h2 `shouldBeSameAs` e32h
            (_,h3)  <- fromHeaderBlock c2 e33
            h3 `shouldBeSameAs` e33h
        it "decodes HeaderSet in response" $ do
            (c1,h1) <- newContextForDecoding 256 >>= flip fromHeaderBlock e51
            h1 `shouldBeSameAs` e51h
            (c2,h2) <- fromHeaderBlock c1 e52
            h2 `shouldBeSameAs` e52h
            (_,h3)  <- fromHeaderBlock c2 e53
            h3 `shouldBeSameAs` e53h