on master help sign in
Enable splitOnSeq tests
ea40591Harendra Kumar
test/Streamly/Test/Prelude/Serial.hs+16−12
@@ -29,6 +29,8 @@ import Test.QuickCheck
29 , forAll
29 , forAll
30 , frequency
30 , frequency
31 , listOf
31 , listOf
32+ , listOf1
33+ , suchThat
32 , vectorOf
34 , vectorOf
33 , withMaxSuccess
35 , withMaxSuccess
34 )
36 )
@@ -110,45 +112,49 @@ groupSplitOps desc = do
110 splitOnSeq
112 splitOnSeq
111 splitOnSuffixSeq
113 splitOnSuffixSeq
112 -- XXX add tests with multichar separators too
114 -- XXX add tests with multichar separators too
113−{-
115+
116+ let split xs ys =
117+ S.toList $ IS.splitOnSeq (A.fromList ys) FL.toList (S.fromList xs)
114 prop (desc <> " intercalate . splitOnSeq == id (nil separator)") $
118 prop (desc <> " intercalate . splitOnSeq == id (nil separator)") $
115 forAll listWithZeroes $ \xs -> do
119 forAll listWithZeroes $ \xs -> do
116 withMaxSuccess maxTestCount $
120 withMaxSuccess maxTestCount $
117 monadicIO $ do
121 monadicIO $ do
118− ys <- S.toList $ FL.splitOnSeq [] toListFL (S.fromList xs)
122+ ys <- split xs []
119 listEquals (==) (intercalate [] ys) xs
123 listEquals (==) (intercalate [] ys) xs
120
124
121 prop (desc <> " intercalate . splitOnSeq == id (single element separator)") $
125 prop (desc <> " intercalate . splitOnSeq == id (single element separator)") $
122 forAll listWithZeroes $ \xs -> do
126 forAll listWithZeroes $ \xs -> do
123 withMaxSuccess maxTestCount $
127 withMaxSuccess maxTestCount $
124 monadicIO $ do
128 monadicIO $ do
125− ys <- S.toList $ FL.splitOnSeq [0] toListFL (S.fromList xs)
129+ ys <- split xs [0]
126 listEquals (==) (intercalate [0] ys) xs
130 listEquals (==) (intercalate [0] ys) xs
127
131
128− prop (desc <> " concat . splitOnSeq . intercalate == concat (nil separator/possibly empty list)") $
132+ prop (desc <> " concat . splitOnSeq . intercalate == concat "
133+ <> "(nil separator/possibly empty list)") $
129 forAll listsWithoutZeroes $ \xss -> do
134 forAll listsWithoutZeroes $ \xss -> do
130 withMaxSuccess maxTestCount $
135 withMaxSuccess maxTestCount $
131 monadicIO $ do
136 monadicIO $ do
132 let xs = intercalate [] xss
137 let xs = intercalate [] xss
133− ys <- S.toList $ FL.splitOnSeq [0] toListFL (S.fromList xs)
138+ ys <- split xs [0]
134 listEquals (==) (concat ys) (concat xss)
139 listEquals (==) (concat ys) (concat xss)
135
140
141+ prop (desc <> " concat . splitOnSeq . intercalate == "
136− prop (desc <> " concat . splitOnSeq . intercalate == concat (non-nil separator/possibly empty list)") $
142+ <> "concat (non-nil separator/possibly empty list)") $
137 forAll listsWithoutZeroes $ \xss -> do
143 forAll listsWithoutZeroes $ \xss -> do
138 withMaxSuccess maxTestCount $
144 withMaxSuccess maxTestCount $
139 monadicIO $ do
145 monadicIO $ do
140 let xs = intercalate [0] xss
146 let xs = intercalate [0] xss
141− ys <- S.toList $ FL.splitOnSeq [0] toListFL (S.fromList xs)
147+ ys <- split xs [0]
142 listEquals (==) (concat ys) (concat xss)
148 listEquals (==) (concat ys) (concat xss)
143
149
144− prop (desc <> " splitOnSeq . intercalate == id (exclusive separator/non-empty list)") $
150+ prop (desc <> " splitOnSeq . intercalate == id "
151+ <> "(exclusive separator/non-empty list)") $
145 forAll listsWithoutZeroes1 $ \xss -> do
152 forAll listsWithoutZeroes1 $ \xss -> do
146 withMaxSuccess maxTestCount $
153 withMaxSuccess maxTestCount $
147 monadicIO $ do
154 monadicIO $ do
148 let xs = intercalate [0] xss
155 let xs = intercalate [0] xss
149− ys <- S.toList $ FL.splitOnSeq [0] toListFL (S.fromList xs)
156+ ys <- split xs [0]
150 listEquals (==) ys xss
157 listEquals (==) ys xss
151−-}
152
158
153 prop (desc <> " intercalate [x] . splitOn (== x) == id") $
159 prop (desc <> " intercalate [x] . splitOn (== x) == id") $
154 forAll listWithZeroes $ \xs -> do
160 forAll listWithZeroes $ \xs -> do
@@ -162,7 +168,6 @@ groupSplitOps desc = do
162 listWithZeroes :: Gen [Int]
168 listWithZeroes :: Gen [Int]
163 listWithZeroes = listOf $ frequency [(3, arbitrary), (1, elements [0])]
169 listWithZeroes = listOf $ frequency [(3, arbitrary), (1, elements [0])]
164
170
165−{-
166 listWithoutZeroes = vectorOf 4 $ suchThat arbitrary (/= 0)
171 listWithoutZeroes = vectorOf 4 $ suchThat arbitrary (/= 0)
167
172
168 listsWithoutZeroes :: Gen [[Int]]
173 listsWithoutZeroes :: Gen [[Int]]
@@ -170,7 +175,6 @@ groupSplitOps desc = do
170
175
171 listsWithoutZeroes1 :: Gen [[Int]]
176 listsWithoutZeroes1 :: Gen [[Int]]
172 listsWithoutZeroes1 = listOf1 listWithoutZeroes
177 listsWithoutZeroes1 = listOf1 listWithoutZeroes
173−-}
174
178
175-- |
179-- |
176-- After grouping (and folding) Int stream using @>@ operation,
180-- After grouping (and folding) Int stream using @>@ operation,