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(); |