Mercurial > pub > ImplabNet
comparison Implab.Test/AsyncTests.cs @ 149:eb793fbbe4ea v2
fixed promises cancellation
| author | cin |
|---|---|
| date | Wed, 06 May 2015 17:11:27 +0300 |
| parents | 706fccb85524 |
| children | ec91a6dfa5b3 |
comparison
equal
deleted
inserted
replaced
| 148:e6d4b41f0101 | 149:eb793fbbe4ea |
|---|---|
| 744 | 744 |
| 745 [TestMethod] | 745 [TestMethod] |
| 746 public void ChainedCancel2Test() { | 746 public void ChainedCancel2Test() { |
| 747 // при отмене цепочки обещаний, вложенные операции также должны отменяться | 747 // при отмене цепочки обещаний, вложенные операции также должны отменяться |
| 748 var pSurvive = new Promise<bool>(); | 748 var pSurvive = new Promise<bool>(); |
| 749 var hemStarted = new ManualResetEvent(false); | 749 var hemStarted = new Signal(); |
| 750 var p = PromiseHelper | 750 var p = PromiseHelper |
| 751 .Sleep(1, "Hi, HAL!") | 751 .Sleep(1, "Hi, HAL!") |
| 752 .Chain(x => { | 752 .Chain(() => { |
| 753 hemStarted.Set(); | 753 hemStarted.Set(); |
| 754 // запускаем две асинхронные операции | 754 // запускаем две асинхронные операции |
| 755 var result = PromiseHelper | 755 var result = PromiseHelper |
| 756 .Sleep(100000000, "HEM ENABLED!!!") | 756 .Sleep(2000, "HEM ENABLED!!!") |
| 757 .Then(s => { | 757 .Then(() => pSurvive.Resolve(false)); |
| 758 pSurvive.Resolve(false); | |
| 759 return s; | |
| 760 }); | |
| 761 | 758 |
| 762 result | 759 result |
| 763 .On(() => pSurvive.Resolve(true), PromiseEventType.Cancelled); | 760 .On(() => pSurvive.Resolve(true), PromiseEventType.Cancelled); |
| 764 | 761 |
| 765 return result; | 762 return result; |
| 766 }); | 763 }); |
| 767 | 764 |
| 768 hemStarted.WaitOne(); | 765 hemStarted.Wait(); |
| 769 p.Cancel(); | 766 p.Cancel(); |
| 770 | 767 |
| 771 try { | 768 try { |
| 772 p.Join(); | 769 p.Join(); |
| 770 Assert.Fail(); | |
| 773 } catch (OperationCanceledException) { | 771 } catch (OperationCanceledException) { |
| 774 Assert.IsTrue(pSurvive.Join()); | 772 } |
| 775 } | 773 Assert.IsTrue(pSurvive.Join()); |
| 776 } | 774 } |
| 777 | 775 |
| 778 [TestMethod] | 776 [TestMethod] |
| 779 public void SharedLockTest() { | 777 public void SharedLockTest() { |
| 780 var l = new SharedLock(); | 778 var l = new SharedLock(); |
