Skip to content

Commit 47beb23

Browse files
committed
Add tests for cancel in parallel races
1 parent 8769aff commit 47beb23

File tree

1 file changed

+26
-0
lines changed

1 file changed

+26
-0
lines changed

test/Test/Main.purs

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -202,6 +202,26 @@ test_cancelParallel = do
202202
log (if v then "Success: Canceling composite of two Parallel succeeded"
203203
else "Failure: Canceling composite of two Parallel failed")
204204

205+
test_cancelRaceLeft :: TestAVar Unit
206+
test_cancelRaceLeft = do
207+
var <- makeVar
208+
c <- sequential
209+
$ parallel (later' 250 $ putVar var true)
210+
<|> parallel (later' 100 $ pure unit)
211+
later' 500 $ putVar var false
212+
l <- takeVar var
213+
when l $ throwError (error "Failure: left side ran even though it lost the race")
214+
215+
test_cancelRaceRight :: TestAVar Unit
216+
test_cancelRaceRight = do
217+
var <- makeVar
218+
c <- sequential
219+
$ parallel (later' 100 $ pure unit)
220+
<|> parallel (later' 250 $ putVar var true)
221+
later' 500 $ putVar var false
222+
l <- takeVar var
223+
when l $ throwError (error "Failure: right side ran even though it lost the race")
224+
205225
test_syncTailRecM :: TestAVar Unit
206226
test_syncTailRecM = do
207227
v <- makeVar' false
@@ -305,6 +325,12 @@ main = do
305325
log "Testing cancel of Parallel (<|>)"
306326
test_cancelParallel
307327

328+
log "Testing cancel of left branch in parallel (<|>)"
329+
test_cancelRaceLeft
330+
331+
log "Testing cancel of right branch in parallel (<|>)"
332+
test_cancelRaceRight
333+
308334
log "Testing synchronous tailRecM"
309335
test_syncTailRecM
310336

0 commit comments

Comments
 (0)