on master help sign in
Added tests from Prelude.reverse and Prelude.null
commitf7b9841f4ffcc7ae6c3fcf04d5d5129ac2cab7b8 authorVeladus <veladus@web.de> dateThu 15 Mar 2018, 18:44 (9 years ago) parent0586029
2 files changed+13−9
src/Streamly/Prelude.hs+8−9 test/Main.hs+5
src/Streamly/Prelude.hs+8−9
@@ -340,7 +340,7 @@ head m =
340340tail :: (Streaming t, Monad m) => t m a -> m (Maybe (t m a))
341341tail m =
342342 let stop = return Nothing
343− yield _ Nothing = return $ Just nil
343+ yield _ Nothing = return Nothing
344344 yield _ (Just t) = return $ Just $ fromStream t
345345 in (runStream (toStream m)) Nothing stop yield
346346
@@ -385,14 +385,13 @@ length = foldl (\n _ -> n + 1) 0 id
385385reverse :: (Streaming t) => t m a -> t m a
386386reverse m = fromStream $ go Nothing (toStream m)
387387 where
388− go rev rest = Stream $ \s stp yld ->
389− let
390− stop = case rev of
391− Nothing -> runStream snil s stp yld
392− Just str -> runStream str s stp yld
393− yield a Nothing = runStream (a `scons` rev) s stp yld
394− yield a (Just x) = runStream (go (Just $ a `scons` rev) x) s stp yld
395− in runStream rest Nothing stop yield
388+ go rev rest = Stream $ \svr stp yld ->
389+ let stop = case rev of
390+ Nothing -> stp
391+ Just str -> runStream str svr stp yld
392+ yield a Nothing = runStream (a `scons` rev) svr stp yld
393+ yield a (Just x) = runStream (go (Just $ a `scons` rev) x) svr stp yld
394+ in runStream rest svr stop yield
396395
397396-- XXX replace the recursive "go" with continuation
398397-- | Determine the minimum element in a stream.
test/Main.hs+5
@@ -677,6 +677,9 @@ streamOperations (stream, list, len) = do
677677
678678 it "scan left" $ transform (A.scan (+) 0 id) (scanl (+) 0)
679679
680+ -- Transformations
681+ it "reverse" $ transform A.reverse reverse
682+
680683 -- Elimination
681684 it "foldl" $ elimination (A.foldl (+) 0 id) (foldl (+) 0)
682685 it "all" $ elimination (A.all even) (all even)
@@ -695,11 +698,13 @@ streamOperations (stream, list, len) = do
695698 it "last empty" $ A.last stream `shouldReturn` Nothing
696699 it "maximum empty" $ A.maximum stream `shouldReturn` Nothing
697700 it "minimum empty" $ A.minimum stream `shouldReturn` Nothing
701+ it "null empty" $ A.null stream `shouldReturn` True
698702 else do
699703 it "head nonEmpty" $ A.head stream `shouldReturn` Just (head list)
700704 it "last nonEmpty" $ A.last stream `shouldReturn` Just (last list)
701705 it "maximum nonEmpty" $ A.maximum stream `shouldReturn` Just (maximum list)
702706 it "minimum nonEmpty" $ A.minimum stream `shouldReturn` Just (minimum list)
707+ it "null nonEmpty" $ A.null stream `shouldReturn` False
703708
704709 where
705710