{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE CPP #-} import Test.Hspec import Control.Applicative --import Control.Monad import Data.Maybe (fromJust) import Data.Conduit as C --import qualified Data.Conduit.Util as C --import qualified Data.Conduit.Internal as CI import qualified Data.Conduit.List as CL import qualified Data.Conduit.Extra as CE import Data.Conduit (runResourceT) main :: IO () main = hspec $ do describe "zipSink" $ do it "zip equal-sized" $ do x <- runResourceT $ CL.sourceList [1..100] $$ CE.broadcast [ CL.fold (+) 0, (`mod` 101) <$> CL.fold (*) 1 ] x `shouldBe` [5050, 100 :: Integer] it "zip distinct sizes" $ do let sink = CE.getZipSink $ (*) <$> CE.ZipSink (CL.fold (+) 0) <*> CE.ZipSink (Data.Maybe.fromJust <$> await) x <- runResourceT $ CL.sourceList [100,99..1] $$ sink x `shouldBe` (505000 :: Integer) return ()