{-# LANGUAGE BangPatterns #-} {-# LANGUAGE OverloadedStrings #-} module System.IO.Streams.Tests.Debug (tests) where ------------------------------------------------------------------------------ import qualified Data.ByteString.Char8 as S import qualified System.IO.Streams as Streams import qualified System.IO.Streams.Debug as Streams import Test.Framework import Test.Framework.Providers.HUnit import Test.HUnit hiding (Test) ------------------------------------------------------------------------------ tests :: [Test] tests = [ testDebugInput , testDebugOutput ] ------------------------------------------------------------------------------ testDebugInput :: Test testDebugInput = testCase "debug/input" $ do s <- Streams.fromList [S.replicate 100 'a', "foo"] (ds, getDebugOutput) <- Streams.listOutputStream s' <- Streams.debugInputBS "foo" ds s Streams.unRead "blah" s' Streams.skipToEof s' l <- getDebugOutput assertEqual "debugInput" expected l where expected = [ "foo: pushback: \"blah\"\n" , "foo: got chunk: \"blah\"\n" , "foo: got chunk: \"aaaaaaaaaaaaaa ... aaaaaaaaaaaaaa\" (100 bytes)\n" , "foo: got chunk: \"foo\"\n" , "foo: got EOF\n" ] ------------------------------------------------------------------------------ testDebugOutput :: Test testDebugOutput = testCase "debug/output" $ do is <- Streams.fromList [S.replicate 100 'a', "foo"] o <- Streams.makeOutputStream f (ds, getDebugOutput) <- Streams.listOutputStream o' <- Streams.debugOutputBS "foo" ds o Streams.connect is o' l <- getDebugOutput assertEqual "debugInput" expected l where f !_ = return () expected = [ "foo: got chunk: \"aaaaaaaaaaaaaa ... aaaaaaaaaaaaaa\" (100 bytes)\n" , "foo: got chunk: \"foo\"\n" , "foo: got EOF\n" ]