foundation-0.0.4: tests/Test/Foundation/Conduit.hs
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE NoImplicitPrelude #-}
module Test.Foundation.Conduit
( testConduit
) where
import Foundation
import Foundation.Conduit
import Foundation.IO
import Imports
testConduit :: TestTree
testConduit = testGroup "Conduit"
[ testCase "sourceHandle gives same data as readFile" testSourceFile
, testCase "sourceHandle/sinkHandle copies data" testCopyFile
, testCase "sourceFile/sinkFile copies data" testCopyFileRes
]
where
testSourceFile :: Assertion
testSourceFile = do
let fp = "foundation.cabal"
arrs <- withFile fp ReadMode
$ \h -> runConduit $ sourceHandle h .| sinkList
arr <- readFile fp
assertEqual "foundation.cabal contents" arr (mconcat arrs)
testCopyFile :: Assertion
testCopyFile = do
let src = "foundation.cabal"
dst = "temp-file" -- FIXME some temp file API?
withFile src ReadMode $ \hin -> withFile dst WriteMode $ \hout ->
runConduit $ sourceHandle hin .| sinkHandle hout
orig <- readFile src
new <- readFile dst
assertEqual "copied foundation.cabal contents" orig new
testCopyFileRes :: Assertion
testCopyFileRes = do
let src = "foundation.cabal"
dst = "temp-file" -- FIXME some temp file API?
runConduitRes $ sourceFile src .| sinkFile dst
orig <- readFile src
new <- readFile dst
assertEqual "copied foundation.cabal contents" orig new