comparse-0.2.0.0: test/Stream/Generic.hs
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE TypeFamilies #-}
module Stream.Generic (genericStreamTests) where
import Data.Stream (Stream (Item, next))
import Test.Tasty
import Test.Tasty.HUnit
genericStreamTests ::
(Stream s, Show s, Eq s, Item s ~ Char) =>
(Int -> Int -> String -> s) ->
[TestTree]
genericStreamTests makeAt =
[ testCase "next on same line gives next character" $
next (make "foo\nbar\nbaz") @?= Just ('f', makeAt 0 1 "oo\nbar\nbaz"),
testCase "next at end of line gives linefeed" $
next (make "\nbar\nbaz") @?= Just ('\n', makeAt 1 0 "bar\nbaz"),
testCase "next before end of line stops before linefeed" $
next (make "o\nbar\nbaz") @?= Just ('o', makeAt 0 1 "\nbar\nbaz"),
testCase "next at end of file gives Nothing" $
next (make "") @?= Nothing
]
where
make = makeAt 0 0