@@ -19,12 +19,11 @@ import Streamly.Prelude (SerialT)
1919import Test.QuickCheck (Property)
2020import Test.QuickCheck.Monadic (monadicIO, assert, run)
2121
22−import qualified Streamly.Internal.Data.Array.Storable.Foreign.Types as A
23−import qualified Streamly.Internal.Data.Unfold as UF
22+import qualified Streamly.Internal.Data.Array.Storable.Foreign.Types as Array
2423import qualified Streamly.Internal.Network.Inet.TCP as TCP
25−import qualified Streamly.Internal.Network.Socket as SK
26−import qualified Streamly.Internal.Unicode.Stream as U
27−import qualified Streamly.Prelude as S
24+import qualified Streamly.Internal.Network.Socket as Socket
25+import qualified Streamly.Internal.Unicode.Stream as Unicode
26+import qualified Streamly.Prelude as Stream
2827
2928import Test.Hspec
3029import Test.Hspec.QuickCheck
@@ -43,26 +42,26 @@ testDataSource = concat $ replicate 1000 testData
4342------------------------------------------------------------------------------
4443handlerChunksWithBuffer :: Socket -> IO ()
4544handlerChunksWithBuffer sk =
46− S.unfold SK.readChunksWithBufferOf (100, sk)
47− & S.fold (SK.writeChunks sk)
45+ Stream.unfold Socket.readChunksWithBufferOf (100, sk)
46+ & Stream.fold (Socket.writeChunks sk)
4847 & discard
4948
5049handlerChunks :: Socket -> IO ()
5150handlerChunks sk =
52− S.unfold SK.readChunks sk
53− & S.fold (SK.writeChunks sk)
51+ Stream.unfold Socket.readChunks sk
52+ & Stream.fold (Socket.writeChunks sk)
5453 & discard
5554
5655handlerwithbuffer :: Socket -> IO ()
5756handlerwithbuffer sk =
58− S.unfold SK.readWithBufferOf (100, sk)
59− & S.fold (SK.writeWithBufferOf 100 sk)
57+ Stream.unfold Socket.readWithBufferOf (100, sk)
58+ & Stream.fold (Socket.writeWithBufferOf 100 sk)
6059 & discard
6160
6261handlerRW :: Socket -> IO ()
6362handlerRW sk =
64− S.unfold SK.read sk
65− & S.fold (SK.write sk)
63+ Stream.unfold Socket.read sk
64+ & Stream.fold (Socket.write sk)
6665 & discard
6766------------------------------------------------------------------------------
6867-- Accept connecttions and handle connected sockets
@@ -71,9 +70,9 @@ handlerRW sk =
7170server :: PortNumber -> MVar () -> (Socket -> IO ()) -> IO ()
7271server port sem handler = do
7372 putMVar sem ()
74− (S.serially $ S.unfold TCP.acceptOnPort port)
75− & (S.asyncly . S.mapM (SK.handleWithM handler))
76− & S.drain
73+ (Stream.serially $ Stream.unfold TCP.acceptOnPort port)
74+ & (Stream.asyncly . Stream.mapM (Socket.handleWithM handler))
75+ & Stream.drain
7776
7877remoteAddr :: (Word8,Word8,Word8,Word8)
7978remoteAddr = (127, 0, 0, 1)
@@ -82,41 +81,49 @@ sender :: PortNumber -> MVar () -> SerialT IO Char
8281sender port sem = do
8382 _ <- liftIO $ takeMVar sem
8483 liftIO $ threadDelay 1000000 -- wait for server
85− S.replicate 1 testDataSource -- SerialT IO String
86− & U.unwords UF.fromList -- SerialT IO Char
87− & U.encodeLatin1 -- SerialT IO Word8
84+ Stream.replicate 1000 testData -- SerialT IO String
85+ & Stream.concatMap Stream.fromList -- SerialT IO Char
86+ & Unicode.encodeLatin1 -- SerialT IO Word8
8887 & TCP.transformBytesWith remoteAddr port -- SerialT IO Word8
89− & U.decodeLatin1 -- SerialT IO Char
88+ & Unicode.decodeLatin1 -- SerialT IO Char
9089
91−execute :: PortNumber -> Int -> (Socket -> IO ()) -> IO [Char]
90+execute :: PortNumber -> Int -> (Socket -> IO ()) -> IO (SerialT IO Char)
9291execute port size handler = do
9392 sem <- newEmptyMVar
9493 tid <- forkIO $ server port sem handler
95− lst <- sender port sem
96− & S.take size
97− & S.toList
98− killThread tid
94+ let lst = sender port sem
95+ & Stream.take size
96+ & Stream.finally (killThread tid)
9997 return $ lst
10098
10199validateWithBufferOf :: Property
102100validateWithBufferOf = monadicIO $ do
103− ls2 <- run $ execute 8000 45000 handlerwithbuffer
104− assert (testDataSource == ls2)
101+ res <- run $ do
102+ ls2 <- execute 8000 45000 handlerwithbuffer
103+ Stream.eqBy (==) (Stream.fromList testDataSource) ls2
104+ assert res
105105
106106validateRW :: Property
107107validateRW = monadicIO $ do
108− ls2 <- run $ execute 8001 A.defaultChunkSize handlerRW
109− assert (take A.defaultChunkSize testDataSource == ls2)
108+ res <- run $ do
109+ ls2 <- execute 8001 Array.defaultChunkSize handlerRW
110+ let dataChunk = take Array.defaultChunkSize testDataSource
111+ Stream.eqBy (==) (Stream.fromList dataChunk) ls2
112+ assert res
110113
111114validateChunks :: Property
112115validateChunks = monadicIO $ do
113− ls2 <- run $ execute 8002 45000 handlerChunks
114− assert (testDataSource == ls2)
116+ res <- run $ do
117+ ls2 <- execute 8002 45000 handlerChunks
118+ Stream.eqBy (==) (Stream.fromList testDataSource) ls2
119+ assert res
115120
116121validateChunksWithBufferOf :: Property
117122validateChunksWithBufferOf = monadicIO $ do
118− ls2 <- run $ execute 8003 45000 handlerChunksWithBuffer
119− assert (testDataSource == ls2)
123+ res <- run $ do
124+ ls2 <- execute 8003 45000 handlerChunksWithBuffer
125+ Stream.eqBy (==) (Stream.fromList testDataSource) ls2
126+ assert res
120127
121128main :: IO ()
122129main = hspec $ do