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

Add tests for Awaitable

parent d5940a41
No related branches found
No related tags found
No related merge requests found
......@@ -11,6 +11,10 @@ import System.Timeout
spec :: Spec
spec = parallel $ do
describe "Awaitable" $ do
it "can await pure values" $ do
awaitIO $ (pure () :: Awaitable ()) :: IO ()
describe "AsyncVar" $ do
it "can be created" $ do
_ <- newAsyncVar :: IO (AsyncVar ())
......@@ -20,6 +24,42 @@ spec = parallel $ do
avar <- newAsyncVar :: IO (AsyncVar ())
putAsyncVar_ avar ()
it "can be awaited" $ do
avar <- newAsyncVar :: IO (AsyncVar ())
putAsyncVar_ avar ()
awaitIO avar
it "can be awaited and completed later" $ do
avar <- newAsyncVar :: IO (AsyncVar ())
void $ forkIO $ do
threadDelay 100000
putAsyncVar_ avar ()
awaitIO avar
describe "awaitAny" $ do
it "works with completed awaitables" $ do
awaitIO (awaitAny2 (pure () :: Awaitable ()) (pure () :: Awaitable ())) :: IO ()
it "can be completed later" $ do
avar1 <- newAsyncVar :: IO (AsyncVar ())
avar2 <- newAsyncVar :: IO (AsyncVar ())
void $ forkIO $ do
threadDelay 100000
putAsyncVar_ avar1 ()
awaitIO (awaitAny2 avar1 avar2)
it "can be completed later by the second parameter" $ do
avar1 <- newAsyncVar :: IO (AsyncVar ())
avar2 <- newAsyncVar :: IO (AsyncVar ())
void $ forkIO $ do
threadDelay 100000
putAsyncVar_ avar2 ()
awaitIO (awaitAny2 avar1 avar2)
describe "AsyncIO" $ do
it "binds pure operations" $ do
withDefaultAsyncManager (pure () >>= \() -> pure ())
......
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