{-# LANGUAGE OverloadedStrings #-} module QPACK.InstructionSpec where import Data.ByteString () import Network.HPACK.Token import Network.QPACK.Internal import Test.Hspec spec :: Spec spec = do describe "encodeEncoderInstructions and decodeEncoderInstructions" $ do it "encode/decodes encode instructions properly" $ do let eis0 = [SetDynamicTableCapacity 4096 ,InsertWithNameReference (Left 92) "Warp/4.3.2.1" ,InsertWithoutNameReference tokenContentType "text/plain" ,Duplicate 40 ] bs1 <- encodeEncoderInstructions eis0 True (eis1,"") <- decodeEncoderInstructions' bs1 eis1 `shouldBe` eis0 bs2 <- encodeEncoderInstructions eis0 False (eis2,"") <- decodeEncoderInstructions' bs2 eis2 `shouldBe` eis0 describe "encodeDecoderInstructions and decodeDecoderInstructions" $ do it "encode/decodes decode instructions properly" $ do let eis0 = [SectionAcknowledgement 10 ,StreamCancellation 100 ,InsertCountIncrement 200 ] bs1 <- encodeDecoderInstructions eis0 (eis1,"") <- decodeDecoderInstructions bs1 eis1 `shouldBe` eis0