-------------------------------------------------------------------------------- {-# LANGUAGE OverloadedStrings #-} module Network.WebSockets.Extensions.PermessageDeflate.Tests ( tests ) where -------------------------------------------------------------------------------- import Control.Exception (try) import qualified Data.ByteString.Lazy as BL import Network.WebSockets.Extensions.PermessageDeflate import Network.WebSockets.Types import Network.WebSockets.Connection.Options import Test.Framework (Test, testGroup) import Test.Framework.Providers.HUnit (testCase) import Test.HUnit (Assertion, (@?=)) -------------------------------------------------------------------------------- tests :: Test tests = testGroup "Network.WebSockets.Extensions.PermessageDeflate.Tests" [ testCase "OK 1" $ do inflater <- makeMessageInflater (SizeLimit 100) (Just defaultPermessageDeflate) message <- inflater $ DataMessage True False False (Binary deflated100) message @?= DataMessage False False False (Binary inflated100) , testCase "Exceed 1" $ do inflater <- makeMessageInflater (SizeLimit 99) (Just defaultPermessageDeflate) assertParseException $ inflater $ DataMessage True False False (Binary deflated100) ] where assertParseException :: IO a -> Assertion assertParseException io = do errOrX <- try io case errOrX of Left (ParseException _) -> return () _ -> fail "Excepted ParseException" -- This inflates to 100 bytes. deflated100 = "b`\160=\NUL\NUL" inflated100 = BL.replicate 100 0