@@ -31,6 +31,7 @@ import Test.Framework.Providers.QuickCheck2 (testProperty)
31import Test.QuickCheck hiding ((.&.))
31import Test.QuickCheck hiding ((.&.))
32import Test.QuickCheck.Monadic
32import Test.QuickCheck.Monadic
33import Test.QuickCheck.Property (Property(..))
33import Test.QuickCheck.Property (Property(..))
34+import Test.QuickCheck.Unicode (char)
34import Tests.QuickCheckUtils
35import Tests.QuickCheckUtils
35import Tests.Utils
36import Tests.Utils
36import Text.Show.Functions ()
37import Text.Show.Functions ()
@@ -529,12 +530,19 @@ s_takeWhile p = L.takeWhile p `eqP` (unpackS . S.takeWhile p)
529s_takeWhile_s p = L.takeWhile p `eqP` (unpackS . S.unstream . S.takeWhile p)
530s_takeWhile_s p = L.takeWhile p `eqP` (unpackS . S.unstream . S.takeWhile p)
530sf_takeWhile q p = (L.takeWhile p . L.filter q) `eqP`
531sf_takeWhile q p = (L.takeWhile p . L.filter q) `eqP`
531 (unpackS . S.takeWhile p . S.filter q)
532 (unpackS . S.takeWhile p . S.filter q)
535+ d <- suchThat char (/= c)
532t_takeWhile p = L.takeWhile p `eqP` (unpackS . T.takeWhile p)
537t_takeWhile p = L.takeWhile p `eqP` (unpackS . T.takeWhile p)
533tl_takeWhile p = L.takeWhile p `eqP` (unpackS . TL.takeWhile p)
538tl_takeWhile p = L.takeWhile p `eqP` (unpackS . TL.takeWhile p)
534t_takeWhileEnd p = (L.reverse . L.takeWhile p . L.reverse) `eqP`
539t_takeWhileEnd p = (L.reverse . L.takeWhile p . L.reverse) `eqP`
535 (unpackS . T.takeWhileEnd p)
540 (unpackS . T.takeWhileEnd p)
541+t_takeWhileEnd_null n = forAll noMatch $ \(c,d) -> T.null $
542+ T.takeWhileEnd (==d) (T.replicate n (T.singleton c))
536tl_takeWhileEnd p = (L.reverse . L.takeWhile p . L.reverse) `eqP`
543tl_takeWhileEnd p = (L.reverse . L.takeWhile p . L.reverse) `eqP`
537 (unpackS . TL.takeWhileEnd p)
544 (unpackS . TL.takeWhileEnd p)
545+ TL.takeWhileEnd (==d) (TL.replicate n (TL.singleton c))
538s_dropWhile p = L.dropWhile p `eqP` (unpackS . S.dropWhile p)
546s_dropWhile p = L.dropWhile p `eqP` (unpackS . S.dropWhile p)
539s_dropWhile_s p = L.dropWhile p `eqP` (unpackS . S.unstream . S.dropWhile p)
547s_dropWhile_s p = L.dropWhile p `eqP` (unpackS . S.unstream . S.dropWhile p)
540sf_dropWhile q p = (L.dropWhile p . L.filter q) `eqP`
548sf_dropWhile q p = (L.dropWhile p . L.filter q) `eqP`
@@ -1164,6 +1172,7 @@ tests =
1164 testProperty "t_takeWhile" t_takeWhile,
1172 testProperty "t_takeWhile" t_takeWhile,
1165 testProperty "tl_takeWhile" tl_takeWhile,
1173 testProperty "tl_takeWhile" tl_takeWhile,
1166 testProperty "t_takeWhileEnd" t_takeWhileEnd,
1174 testProperty "t_takeWhileEnd" t_takeWhileEnd,
1175+ testProperty "t_takeWhileEnd_null" t_takeWhileEnd_null,
1167 testProperty "tl_takeWhileEnd" tl_takeWhileEnd,
1176 testProperty "tl_takeWhileEnd" tl_takeWhileEnd,
1168 testProperty "sf_dropWhile" sf_dropWhile,
1177 testProperty "sf_dropWhile" sf_dropWhile,
1169 testProperty "s_dropWhile" s_dropWhile,
1178 testProperty "s_dropWhile" s_dropWhile,