module Data.Conduit.Extra.ZipConduitSpec (spec) where
import Test.Hspec
import Data.Conduit
import qualified Data.Conduit.List as CL
import Control.Applicative ((<*))
spec :: Spec
spec = describe "Data.Conduit.Extra.ZipConduit" $ do
it "ZipConduit" $ do
let src = mapM_ yield [1..3 :: Int]
conduit1 = CL.map (+1)
conduit2 = CL.concatMap (replicate 2)
conduit = getZipConduit $ ZipConduit conduit1 <* ZipConduit conduit2
sink = CL.consume
res <- src $$ conduit =$ sink
res `shouldBe` [2, 1, 1, 3, 2, 2, 4, 3, 3]
it "sequenceConduits" $ do
let src = mapM_ yield [1..3 :: Int]
conduit1 = CL.map (+1)
conduit2 = CL.concatMap (replicate 2)
conduit = do
x <- sequenceConduits [conduit1, conduit2]
yield $ length x + 10
sink = CL.consume
res <- src $$ conduit =$ sink
res `shouldBe` [2, 1, 1, 3, 2, 2, 4, 3, 3, 12]