public void ShouldCancelCountAt5() { const int expected = 10; var countUpdated = new AutoResetEvent(false); var countCanceled = new AutoResetEvent(false); var tracking = new MemoryTrackingParticipant(); var target = CountModelFactory.CreateModel(tracking); target.CountUpdated = i => { if (i == 5) { countUpdated.Set(); } }; target.CountCanceled = () => countCanceled.Set(); try { target.StartCounting(expected); // Wait for the first update Assert.IsTrue(countUpdated.WaitOne(TestTimeout)); target.CancelCounting(); // Wait for the cancel Assert.IsTrue(countCanceled.WaitOne(TestTimeout)); } finally { tracking.Trace(); } }
public void WhenCountIsCanceledNoCompleteEventShouldBeRaised() { var countUpdated = new AutoResetEvent(false); var countCanceled = new AutoResetEvent(false); const int expected = 10; var tracking = new MemoryTrackingParticipant(); var target = CountModelFactory.CreateModel(tracking); // Trigger the sync event on the first count target.CountUpdated = i => countUpdated.Set(); target.CountCanceled = () => countCanceled.Set(); target.CountCompleted = () => countCanceled.Set(); try { target.StartCounting(expected); // Wait for the first update Assert.IsTrue(countUpdated.WaitOne(TestTimeout)); target.CancelCounting(); // Wait for the cancel Assert.IsTrue(countCanceled.WaitOne(TestTimeout)); } finally { tracking.Trace(); } }
public void ShouldUseDelayWhenCounting() { const int expected = 5; var countCompleted = new AutoResetEvent(false); var tracking = new MemoryTrackingParticipant(); var target = CountModelFactory.CreateModel(tracking); target.CountCompleted = () => countCompleted.Set(); try { var start = DateTime.Now; target.StartCounting(expected, 10); Assert.IsTrue(countCompleted.WaitOne(TestTimeout)); var stop = DateTime.Now; // Should be at least 50msecs Assert.IsTrue(stop.Subtract(start).Milliseconds >= 50); } finally { tracking.Trace(); } }
public void ShouldRaiseCompleteEvent() { var tracking = new MemoryTrackingParticipant(); var target = CountModelFactory.CreateModel(tracking); var countCompleted = new AutoResetEvent(false); target.CountCompleted = () => countCompleted.Set(); try { target.StartCounting(1); Assert.IsTrue(countCompleted.WaitOne(TestTimeout)); } finally { tracking.Trace(); } }
public void ShouldCountTo10() { var actual = -1; const int expected = 10; var tracking = new MemoryTrackingParticipant(); var target = CountModelFactory.CreateModel(tracking); var countCompleted = new AutoResetEvent(false); target.CountCompleted = () => countCompleted.Set(); target.CountUpdated = i => actual = i; try { target.StartCounting(expected); Assert.IsTrue(countCompleted.WaitOne(TestTimeout)); Assert.AreEqual(expected, actual); } finally { tracking.Trace(); } }