1module HPACK.IntegerSpec where
2
3import qualified Data.ByteString as BS
4import Network.HPACK.Internal
5import Test.Hspec
6import Test.Hspec.QuickCheck
7
8dual :: Int -> Int -> Expectation
9dual n i = do
10    let x = abs i
11    bs <- encodeInteger n x
12    let Just (w, ws) = BS.uncons bs
13    x' <- decodeInteger n w ws
14    x `shouldBe` x'
15
16spec :: Spec
17spec = do
18    describe "encode and decode" $ do
19        prop "duality" $ dual 1
20        prop "duality" $ dual 2
21        prop "duality" $ dual 3
22        prop "duality" $ dual 4
23        prop "duality" $ dual 5
24        prop "duality" $ dual 6
25        prop "duality" $ dual 7
26        prop "duality" $ dual 8
27