@@ -20,7 +20,7 @@ import qualified Data.List as List
21import Control.Monad.Trans.State.Strict
21import Control.Monad.Trans.State.Strict
22import Data.Functor.Identity
22import Data.Functor.Identity
23−import Prelude hiding (const, take, drop, concat)
23+import Prelude hiding (const, take, drop, concat, mapM)
24import Streamly.Prelude (SerialT)
24import Streamly.Prelude (SerialT)
25import Test.Hspec as H
25import Test.Hspec as H
26import Test.Hspec.QuickCheck
26import Test.Hspec.QuickCheck
@@ -228,6 +228,30 @@ enumerateFromToIntegral =
228 let unf = UF.enumerateFromToIntegral t
228 let unf = UF.enumerateFromToIntegral t
229 in testUnfoldD unf f [f .. t]
229 in testUnfoldD unf f [f .. t]
231+-------------------------------------------------------------------------------
232+-- Stream transformation
233+-------------------------------------------------------------------------------
239+ let fA = apply f :: Int -> Int
240+ fM x = modify (+ 1) >> return (fA x)
241+ unf = UF.mapM fM UF.fromList
242+ mList = Prelude.map fA list
243+ in testUnfoldAD unf 0 (length list) list mList
245+mapMWithInput :: Property
249+ let fA = applyFun2 f :: [Int] -> Int -> Int
250+ fM x y = modify (+ 1) >> return (fA x y)
251+ unf = UF.mapMWithInput fM UF.fromList
252+ mList = Prelude.map (fA list) list
253+ in testUnfoldAD unf 0 (length list) list mList
231take :: Property
255take :: Property
@@ -359,6 +383,22 @@ testGeneration =
359 -- prop "numFrom" numFrom
383 -- prop "numFrom" numFrom
360 prop "enumerateFromToFractional" enumerateFromToFractional
384 prop "enumerateFromToFractional" enumerateFromToFractional
386+testTransformation :: Spec
388+ describe "Transformation"
392+ prop "mapMWithInput" mapMWithInput
393+ prop "takeWhileM" takeWhileM
394+ -- prop "takeWhile" takeWhile
396+ -- prop "filter" filter
397+ prop "filterM" filterM
399+ -- prop "dropWhile" dropWhile
400+ prop "dropWhileM" dropWhileM
362-------------------------------------------------------------------------------
402-------------------------------------------------------------------------------
364-------------------------------------------------------------------------------
404-------------------------------------------------------------------------------
@@ -367,12 +407,8 @@ main :: IO ()
367main = hspec $ do
407main = hspec $ do
368 testInputOps
408 testInputOps
369 testGeneration
409 testGeneration
370 describe "Unfold tests" $ do
411 describe "Unfold tests" $ do
372− prop "takeWhileM" takeWhileM
373− prop "filterM" filterM
375− prop "dropWhileM" dropWhileM
376 prop "zipWithM" zipWithM
412 prop "zipWithM" zipWithM
377 prop "concat" concat
413 prop "concat" concat
378 prop "outerProduct" outerProduct
414 prop "outerProduct" outerProduct