on master help sign in
Added conduit tests
commit42fc4a42ec24690adea1735206d086deb104dc2b authorMichael Snoyman <michael@snoyman.com> dateThu 16 Aug 2012, 17:17 (14 years ago) parent9b525de
1 file changed+30
warp/test/ConduitSpec.hs+30
warp/test/ConduitSpec.hsnew file+30
@@ -0,0 +1,30 @@
1+{-# LANGUAGE OverloadedStrings #-}
2+module ConduitSpec where
3+
4+import Network.Wai.Handler.Warp.Conduit
5+import Data.Conduit
6+import qualified Data.Conduit.List as CL
7+import Test.Hspec
8+import qualified Data.IORef as I
9+import qualified Data.ByteString as S
10+import Control.Monad.Trans.Class (lift)
11+
12+spec :: Spec
13+spec = describe "conduit" $ do
14+ it "IsolatedBSSource" $ runResourceT $ do
15+ (rsrc, ()) <- mapM_ yield (map S.singleton [1..50]) $$+ return ()
16+ ibs <- lift $ fmap IsolatedBSSource $ I.newIORef (40, rsrc)
17+ x <- ibsIsolate ibs $$ CL.take 20
18+ lift $ S.concat x `shouldBe` S.pack [1..20]
19+
20+ y <- ibsIsolate ibs $$ CL.consume
21+ lift $ S.concat y `shouldBe` S.pack [21..40]
22+
23+ rsrc' <- lift $ ibsDone ibs
24+ z <- rsrc' $$+- CL.consume
25+ lift $ S.concat z `shouldBe` S.pack [41..50]
26+ it "chunkedSource" $ do
27+ (rsrc, ()) <- yield "5\r\n12345\r\n3\r\n678\r\n0\r\nBLAH" $$+ return ()
28+ ref <- I.newIORef (rsrc, NeedLen)
29+ x <- chunkedSource ref $$ CL.consume
30+ S.concat x `shouldBe` "12345678"