on master help sign in
Add takeWhileP test
9e034c7Harendra Kumar
test/Streamly/Test/Data/Parser.hs+22
@@ -398,6 +398,27 @@ takeWhile1 =
398 where
398 where
399 predicate = (== 0)
399 predicate = (== 0)
400
400
401+takeWhileP :: Property
402+takeWhileP =
403+ forAll (listOf (chooseInt (0, 1))) $ \ls ->
404+ forAll (chooseInt (min_value, max_value)) $ \n ->
405+ let
406+ predicate = (== 1)
407+
408+ prsr =
409+ P.takeWhileP predicate
410+ $ P.fromFold (FL.take n FL.toList)
411+
412+ takeWhileTillLen maxLen prd list =
413+ Prelude.take maxLen $ Prelude.takeWhile prd list
414+ in
415+ case S.parse prsr (S.fromList ls) of
416+ Right parsed_list ->
417+ checkListEqual
418+ parsed_list
419+ (takeWhileTillLen n predicate ls)
420+ Left _ -> property False
421+
401choice :: Property
422choice :: Property
402choice =
423choice =
403 forAll
424 forAll
@@ -785,6 +806,7 @@ main =
785 prop "P.takeWhile = Prelude.takeWhile" Main.takeWhile
806 prop "P.takeWhile = Prelude.takeWhile" Main.takeWhile
786 prop ("P.takeWhile1 = Prelude.takeWhile if taken something,"
807 prop ("P.takeWhile1 = Prelude.takeWhile if taken something,"
787 ++ " else check why failed") takeWhile1
808 ++ " else check why failed") takeWhile1
809+ prop "takeWhileP prd P.take = takeWhileMaxLen prd" takeWhileP
788 prop ("P.takeP = Prelude.take") takeP
810 prop ("P.takeP = Prelude.take") takeP
789 prop "P.groupBy = Prelude.head . Prelude.groupBy" groupBy
811 prop "P.groupBy = Prelude.head . Prelude.groupBy" groupBy
790 prop "many (P.wordBy ' ') = words'" wordBy
812 prop "many (P.wordBy ' ') = words'" wordBy