module Main where
import Control.Concurrent (threadDelay)
import Control.Monad.IO.Class (liftIO)
import Data.Conduit
import qualified Data.Conduit.List as CL
import Test.Hspec
import Say (sayString)
import Data.Conduit.ConcurrentMap
main :: IO ()
main = hspec $ do
describe "concurrentMapM_numCaps" $ do
it "performs a basic run" $ do
l <- runConduitRes $
CL.sourceList [1..6]
.| concurrentMapM_numCaps 4
(\i -> liftIO $ do
sayString (show i ++ " before")
threadDelay (i * 1000000)
sayString (show i ++ " after")
return (i*2)
)
.| CL.consume
l `shouldBe` [2,4,6,8,10,12]