list-t-text-0.2.0.1: hspec/Main.hs
import BasePrelude
import Test.Hspec
import Test.QuickCheck
import Test.QuickCheck.Instances
import Data.Text (Text)
import Data.ByteString (ByteString)
import qualified Data.Text.Encoding as TE
import qualified ListT as L
import ListT.Text
import qualified Data.ByteString as B
import Data.Functor.Identity
main =
hspec $ do
context "decodeUTF8" $ do
it "back and forth" $
property $ \text ->
TE.encodeUtf8 text & streamByteString 3 & decodeUTF8 & L.toList & runIdentity & mconcat &
(==) text
streamByteString :: Monad m => Int -> ByteString -> L.ListT m ByteString
streamByteString n b =
B.splitAt n b & \(l, r) ->
if B.null l
then mzero
else L.cons l (streamByteString n r)