module Data.Conduit.ClassySpec where
import Test.Hspec
import Data.Conduit.Classy
import qualified Data.Conduit.List as CL
spec :: Spec
spec = do
describe "connecting" $ do
it "works" $ do
let sink :: Int -> Sink Char IO Int
sink i = await >>= maybe (return i) (const $ sink $ i + 1)
let str = "hello world"
x <- mapM_ yield str $$ sink 0
x `shouldBe` length str
describe "connect-and-resume" $ do
it "works" $ do
let src :: Source IO Int
src = mapM_ yield [1..30]
take' = Sink . CL.take
(r1, x) <- src $$+ take' 10
(r2, y) <- r1 $$++ take' 10
z <- r2 $$+- Sink CL.consume
[x, y, z] `shouldBe` [[1..10], [11..20], [21..30]]