public void TestEndedTransaction() { using (ProgressTracker tracker = new ProgressTracker()) { IProgressTrackerSubscriber mockedSubscriber = mockSubscriber(tracker); TestTransaction test1 = new TestTransaction(); // Step 1 { Expect.Once.On(mockedSubscriber). Method("IdleStateChanged"). WithAnyArguments(); Expect.Between(0, 1).On(mockedSubscriber). Method("ProgressChanged"). With( new Matcher[] { new NMock2.Matchers.TypeMatcher(typeof(ProgressTracker)), new ProgressReportEventArgsMatcher(new ProgressReportEventArgs(0.0f)) } ); tracker.Track(test1); } // Step 2 { Expect.Once.On(mockedSubscriber). Method("ProgressChanged"). With( new Matcher[] { new NMock2.Matchers.TypeMatcher(typeof(ProgressTracker)), new ProgressReportEventArgsMatcher(new ProgressReportEventArgs(0.5f)) } ); tracker.Track(Transaction.EndedDummy); } // Step 3 { Expect.Once.On(mockedSubscriber). Method("ProgressChanged"). With( new Matcher[] { new NMock2.Matchers.TypeMatcher(typeof(ProgressTracker)), new ProgressReportEventArgsMatcher(new ProgressReportEventArgs(1.0f)) } ); Expect.Once.On(mockedSubscriber). Method("IdleStateChanged"). WithAnyArguments(); test1.End(); } } this.mockery.VerifyAllExpectationsHaveBeenMet(); }
/// <summary>Mocks a subscriber for the events of a tracker</summary> /// <param name="tracker">Tracker to mock an event subscriber for</param> /// <returns>The mocked event subscriber</returns> private IProgressTrackerSubscriber mockSubscriber(ProgressTracker tracker) { IProgressTrackerSubscriber mockedSubscriber = this.mockery.NewMock <IProgressTrackerSubscriber>(); tracker.AsyncIdleStateChanged += new EventHandler <IdleStateEventArgs>(mockedSubscriber.IdleStateChanged); tracker.AsyncProgressChanged += new EventHandler <ProgressReportEventArgs>(mockedSubscriber.ProgressChanged); return(mockedSubscriber); }
public void TestSoleEndedTransaction() { using (ProgressTracker tracker = new ProgressTracker()) { IProgressTrackerSubscriber mockedSubscriber = mockSubscriber(tracker); Expect.Never.On(mockedSubscriber).Method("IdleStateChanged").WithAnyArguments(); Expect.Never.On(mockedSubscriber).Method("ProgressChanged").WithAnyArguments(); tracker.Track(Transaction.EndedDummy); } this.mockery.VerifyAllExpectationsHaveBeenMet(); }
public void TestSummedProgress() { using (ProgressTracker tracker = new ProgressTracker()) { IProgressTrackerSubscriber mockedSubscriber = mockSubscriber(tracker); TestTransaction test1 = new TestTransaction(); TestTransaction test2 = new TestTransaction(); // Step 1 { Expect.Once.On(mockedSubscriber).Method("IdleStateChanged").WithAnyArguments(); // Since the progress is already at 0, these redundant reports are optional Expect.Between(0, 2).On(mockedSubscriber).Method("ProgressChanged").With( new Matcher[] { new NMock2.Matchers.TypeMatcher(typeof(ProgressTracker)), new ProgressReportEventArgsMatcher(new ProgressReportEventArgs(0.0f)) } ); tracker.Track(test1); tracker.Track(test2); } // Step 2 { Expect.Once.On(mockedSubscriber).Method("ProgressChanged").With( new Matcher[] { new NMock2.Matchers.TypeMatcher(typeof(ProgressTracker)), new ProgressReportEventArgsMatcher(new ProgressReportEventArgs(0.25f)) } ); test1.ChangeProgress(0.5f); } } this.mockery.VerifyAllExpectationsHaveBeenMet(); }
public void TestDelayedRemoval() { using (ProgressTracker tracker = new ProgressTracker()) { IProgressTrackerSubscriber mockedSubscriber = mockSubscriber(tracker); TestTransaction test1 = new TestTransaction(); TestTransaction test2 = new TestTransaction(); // Step 1 { Expect.Once.On(mockedSubscriber). Method("IdleStateChanged"). WithAnyArguments(); // This is optional. The tracker's progress is currently 0, so there's no need // to send out superfluous progress reports. Expect.Between(0, 2).On(mockedSubscriber). Method("ProgressChanged"). With( new Matcher[] { new NMock2.Matchers.TypeMatcher(typeof(ProgressTracker)), new ProgressReportEventArgsMatcher(new ProgressReportEventArgs(0.0f)) } ); tracker.Track(test1); tracker.Track(test2); } // Step 2 { Expect.Once.On(mockedSubscriber). Method("ProgressChanged"). With( new Matcher[] { new NMock2.Matchers.TypeMatcher(typeof(ProgressTracker)), new ProgressReportEventArgsMatcher(new ProgressReportEventArgs(0.25f)) } ); // Total progress should be 0.25 after this call (two transactions, one with // 0% progress and one with 50% progress) test1.ChangeProgress(0.5f); } // Step 3 { Expect.Once.On(mockedSubscriber). Method("ProgressChanged"). With( new Matcher[] { new NMock2.Matchers.TypeMatcher(typeof(ProgressTracker)), new ProgressReportEventArgsMatcher(new ProgressReportEventArgs(0.75f)) } ); // Total progress should be 0.75 after this call (one transaction at 100%, // the other one at 50%). If the second transaction would be removed by the tracker, // (which would be inappropriate!) the progress would falsely jump to 0.5 instead. test2.End(); } // Step 4 { Expect.Once.On(mockedSubscriber). Method("ProgressChanged"). With( new Matcher[] { new NMock2.Matchers.TypeMatcher(typeof(ProgressTracker)), new ProgressReportEventArgsMatcher(new ProgressReportEventArgs(1.0f)) } ); Expect.Once.On(mockedSubscriber). Method("IdleStateChanged"). WithAnyArguments(); test1.End(); } } this.mockery.VerifyAllExpectationsHaveBeenMet(); }