{-# LANGUAGE OverloadedStrings #-} module Test.Tutorial where import Control.Proxy import Control.Proxy.Attoparsec import Control.Proxy.Attoparsec.Tutorial import Control.Proxy.Trans.Either import Data.Maybe import Test.Framework.Providers.HUnit (testCase) import Test.HUnit hiding (test) testPipe pipe input test = fromJust $ do let proxy = fromListS input >-> pipe >-> toListD output <- runWriterT . runProxy . runEitherK $ proxy return . assert $ test output test_helloPipe1_input1 = testPipe helloPipe1 input1 test where test (Right _, x) = x == fmap Name ["Kate" , "Mary", "Jeff", "Tom"] test _ = False test_helloPipe1_input2 = testPipe helloPipe1 input2 test where test (Right _, x) = x == fmap Name [ "Amy", "Bob" , "JamesHelloHello World" , "Ann" , "Jean-Luc" ] test _ = False test_helloPipe2_input2 = testPipe helloPipe2 input2 test where test (Right _, x) = x == fmap Name [ "Amy" ,"Tim", "Bob" , "JamesHelloHello World", "Jon" , "Ann" , "Jean-Luc" ] test _ = False test_helloPipe3_input2 = testPipe helloPipe3 input2 test where test (Left (MalformedInput _), [Name "Amy"]) = True test _ = False test_helloPipe4_input2 = testPipe helloPipe4 input2 test where test (Left (InputTooLong 11), [Name "Amy", Name "Bob"]) = True test _ = False test_helloPipe5_input2 = testPipe helloPipe5 input2 test where test (Left (InputTooLong 11), [Name "Amy", Name "Tim", Name "Bob"]) = True test _ = False test_helloPipe6_input1 = testPipe helloPipe6 input1 test where test (Right _, [Name "Kate", Name "Mary"]) = True test _ = False tests = [ testCase "helloPipe1 + input1" test_helloPipe1_input1 , testCase "helloPipe1 + input2" test_helloPipe1_input2 , testCase "helloPipe2 + input2" test_helloPipe2_input2 , testCase "helloPipe3 + input2" test_helloPipe3_input2 , testCase "helloPipe4 + input2" test_helloPipe4_input2 , testCase "helloPipe5 + input2" test_helloPipe5_input2 , testCase "helloPipe6 + input1" test_helloPipe6_input1 ]