|
9 | 9 |
|
10 | 10 | describe 'chain_completable' do
|
11 | 11 | it 'event' do
|
12 |
| - b = event |
13 |
| - a = event.chain_completable(b) |
| 12 | + b = completable_event |
| 13 | + a = completable_event.chain_completable(b) |
14 | 14 | a.complete
|
15 | 15 | expect(b).to be_completed
|
16 | 16 | end
|
@@ -102,7 +102,7 @@ def behaves_as_delay(delay, value)
|
102 | 102 |
|
103 | 103 | describe '.event' do
|
104 | 104 | specify do
|
105 |
| - completable_event = event |
| 105 | + completable_event = completable_event() |
106 | 106 | one = completable_event.chain { 1 }
|
107 | 107 | join = zip(completable_event).chain { 1 }
|
108 | 108 | expect(one.completed?).to be false
|
@@ -201,8 +201,8 @@ def behaves_as_delay(delay, value)
|
201 | 201 |
|
202 | 202 | expect(future { 1 }.delay).to be_a_kind_of Concurrent::Promises::Future
|
203 | 203 | expect(future { 1 }.delay.wait!).to be_completed
|
204 |
| - expect(event.complete.delay).to be_a_kind_of Concurrent::Promises::Event |
205 |
| - expect(event.complete.delay.wait).to be_completed |
| 204 | + expect(completable_event.complete.delay).to be_a_kind_of Concurrent::Promises::Event |
| 205 | + expect(completable_event.complete.delay.wait).to be_completed |
206 | 206 |
|
207 | 207 | a = future { 1 }
|
208 | 208 | b = future { raise 'b' }
|
@@ -239,7 +239,7 @@ def behaves_as_delay(delay, value)
|
239 | 239 | it 'waits for all and returns event' do
|
240 | 240 | a = succeeded_future 1
|
241 | 241 | b = failed_future :any
|
242 |
| - c = event.complete |
| 242 | + c = completable_event.complete |
243 | 243 |
|
244 | 244 | z2 = zip_events a, b, c
|
245 | 245 | z3 = zip_events a
|
@@ -449,6 +449,38 @@ def behaves_as_delay(delay, value)
|
449 | 449 | expect(future.value!).to eq :done
|
450 | 450 | end
|
451 | 451 | end
|
| 452 | + |
| 453 | + specify do |
| 454 | + source, token = Concurrent::Cancellation.create |
| 455 | + source.cancel |
| 456 | + expect(token.event.complete?).to be_truthy |
| 457 | + |
| 458 | + cancellable_branch = Concurrent::Promises.delay { 1 } |
| 459 | + expect((cancellable_branch | token.event).value).to be_nil |
| 460 | + expect(cancellable_branch.complete?).to be_falsey |
| 461 | + end |
| 462 | + |
| 463 | + specify do |
| 464 | + source, token = Concurrent::Cancellation.create( |
| 465 | + Concurrent::Promises.completable_future, false, nil, err = StandardError.new('Cancelled')) |
| 466 | + source.cancel |
| 467 | + expect(token.future.complete?).to be_truthy |
| 468 | + |
| 469 | + cancellable_branch = Concurrent::Promises.delay { 1 } |
| 470 | + expect((cancellable_branch | token.event).reason).to eq err |
| 471 | + expect(cancellable_branch.complete?).to be_falsey |
| 472 | + end |
| 473 | + |
| 474 | + |
| 475 | + specify do |
| 476 | + source, token = Concurrent::Cancellation.create |
| 477 | + |
| 478 | + cancellable_branch = Concurrent::Promises.delay { 1 } |
| 479 | + expect((cancellable_branch | token.event).value).to eq 1 |
| 480 | + expect(cancellable_branch.complete?).to be_truthy |
| 481 | + end |
| 482 | + end |
| 483 | + |
452 | 484 | end
|
453 | 485 |
|
454 | 486 | end
|
0 commit comments