{-# 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)
import qualified Data.Conduit.ExtraSpec as ES
import qualified Data.Conduit.Extra.ZipConduitSpec as ZipConduit
import qualified Data.Conduit.Extra.FoldlSpec as FS
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)
ES.spec
ZipConduit.spec
FS.spec