Skip to content
Snippets Groups Projects
Commit 69b9f5ba authored by Jens Nolte's avatar Jens Nolte
Browse files

Add test cases

parent d656e4cb
Loading
......@@ -36,6 +36,52 @@ spec = describe "runMultiplexerProtocol" $ parallel $ do
tryReadMVar recvMVar `shouldReturn` Nothing
it "it can create sub-channels" $ do
recvMVar <- newEmptyMVar
withEchoServer $ \channel -> do
channelSetHandler channel $ ((\_ -> putMVar recvMVar) :: ReceivedMessageResources -> BSL.ByteString -> IO ())
SentMessageResources{createdChannels=[_]} <- channelSend_ channel [CreateChannelHeader] "create a channel"
takeMVar recvMVar `shouldReturn` "create a channel"
SentMessageResources{createdChannels=[_, _, _]} <- channelSend_ channel [CreateChannelHeader, CreateChannelHeader, CreateChannelHeader] "create more channels"
takeMVar recvMVar `shouldReturn` "create more channels"
tryReadMVar recvMVar `shouldReturn` Nothing
it "it can send messages on sub-channels" $ do
recvMVar <- newEmptyMVar
c1RecvMVar <- newEmptyMVar
c2RecvMVar <- newEmptyMVar
c3RecvMVar <- newEmptyMVar
withEchoServer $ \channel -> do
channelSetHandler channel $ ((\_ -> putMVar recvMVar) :: ReceivedMessageResources -> BSL.ByteString -> IO ())
channelSendSimple channel "foobar"
takeMVar recvMVar `shouldReturn` "foobar"
SentMessageResources{createdChannels=[c1, c2]} <- channelSend_ channel [CreateChannelHeader, CreateChannelHeader] "create channels"
takeMVar recvMVar `shouldReturn` "create channels"
channelSetHandler c1 $ ((\_ -> putMVar c1RecvMVar) :: ReceivedMessageResources -> BSL.ByteString -> IO ())
channelSetHandler c2 $ ((\_ -> putMVar c2RecvMVar) :: ReceivedMessageResources -> BSL.ByteString -> IO ())
channelSendSimple c1 "test"
takeMVar c1RecvMVar `shouldReturn` "test"
channelSendSimple c2 "test2"
takeMVar c2RecvMVar `shouldReturn` "test2"
channelSendSimple c2 "test3"
takeMVar c2RecvMVar `shouldReturn` "test3"
channelSendSimple c1 "test4"
takeMVar c1RecvMVar `shouldReturn` "test4"
SentMessageResources{createdChannels=[c3]} <- channelSend_ channel [CreateChannelHeader] "create another channel"
takeMVar recvMVar `shouldReturn` "create another channel"
channelSetHandler c3 $ ((\_ -> putMVar c3RecvMVar) :: ReceivedMessageResources -> BSL.ByteString -> IO ())
channelSendSimple c3 "test5"
takeMVar c3RecvMVar `shouldReturn` "test5"
channelSendSimple c1 "test6"
takeMVar c1RecvMVar `shouldReturn` "test6"
tryReadMVar recvMVar `shouldReturn` Nothing
withEchoServer :: (Channel -> IO a) -> IO a
withEchoServer fn = bracket setup close (\(channel, _) -> fn channel)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment