@@ -2,7 +2,7 @@ module Main (main) where
3import Control.Exception (SomeException(..))
3import Control.Exception (SomeException(..))
4import Data.Word (Word8, Word32, Word64)
4import Data.Word (Word8, Word32, Word64)
5−import Streamly.Test.Common (listEquals, checkListEqual, chooseInt)
5+import Streamly.Test.Common (listEquals, checkListEqual, chooseInt, equals)
6import Test.Hspec (Spec, hspec, describe)
6import Test.Hspec (Spec, hspec, describe)
7import Test.Hspec.QuickCheck
7import Test.Hspec.QuickCheck
8import Test.QuickCheck
8import Test.QuickCheck
@@ -18,6 +18,7 @@ import qualified Streamly.Internal.Data.Parser.ParserD as P
18import qualified Streamly.Internal.Data.Producer.Source as Source
18import qualified Streamly.Internal.Data.Producer.Source as Source
19import qualified Streamly.Internal.Data.Producer as Producer
19import qualified Streamly.Internal.Data.Producer as Producer
20import qualified Streamly.Internal.Data.Stream.IsStream as S
20import qualified Streamly.Internal.Data.Stream.IsStream as S
21+import qualified Streamly.Internal.Data.Stream.StreamD as D
21import qualified Streamly.Internal.Data.Unfold as Unfold
22import qualified Streamly.Internal.Data.Unfold as Unfold
22import qualified Test.Hspec as H
23import qualified Test.Hspec as H
@@ -635,6 +636,18 @@ parseUnfold = do
636 listEquals (==) xs ls
637 listEquals (==) xs ls
639+parserSequence :: Property
641+ forAll (vectorOf 11 (listOf (chooseAny :: Gen Int))) $ \ins ->
643+ let parsers = D.fromList
644+ $ fmap (\xs -> P.fromFold $ FL.take (length xs) FL.sum) ins
645+ let sequencedParser = P.sequence FL.sum parsers
648+ S.parseD sequencedParser $ S.concatMap S.fromList (S.fromList ins)
649+ equals (==) outs (sum $ map sum ins)
638-------------------------------------------------------------------------------
651-------------------------------------------------------------------------------
639-- Test for a particular case hit during fs events testing
652-- Test for a particular case hit during fs events testing
640-------------------------------------------------------------------------------
653-------------------------------------------------------------------------------
@@ -720,6 +733,7 @@ main =
720 prop "parseMany" parseMany
733 prop "parseMany" parseMany
721 prop "parseMany2Events" parseMany2Events
734 prop "parseMany2Events" parseMany2Events
722 prop "parseUnfold" parseUnfold
735 prop "parseUnfold" parseUnfold
736+ prop "parserSequence" parserSequence
724 describe "test for accumulator" $ do
738 describe "test for accumulator" $ do
725 prop "P.fromFold FL.sum = FL.sum" fromFold
739 prop "P.fromFold FL.sum = FL.sum" fromFold