mirror of
https://github.com/ilyakooo0/streamly.git
synced 2024-10-06 05:07:07 +03:00
Add splitOnSuffixSeq property tests
This commit is contained in:
parent
aaae284415
commit
d644962284
@ -134,11 +134,37 @@ seqSplitterProperties sep desc = do
|
|||||||
-- Exclusive case
|
-- Exclusive case
|
||||||
splitIntercalateEqId splitOnSeq_ intercalate
|
splitIntercalateEqId splitOnSeq_ intercalate
|
||||||
|
|
||||||
|
describe (desc <> " splitOnSuffixSeq/intercalate")
|
||||||
|
$ do
|
||||||
|
-- Empty seperator
|
||||||
|
intercalateSplitEqIdNoSepEnd 0
|
||||||
|
concatSplitIntercalateEqConcat splitOnSuffixSeq_ intercalateSuffix 0
|
||||||
|
|
||||||
|
-- Single element seperator
|
||||||
|
intercalateSplitEqIdNoSepEnd 1
|
||||||
|
concatSplitIntercalateEqConcat splitOnSuffixSeq_ intercalateSuffix 1
|
||||||
|
|
||||||
|
-- Shift Or
|
||||||
|
intercalateSplitEqIdNoSepEnd 2
|
||||||
|
concatSplitIntercalateEqConcat splitOnSuffixSeq_ intercalateSuffix 2
|
||||||
|
|
||||||
|
-- Karp-Rabin
|
||||||
|
intercalateSplitEqIdNoSepEnd 4
|
||||||
|
concatSplitIntercalateEqConcat splitOnSuffixSeq_ intercalateSuffix 4
|
||||||
|
|
||||||
|
-- Exclusive case
|
||||||
|
splitIntercalateEqId splitOnSuffixSeq_ intercalateSuffix
|
||||||
|
|
||||||
where
|
where
|
||||||
|
|
||||||
splitOnSeq_ xs ys =
|
splitOnSeq_ xs ys =
|
||||||
S.toList $ IS.splitOnSeq (A.fromList ys) FL.toList (S.fromList xs)
|
S.toList $ IS.splitOnSeq (A.fromList ys) FL.toList (S.fromList xs)
|
||||||
|
|
||||||
|
splitOnSuffixSeq_ xs ys =
|
||||||
|
S.toList $ IS.splitOnSuffixSeq (A.fromList ys) FL.toList (S.fromList xs)
|
||||||
|
|
||||||
|
intercalateSuffix xs yss = intercalate xs yss ++ xs
|
||||||
|
|
||||||
nonSepElem :: Gen a
|
nonSepElem :: Gen a
|
||||||
nonSepElem = suchThat arbitrary (/= sep)
|
nonSepElem = suchThat arbitrary (/= sep)
|
||||||
|
|
||||||
@ -170,6 +196,23 @@ seqSplitterProperties sep desc = do
|
|||||||
(intercalate (replicate i sep) ys)
|
(intercalate (replicate i sep) ys)
|
||||||
xs
|
xs
|
||||||
|
|
||||||
|
intercalateSplitEqIdNoSepEnd i =
|
||||||
|
let name =
|
||||||
|
"intercalate . splitOnSuffixSeq_ . (++ [x \\= sep]) == id ("
|
||||||
|
<> show i <> " element separator)"
|
||||||
|
in prop name
|
||||||
|
$ forAll ((,) <$> listWithSep <*> nonSepElem)
|
||||||
|
$ \(xs_, nonSep) -> do
|
||||||
|
let xs = xs_ ++ [nonSep]
|
||||||
|
withMaxSuccess maxTestCount
|
||||||
|
$ monadicIO
|
||||||
|
$ do
|
||||||
|
ys <- splitOnSuffixSeq_ xs (replicate i sep)
|
||||||
|
listEquals
|
||||||
|
(==)
|
||||||
|
(intercalate (replicate i sep) ys)
|
||||||
|
xs
|
||||||
|
|
||||||
concatSplitIntercalateEqConcat splitter intercalater i =
|
concatSplitIntercalateEqConcat splitter intercalater i =
|
||||||
let name =
|
let name =
|
||||||
"concat . splitter . intercalater == "
|
"concat . splitter . intercalater == "
|
||||||
|
Loading…
Reference in New Issue
Block a user