on master help sign in
Massively increase the test coverage for filtered streams.

--HG-- extra : convert_revision : 93dfa9613c51f958b48c3bc8749de14f8e648560

commit1bdf74f9b7466e323e10186795bdf7fbc0f49d23 authorBryan O'Sullivan <bos@serpentine.com> dateSat 15 Aug 2009, 06:59 (17 years ago) parentc9ac44a
1 file changed+108−17
tests/Properties.hs+108−17
tests/Properties.hs+108−17
@@ -157,32 +157,43 @@ t_append s = (s++) `eqP` (unpackS . T.append (packS s))
157157uncons (x:xs) = Just (x,xs)
158158uncons _ = Nothing
159159
160−t_uncons s = uncons `eqP` (fmap (second unpackS) . T.uncons)
161− where _types = s :: String
162−tl_uncons s = uncons `eqP` (fmap (second unpackS) . TL.uncons)
163− where _types = s :: String
160+s_uncons = uncons `eqP` (fmap (second unpackS) . S.uncons)
161+sf_uncons p = (uncons . L.filter p) `eqP` (fmap (second unpackS) . S.uncons . S.filter p)
162+t_uncons = uncons `eqP` (fmap (second unpackS) . T.uncons)
163+tl_uncons = uncons `eqP` (fmap (second unpackS) . TL.uncons)
164164s_head = head `eqP` S.head
165+sf_head p = (head . L.filter p) `eqP` (S.head . S.filter p)
165166t_head = head `eqP` T.head
166167tl_head = head `eqP` TL.head
167168s_last = last `eqP` S.last
169+sf_last p = (last . L.filter p) `eqP` (S.last . S.filter p)
168170t_last = last `eqP` T.last
169171tl_last = last `eqP` TL.last
170172s_tail = tail `eqP` (unpackS . S.tail)
173+sf_tail p = (tail . L.filter p) `eqP` (unpackS . S.tail . S.filter p)
171174t_tail = tail `eqP` (unpackS . T.tail)
172175tl_tail = tail `eqP` (unpackS . TL.tail)
173176s_init = init `eqP` (unpackS . S.init)
177+sf_init p = (init . L.filter p) `eqP` (unpackS . S.init . S.filter p)
174178t_init = init `eqP` (unpackS . T.init)
175179tl_init = init `eqP` (unpackS . TL.init)
176180s_null = null `eqP` S.null
181+sf_null p = (null . L.filter p) `eqP` (S.null . S.filter p)
177182t_null = null `eqP` T.null
178183tl_null = null `eqP` TL.null
179184s_length = length `eqP` S.length
185+sf_length p = (length . L.filter p) `eqP` (S.length . S.filter p)
180186t_length = length `eqP` T.length
181187tl_length = length `eqP` (fromIntegral . TL.length)
188+
189+s_map f = map f `eqP` (unpackS . S.map f)
190+sf_map p f = (map f . L.filter p) `eqP` (unpackS . S.map f . S.filter p)
182191t_map f = map f `eqP` (unpackS . T.map f)
183192tl_map f = map f `eqP` (unpackS . TL.map f)
184193t_intercalate c = unsquare (L.intercalate c `eq` (unpackS . T.intercalate (packS c) . map packS))
185194tl_intercalate c = unsquare (L.intercalate c `eq` (unpackS . TL.intercalate (TL.pack c) . map TL.pack))
195+s_intersperse c = L.intersperse c `eqP` (unpackS . S.intersperse c)
196+sf_intersperse p c= (L.intersperse c . L.filter p) `eqP` (unpackS . S.intersperse c . S.filter p)
186197t_intersperse c = L.intersperse c `eqP` (unpackS . T.intersperse c)
187198tl_intersperse c = L.intersperse c `eqP` (unpackS . TL.intersperse c)
188199t_transpose = unsquare (L.transpose `eq` (map unpackS . T.transpose . map packS))
@@ -206,6 +217,11 @@ split pat src0
206217 | pat `L.isPrefixOf` s = take n src : go (drop l s)
207218 | otherwise = search (n+1) s'
208219
220+s_toCaseFold_length xs = S.length (S.toCaseFold s) >= length xs
221+ where s = S.streamList xs
222+sf_toCaseFold_length p xs =
223+ (S.length . S.toCaseFold . S.filter p $ s) >= (length . L.filter p $ xs)
224+ where s = S.streamList xs
209225t_toCaseFold_length t = T.length (T.toCaseFold t) >= T.length t
210226t_toLower_length t = T.length (T.toLower t) >= T.length t
211227t_toLower_lower t = p (T.toLower t) >= p t
@@ -217,42 +233,60 @@ t_toUpper_upper t = p (T.toUpper t) >= p t
217233justifyLeft k c s = s ++ replicate (k - length s) c
218234
219235s_justifyLeft k c = justifyLeft k c `eqP` (unpackS . S.justifyLeft k c)
236+sf_justifyLeft p k c =
237+ (justifyLeft k c . L.filter p) `eqP` (unpackS . S.justifyLeft k c . S.filter p)
220238t_justifyLeft k c = justifyLeft k c `eqP` (unpackS . T.justifyLeft k c)
221239t_justifyRight k c = jr k c `eqP` (unpackS . T.justifyRight k c)
222240 where jr m n s = replicate (m - length s) n ++ s
223241
242+sf_foldl p f z = (L.foldl f z . L.filter p) `eqP` (S.foldl f z . S.filter p)
243+ where _types = f :: Char -> Char -> Char
224244t_foldl f z = L.foldl f z `eqP` (T.foldl f z)
225− where _types = f :: Char -> Char -> Char
245+ where _types = f :: Char -> Char -> Char
226246tl_foldl f z = L.foldl f z `eqP` (TL.foldl f z)
227− where _types = f :: Char -> Char -> Char
247+ where _types = f :: Char -> Char -> Char
248+sf_foldl' p f z = (L.foldl' f z . L.filter p) `eqP` (S.foldl' f z . S.filter p)
249+ where _types = f :: Char -> Char -> Char
228250t_foldl' f z = L.foldl' f z `eqP` T.foldl' f z
229− where _types = f :: Char -> Char -> Char
251+ where _types = f :: Char -> Char -> Char
230252tl_foldl' f z = L.foldl' f z `eqP` TL.foldl' f z
231− where _types = f :: Char -> Char -> Char
253+ where _types = f :: Char -> Char -> Char
254+sf_foldl1 p f = (L.foldl1 f . L.filter p) `eqP` (S.foldl1 f . S.filter p)
232255t_foldl1 f = L.foldl1 f `eqP` T.foldl1 f
233256tl_foldl1 f = L.foldl1 f `eqP` TL.foldl1 f
257+sf_foldl1' p f = (L.foldl1' f . L.filter p) `eqP` (S.foldl1' f . S.filter p)
234258t_foldl1' f = L.foldl1' f `eqP` T.foldl1' f
235259tl_foldl1' f = L.foldl1' f `eqP` TL.foldl1' f
260+sf_foldr p f z = (L.foldr f z . L.filter p) `eqP` (S.foldr f z . S.filter p)
261+ where _types = f :: Char -> Char -> Char
236262t_foldr f z = L.foldr f z `eqP` T.foldr f z
237− where _types = f :: Char -> Char -> Char
263+ where _types = f :: Char -> Char -> Char
238264tl_foldr f z = L.foldr f z `eqP` TL.foldr f z
239− where _types = f :: Char -> Char -> Char
265+ where _types = f :: Char -> Char -> Char
266+sf_foldr1 p f = (L.foldr1 f . L.filter p) `eqP` (S.foldr1 f . S.filter p)
240267t_foldr1 f = L.foldr1 f `eqP` T.foldr1 f
241268tl_foldr1 f = L.foldr1 f `eqP` TL.foldr1 f
242269
270+sf_concat p = unsquare ((L.concat . map (L.filter p)) `eq` (unpackS . S.concat . map (S.filter p . packS)))
243271t_concat = unsquare (L.concat `eq` (unpackS . T.concat . map packS))
244272tl_concat = unsquare (L.concat `eq` (unpackS . TL.concat . map TL.pack))
273+sf_concatMap p f = unsquare ((L.concatMap f . L.filter p) `eqP` (unpackS . S.concatMap (packS . f) . S.filter p))
245274t_concatMap f = unsquare (L.concatMap f `eqP` (unpackS . T.concatMap (packS . f)))
246275tl_concatMap f = unsquare (L.concatMap f `eqP` (unpackS . TL.concatMap (TL.pack . f)))
276+sf_any q p = (L.any p . L.filter q) `eqP` (S.any p . S.filter q)
247277t_any p = L.any p `eqP` T.any p
248278tl_any p = L.any p `eqP` TL.any p
279+sf_all q p = (L.all p . L.filter q) `eqP` (S.all p . S.filter q)
249280t_all p = L.all p `eqP` T.all p
250281tl_all p = L.all p `eqP` TL.all p
282+sf_maximum p = (L.maximum . L.filter p) `eqP` (S.maximum . S.filter p)
251283t_maximum = L.maximum `eqP` T.maximum
252284tl_maximum = L.maximum `eqP` TL.maximum
285+sf_minimum p = (L.minimum . L.filter p) `eqP` (S.minimum . S.filter p)
253286t_minimum = L.minimum `eqP` T.minimum
254287tl_minimum = L.minimum `eqP` TL.minimum
255288
289+sf_scanl p f z = (L.scanl f z . L.filter p) `eqP` (unpackS . S.scanl f z . S.filter p)
256290t_scanl f z = L.scanl f z `eqP` (unpackS . T.scanl f z)
257291tl_scanl f z = L.scanl f z `eqP` (unpackS . TL.scanl f z)
258292t_scanl1 f = L.scanl1 f `eqP` (unpackS . T.scanl1 f)
@@ -289,22 +323,25 @@ unpack2 :: (Stringy s) => (s,s) -> (String,String)
289323unpack2 = unpackS *** unpackS
290324
291325s_take n = L.take n `eqP` (unpackS . S.take n)
326+sf_take p n = (L.take n . L.filter p) `eqP` (unpackS . S.take n . S.filter p)
292327t_take n = L.take n `eqP` (unpackS . T.take n)
293328tl_take n = L.take n `eqP` (unpackS . TL.take (fromIntegral n))
294329s_drop n = L.drop n `eqP` (unpackS . S.drop n)
330+sf_drop p n = (L.drop n . L.filter p) `eqP` (unpackS . S.drop n . S.filter p)
295331t_drop n = L.drop n `eqP` (unpackS . T.drop n)
296332tl_drop n = L.drop n `eqP` (unpackS . TL.drop n)
297333s_takeWhile p = L.takeWhile p `eqP` (unpackS . S.takeWhile p)
334+sf_takeWhile q p = (L.takeWhile p . L.filter q) `eqP` (unpackS . S.takeWhile p . S.filter q)
298335t_takeWhile p = L.takeWhile p `eqP` (unpackS . T.takeWhile p)
299336tl_takeWhile p = L.takeWhile p `eqP` (unpackS . TL.takeWhile p)
300337s_dropWhile p = L.dropWhile p `eqP` (unpackS . S.dropWhile p)
338+sf_dropWhile q p = (L.dropWhile p . L.filter q) `eqP` (unpackS . S.dropWhile p . S.filter q)
301339t_dropWhile p = L.dropWhile p `eqP` (unpackS . T.dropWhile p)
302340tl_dropWhile p = L.dropWhile p `eqP` (unpackS . S.dropWhile p)
303−s_dropWhileEnd p = T.dropWhileEnd p `eq` (S.reverse . S.dropWhile p . S.reverseStream)
304−t_dropWhileEnd p = (T.reverse . T.dropWhile p . T.reverse) `eq` T.dropWhileEnd p
305−t_dropAround p = (T.dropWhile p . T.dropWhileEnd p) `eq` T.dropAround p
306−t_stripStart = T.dropWhile isSpace `eq` T.stripStart
307−t_stripEnd = T.dropWhileEnd isSpace `eq` T.stripEnd
341+t_dropWhileEnd p = (L.reverse . L.dropWhile p . L.reverse) `eqP` (unpackS . T.dropWhileEnd p)
342+t_dropAround p = (L.dropWhile p . L.reverse . L.dropWhile p . L.reverse) `eqP` (unpackS . T.dropAround p)
343+t_stripStart = T.dropWhile isSpace `eq` T.stripStart
344+t_stripEnd = T.dropWhileEnd isSpace `eq` T.stripEnd
308345t_strip = T.dropAround isSpace `eq` T.strip
309346t_splitAt n = L.splitAt n `eqP` (unpack2 . T.splitAt n)
310347tl_splitAt n = L.splitAt n `eqP` (unpack2 . TL.splitAt (fromIntegral n))
@@ -378,7 +415,8 @@ tl_unlines = unsquare (L.unlines `eq` (unpackS . TL.unlines . map packS))
378415t_unwords = unsquare (L.unwords `eq` (unpackS . T.unwords . map packS))
379416tl_unwords = unsquare (L.unwords `eq` (unpackS . TL.unwords . map packS))
380417
381−s_isPrefixOf s = L.isPrefixOf s`eqP` (S.isPrefixOf (S.stream $ packS s) . S.stream)
418+s_isPrefixOf s = L.isPrefixOf s `eqP` (S.isPrefixOf (S.stream $ packS s) . S.stream)
419+sf_isPrefixOf p s = (L.isPrefixOf s . L.filter p) `eqP` (S.isPrefixOf (S.stream $ packS s) . S.filter p . S.stream)
382420t_isPrefixOf s = L.isPrefixOf s`eqP` T.isPrefixOf (packS s)
383421tl_isPrefixOf s = L.isPrefixOf s`eqP` TL.isPrefixOf (packS s)
384422t_isSuffixOf s = L.isSuffixOf s`eqP` T.isSuffixOf (packS s)
@@ -386,33 +424,44 @@ tl_isSuffixOf s = L.isSuffixOf s`eqP` TL.isSuffixOf (packS s)
386424t_isInfixOf s = L.isInfixOf s `eqP` T.isInfixOf (packS s)
387425tl_isInfixOf s = L.isInfixOf s `eqP` TL.isInfixOf (packS s)
388426
427+sf_elem p c = (L.elem c . L.filter p) `eqP` (S.elem c . S.filter p)
389428t_elem c = L.elem c `eqP` T.elem c
390429tl_elem c = L.elem c `eqP` TL.elem c
430+sf_filter q p = (L.filter p . L.filter q) `eqP` (unpackS . S.filter p . S.filter q)
391431t_filter p = L.filter p `eqP` (unpackS . T.filter p)
392432tl_filter p = L.filter p `eqP` (unpackS . TL.filter p)
433+sf_find q p = (L.find p . L.filter q) `eqP` (S.find p . S.filter q)
393434t_find p = L.find p `eqP` T.find p
394435tl_find p = L.find p `eqP` TL.find p
395436t_partition p = L.partition p `eqP` (unpack2 . T.partition p)
396437tl_partition p = L.partition p `eqP` (unpack2 . TL.partition p)
397438
439+sf_index p s = forAll (choose (-l,l*2)) ((L.filter p s L.!!) `eq` S.index (S.filter p $ packS s))
440+ where l = L.length s
398441t_index s = forAll (choose (-l,l*2)) ((s L.!!) `eq` T.index (packS s))
399442 where l = L.length s
400443
401444tl_index s = forAll (choose (-l,l*2)) ((s L.!!) `eq` (TL.index (packS s) . fromIntegral))
402445 where l = L.length s
403446
447+sf_findIndex q p = (L.findIndex p . L.filter q) `eqP` (S.findIndex p . S.filter q)
404448t_findIndex p = L.findIndex p `eqP` T.findIndex p
405449tl_findIndex p = (fmap fromIntegral . L.findIndex p) `eqP` TL.findIndex p
450+sf_findIndices q p= (L.findIndices p . L.filter q) `eqP` (S.findIndices p . S.filter q)
406451t_findIndices p = L.findIndices p `eqP` T.findIndices p
407452tl_findIndices p = (fmap fromIntegral . L.findIndices p) `eqP` TL.findIndices p
453+sf_elemIndex p c = (L.elemIndex c . L.filter p) `eqP` (S.elemIndex c . S.filter p)
408454t_elemIndex c = L.elemIndex c `eqP` T.elemIndex c
409455tl_elemIndex c = (fmap fromIntegral . L.elemIndex c) `eqP` TL.elemIndex c
456+sf_elemIndices p c= (L.elemIndices c . L.filter p) `eqP` (S.elemIndices c . S.filter p)
410457t_elemIndices c = L.elemIndices c`eqP` T.elemIndices c
411458tl_elemIndices c = (fmap fromIntegral . L.elemIndices c) `eqP` TL.elemIndices c
459+sf_count p c = (L.length . L.elemIndices c . L.filter p) `eqP` (S.count c . S.filter p)
412460t_count c = (L.length . L.elemIndices c) `eqP` T.count c
413461tl_count c = (fromIntegral . L.length . L.elemIndices c) `eqP` TL.count c
414462t_zip s = L.zip s `eqP` T.zip (packS s)
415463tl_zip s = L.zip s `eqP` TL.zip (packS s)
464+sf_zipWith p c s = (L.zipWith c (L.filter p s) . L.filter p) `eqP` (unpackS . S.zipWith c (S.filter p $ packS s) . S.filter p)
416465t_zipWith c s = L.zipWith c s `eqP` (unpackS . T.zipWith c (packS s))
417466tl_zipWith c s = L.zipWith c s `eqP` (unpackS . TL.zipWith c (packS s))
418467
@@ -486,33 +535,45 @@ tests = [
486535 testProperty "s_append" s_append,
487536 testProperty "sf_append" sf_append,
488537 testProperty "t_append" t_append,
538+ testProperty "s_uncons" s_uncons,
539+ testProperty "sf_uncons" sf_uncons,
489540 testProperty "t_uncons" t_uncons,
490541 testProperty "tl_uncons" tl_uncons,
491542 testProperty "s_head" s_head,
543+ testProperty "sf_head" sf_head,
492544 testProperty "t_head" t_head,
493545 testProperty "tl_head" tl_head,
494546 testProperty "s_last" s_last,
547+ testProperty "sf_last" sf_last,
495548 testProperty "t_last" t_last,
496549 testProperty "tl_last" tl_last,
497550 testProperty "s_tail" s_tail,
551+ testProperty "sf_tail" sf_tail,
498552 testProperty "t_tail" t_tail,
499553 testProperty "tl_tail" tl_tail,
500554 testProperty "s_init" s_init,
555+ testProperty "sf_init" sf_init,
501556 testProperty "t_init" t_init,
502557 testProperty "tl_init" tl_init,
503558 testProperty "s_null" s_null,
559+ testProperty "sf_null" sf_null,
504560 testProperty "t_null" t_null,
505561 testProperty "tl_null" tl_null,
506562 testProperty "s_length" s_length,
563+ testProperty "sf_length" sf_length,
507564 testProperty "t_length" t_length,
508565 testProperty "tl_length" tl_length
509566 ],
510567
511568 testGroup "transformations" [
569+ testProperty "s_map" s_map,
570+ testProperty "sf_map" sf_map,
512571 testProperty "t_map" t_map,
513572 testProperty "tl_map" tl_map,
514573 testProperty "t_intercalate" t_intercalate,
515574 testProperty "tl_intercalate" tl_intercalate,
575+ testProperty "s_intersperse" s_intersperse,
576+ testProperty "sf_intersperse" sf_intersperse,
516577 testProperty "t_intersperse" t_intersperse,
517578 testProperty "tl_intersperse" tl_intersperse,
518579 testProperty "t_transpose" t_transpose,
@@ -523,6 +584,8 @@ tests = [
523584 testProperty "t_replace" t_replace,
524585
525586 testGroup "case conversion" [
587+ testProperty "s_toCaseFold_length" s_toCaseFold_length,
588+ testProperty "sf_toCaseFold_length" sf_toCaseFold_length,
526589 testProperty "t_toCaseFold_length" t_toCaseFold_length,
527590 testProperty "t_toLower_length" t_toLower_length,
528591 testProperty "t_toLower_lower" t_toLower_lower,
@@ -532,36 +595,49 @@ tests = [
532595
533596 testGroup "justification" [
534597 testProperty "s_justifyLeft" s_justifyLeft,
598+ testProperty "sf_justifyLeft" sf_justifyLeft,
535599 testProperty "t_justifyLeft" t_justifyLeft,
536600 testProperty "t_justifyRight" t_justifyRight
537601 ]
538602 ],
539603
540604 testGroup "folds" [
605+ testProperty "sf_foldl" sf_foldl,
541606 testProperty "t_foldl" t_foldl,
542607 testProperty "tl_foldl" tl_foldl,
608+ testProperty "sf_foldl'" sf_foldl',
543609 testProperty "t_foldl'" t_foldl',
544610 testProperty "tl_foldl'" tl_foldl',
611+ testProperty "sf_foldl1" sf_foldl1,
545612 testProperty "t_foldl1" t_foldl1,
546613 testProperty "tl_foldl1" tl_foldl1,
547614 testProperty "t_foldl1'" t_foldl1',
615+ testProperty "sf_foldl1'" sf_foldl1',
548616 testProperty "tl_foldl1'" tl_foldl1',
617+ testProperty "sf_foldr" sf_foldr,
549618 testProperty "t_foldr" t_foldr,
550619 testProperty "tl_foldr" tl_foldr,
620+ testProperty "sf_foldr1" sf_foldr1,
551621 testProperty "t_foldr1" t_foldr1,
552622 testProperty "tl_foldr1" tl_foldr1,
553623
554624 testGroup "special" [
625+ testProperty "sf_concat" sf_concat,
555626 testProperty "t_concat" t_concat,
556627 testProperty "tl_concat" tl_concat,
628+ testProperty "sf_concatMap" sf_concatMap,
557629 testProperty "t_concatMap" t_concatMap,
558630 testProperty "tl_concatMap" tl_concatMap,
631+ testProperty "sf_any" sf_any,
559632 testProperty "t_any" t_any,
560633 testProperty "tl_any" tl_any,
634+ testProperty "sf_all" sf_all,
561635 testProperty "t_all" t_all,
562636 testProperty "tl_all" tl_all,
637+ testProperty "sf_maximum" sf_maximum,
563638 testProperty "t_maximum" t_maximum,
564639 testProperty "tl_maximum" tl_maximum,
640+ testProperty "sf_minimum" sf_minimum,
565641 testProperty "t_minimum" t_minimum,
566642 testProperty "tl_minimum" tl_minimum
567643 ]
@@ -569,6 +645,7 @@ tests = [
569645
570646 testGroup "construction" [
571647 testGroup "scans" [
648+ testProperty "sf_scanl" sf_scanl,
572649 testProperty "t_scanl" t_scanl,
573650 testProperty "tl_scanl" tl_scanl,
574651 testProperty "t_scanl1" t_scanl1,
@@ -599,18 +676,21 @@ tests = [
599676 testGroup "substrings" [
600677 testGroup "breaking" [
601678 testProperty "s_take" s_take,
679+ testProperty "sf_take" sf_take,
602680 testProperty "t_take" t_take,
603681 testProperty "tl_take" tl_take,
604682 testProperty "s_drop" s_drop,
683+ testProperty "sf_drop" sf_drop,
605684 testProperty "t_drop" t_drop,
606685 testProperty "tl_drop" tl_drop,
607686 testProperty "s_takeWhile" s_takeWhile,
687+ testProperty "sf_takeWhile" sf_takeWhile,
608688 testProperty "t_takeWhile" t_takeWhile,
609689 testProperty "tl_takeWhile" tl_takeWhile,
690+ testProperty "sf_dropWhile" sf_dropWhile,
610691 testProperty "s_dropWhile" s_dropWhile,
611692 testProperty "t_dropWhile" t_dropWhile,
612693 testProperty "tl_dropWhile" tl_dropWhile,
613− testProperty "s_dropWhileEnd" s_dropWhileEnd,
614694 testProperty "t_dropWhileEnd" t_dropWhileEnd,
615695 testProperty "t_dropAround" t_dropAround,
616696 testProperty "t_stripStart" t_stripStart,
@@ -665,6 +745,7 @@ tests = [
665745
666746 testGroup "predicates" [
667747 testProperty "s_isPrefixOf" s_isPrefixOf,
748+ testProperty "sf_isPrefixOf" sf_isPrefixOf,
668749 testProperty "t_isPrefixOf" t_isPrefixOf,
669750 testProperty "tl_isPrefixOf" tl_isPrefixOf,
670751 testProperty "t_isSuffixOf" t_isSuffixOf,
@@ -674,10 +755,13 @@ tests = [
674755 ],
675756
676757 testGroup "searching" [
758+ testProperty "sf_elem" sf_elem,
677759 testProperty "t_elem" t_elem,
678760 testProperty "tl_elem" tl_elem,
761+ testProperty "sf_filter" sf_filter,
679762 testProperty "t_filter" t_filter,
680763 testProperty "tl_filter" tl_filter,
764+ testProperty "sf_find" sf_find,
681765 testProperty "t_find" t_find,
682766 testProperty "tl_find" tl_find,
683767 testProperty "t_partition" t_partition,
@@ -685,16 +769,22 @@ tests = [
685769 ],
686770
687771 testGroup "indexing" [
772+ testProperty "sf_index" sf_index,
688773 testProperty "t_index" t_index,
689774 testProperty "tl_index" tl_index,
775+ testProperty "sf_findIndex" sf_findIndex,
690776 testProperty "t_findIndex" t_findIndex,
691777 testProperty "tl_findIndex" tl_findIndex,
778+ testProperty "sf_findIndices" sf_findIndices,
692779 testProperty "t_findIndices" t_findIndices,
693780 testProperty "tl_findIndices" tl_findIndices,
781+ testProperty "sf_elemIndex" sf_elemIndex,
694782 testProperty "t_elemIndex" t_elemIndex,
695783 testProperty "tl_elemIndex" tl_elemIndex,
784+ testProperty "sf_elemIndices" sf_elemIndices,
696785 testProperty "t_elemIndices" t_elemIndices,
697786 testProperty "tl_elemIndices" tl_elemIndices,
787+ testProperty "sf_count" sf_count,
698788 testProperty "t_count" t_count,
699789 testProperty "tl_count" tl_count
700790 ],
@@ -702,6 +792,7 @@ tests = [
702792 testGroup "zips" [
703793 testProperty "t_zip" t_zip,
704794 testProperty "tl_zip" tl_zip,
795+ testProperty "sf_zipWith" sf_zipWith,
705796 testProperty "t_zipWith" t_zipWith,
706797 testProperty "tl_zipWith" tl_zipWith
707798 ],