@@ -34,6 +34,7 @@ import Streamly.Prelude ((.:), nil)
3434import Streamly as S
3535import qualified Streamly.Prelude as S
3636import qualified Streamly.Data.Fold as FL
37+import qualified Streamly.Internal.Data.Fold as FL
3738
3839-- Coverage build takes too long with default number of tests
3940maxTestCount :: Int
@@ -492,6 +493,22 @@ transformCombineOpsCommon constr desc eq t = do
492493 let f x = if odd x then Just (x + 100) else Nothing
493494 prop (desc <> " mapMaybe") $ transform (mapMaybe f) t (S.mapMaybe f)
494495
496+ -- tap
497+ prop (desc <> " tap FL.sum . map (+1)") $ \a b ->
498+ withMaxSuccess maxTestCount $
499+ monadicIO $ do
500+ cref <- run $ newIORef 0
501+ let sumfoldinref = FL.Fold (\_ e -> modifyIORef' cref (e+))
502+ (return ())
503+ (const $ return ())
504+ op = S.tap sumfoldinref . S.mapM (\x -> return (x+1))
505+ listOp = fmap (+1)
506+ stream <- run ((S.toList . t) $ op (constr a <> constr b))
507+ let list = listOp (a <> b)
508+ ssum <- run $ readIORef cref
509+ assert (sum list == ssum)
510+ listEquals eq stream list
511+
495512 -- reordering
496513 prop (desc <> " reverse") $ transform reverse t S.reverse
497514 -- prop (desc <> " reverse'") $ transform reverse t S.reverse'