@@ -9,7 +9,8 @@ import Control.Applicative (ZipList(..))
9import Control.Concurrent (MVar, takeMVar, putMVar, newEmptyMVar)
9import Control.Concurrent (MVar, takeMVar, putMVar, newEmptyMVar)
10import Control.Monad (replicateM, replicateM_)
10import Control.Monad (replicateM, replicateM_)
11import Data.IORef (readIORef, modifyIORef, newIORef)
11import Data.IORef (readIORef, modifyIORef, newIORef)
12−import Data.List (sort, foldl', scanl')
12+import Data.List (sort, foldl', scanl', findIndices, findIndex, elemIndices,
13import Data.Maybe (mapMaybe)
14import Data.Maybe (mapMaybe)
14import GHC.Word (Word8)
15import GHC.Word (Word8)
@@ -347,6 +348,10 @@ transformOps constr desc t eq = do
347 prop (desc ++ " scan") $ transform (scanl' (+) 0) $ t . (S.scanl' (+) 0)
348 prop (desc ++ " scan") $ transform (scanl' (+) 0) $ t . (S.scanl' (+) 0)
348 prop (desc ++ " reverse") $ transform reverse $ t . S.reverse
349 prop (desc ++ " reverse") $ transform reverse $ t . S.reverse
351+ prop (desc ++ " findIndices") $ transform (findIndices odd) $ t . (S.findIndices odd)
352+ prop (desc ++ " elemIndices") $ transform (elemIndices 3) $ t . (S.elemIndices 3)
350concurrentOps
355concurrentOps
351 :: IsStream t
356 :: IsStream t
352 => ([Word8] -> t IO Word8)
357 => ([Word8] -> t IO Word8)
@@ -481,6 +486,9 @@ eliminationOps constr desc t = do
481 prop (desc ++ " maximum") $ eliminateOp constr (wrapMaybe maximum) $ S.maximum . t
486 prop (desc ++ " maximum") $ eliminateOp constr (wrapMaybe maximum) $ S.maximum . t
482 prop (desc ++ " minimum") $ eliminateOp constr (wrapMaybe minimum) $ S.minimum . t
487 prop (desc ++ " minimum") $ eliminateOp constr (wrapMaybe minimum) $ S.minimum . t
489+ prop (desc ++ " findIndex") $ eliminateOp constr (findIndex odd) $ (S.findIndex odd) . t
490+ prop (desc ++ " elemIndex") $ eliminateOp constr (elemIndex 3) $ (S.elemIndex 3) . t
484-- head/tail/last may depend on the order in case of parallel streams
492-- head/tail/last may depend on the order in case of parallel streams
485-- so we test these only for serial streams.
493-- so we test these only for serial streams.
486serialEliminationOps
494serialEliminationOps