public void TestThrowOnRepeatedlyEndedTransaction()
        {
            TestTransaction test = new TestTransaction();

            test.End();
            Assert.Throws <InvalidOperationException>(
                delegate() { test.End(); }
                );
        }
Exemple #2
0
        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();
        }
        public void TestWaitUnlimited()
        {
            TestTransaction test = new TestTransaction();

            // We can only do a positive test here without slowing down the unit test
            ThreadPool.QueueUserWorkItem(
                (WaitCallback) delegate(object state) { Thread.Sleep(1); test.End(); }
                );

            test.Wait();
        }
        public void TestEndedEventAfterSubscription()
        {
            TestTransaction test = new TestTransaction();

            Mock <ITransactionSubscriber> mockedSubscriber = mockSubscriber(test);

            mockedSubscriber.Expects.One.Method(m => m.Ended(null, null)).WithAnyArguments();

            test.End();

            this.mockery.VerifyAllExpectationsHaveBeenMet();
        }
Exemple #5
0
        public void TestProvokedDeadlock()
        {
            using (ProgressTracker tracker = new ProgressTracker()) {
                TestTransaction test1 = new TestTransaction();
                tracker.Track(test1);

                tracker.AsyncIdleStateChanged +=
                    (EventHandler <IdleStateEventArgs>) delegate(object sender, IdleStateEventArgs arguments) {
                    tracker.Track(Transaction.EndedDummy);
                };

                test1.End();
            }
        }
        public void TestWaitTimeSpan()
        {
            TestTransaction test = new TestTransaction();

            // Wait 0 milliseconds for the transaction to end. Of course, this will not happen,
            // so a timeout occurs and false is returned
            Assert.IsFalse(test.Wait(TimeSpan.Zero));

            test.End();

            // Wait another 0 milliseconds for the transaction to end. Now it has already ended
            // and no timeout will occur, even with a wait time of 0 milliseconds.
            Assert.IsTrue(test.Wait(TimeSpan.Zero));
        }
Exemple #7
0
        public void TestEndedEventAfterSubscription()
        {
            TestTransaction test = new TestTransaction();

            ITransactionSubscriber mockedSubscriber = mockSubscriber(test);

            Expect.Once.On(mockedSubscriber).
            Method("Ended").
            WithAnyArguments();

            test.End();

            this.mockery.VerifyAllExpectationsHaveBeenMet();
        }
        public void TestEndedEventDuingSubscription()
        {
            TestTransaction test = new TestTransaction();

            test.End();

            Mock <ITransactionSubscriber> mockedSubscriber =
                this.mockery.CreateMock <ITransactionSubscriber>();

            mockedSubscriber.Expects.One.Method(m => m.Ended(null, null)).WithAnyArguments();

            test.AsyncEnded += new EventHandler(mockedSubscriber.MockObject.Ended);

            this.mockery.VerifyAllExpectationsHaveBeenMet();
        }
        public void TestEndedTransaction()
        {
            using (ProgressTracker tracker = new ProgressTracker()) {
                Mock <IProgressTrackerSubscriber> mockedSubscriber = mockSubscriber(tracker);

                TestTransaction test1 = new TestTransaction();

                // Step 1
                {
                    mockedSubscriber.Expects.One.Method(
                        m => m.IdleStateChanged(null, null)
                        ).WithAnyArguments();

                    mockedSubscriber.Expects.AtMost(1).Method(m => m.ProgressChanged(null, null)).With(
                        new NMock.Matchers.TypeMatcher(typeof(ProgressTracker)),
                        new ProgressReportEventArgsMatcher(new ProgressReportEventArgs(0.0f))
                        );

                    tracker.Track(test1);
                }

                // Step 2
                {
                    mockedSubscriber.Expects.One.Method(m => m.ProgressChanged(null, null)).With(
                        new NMock.Matchers.TypeMatcher(typeof(ProgressTracker)),
                        new ProgressReportEventArgsMatcher(new ProgressReportEventArgs(0.5f))
                        );

                    tracker.Track(Transaction.EndedDummy);
                }

                // Step 3
                {
                    mockedSubscriber.Expects.One.Method(m => m.ProgressChanged(null, null)).With(
                        new NMock.Matchers.TypeMatcher(typeof(ProgressTracker)),
                        new ProgressReportEventArgsMatcher(new ProgressReportEventArgs(1.0f))
                        );

                    mockedSubscriber.Expects.One.Method(
                        m => m.IdleStateChanged(null, null)
                        ).WithAnyArguments();

                    test1.End();
                }
            }

            this.mockery.VerifyAllExpectationsHaveBeenMet();
        }
        public void TestUnsubscribeInEndedCallback()
        {
            TestTransaction          monitored = new TestTransaction();
            UnsubscribingTransaction test      = new UnsubscribingTransaction(monitored);

            Mock <ITransactionSubscriber> mockedSubscriber = mockSubscriber(monitored);

            try {
                mockedSubscriber.Expects.One.Method(m => m.Ended(null, null)).WithAnyArguments();
                monitored.End();
                this.mockery.VerifyAllExpectationsHaveBeenMet();
            }
            finally {
                test.End();
            }
        }
Exemple #11
0
        public void TestUnsubscribeInEndedCallback()
        {
            TestTransaction          monitored = new TestTransaction();
            UnsubscribingTransaction test      = new UnsubscribingTransaction(monitored);

            ITransactionSubscriber mockedSubscriber = mockSubscriber(monitored);

            try {
                Expect.Once.On(mockedSubscriber).Method("Ended").WithAnyArguments();
                monitored.End();
                this.mockery.VerifyAllExpectationsHaveBeenMet();
            }
            finally {
                test.End();
            }
        }
Exemple #12
0
        public void TestIdleWithAutoRemoval()
        {
            using (ProgressTracker tracker = new ProgressTracker()) {
                TestTransaction test1 = new TestTransaction();

                Assert.IsTrue(tracker.Idle);

                tracker.Track(test1);

                Assert.IsFalse(tracker.Idle);

                test1.End();

                Assert.IsTrue(tracker.Idle);
            }
        }
Exemple #13
0
        public void TestEndedEventDuingSubscription()
        {
            TestTransaction test = new TestTransaction();

            test.End();

            ITransactionSubscriber mockedSubscriber =
                this.mockery.NewMock <ITransactionSubscriber>();

            Expect.Once.On(mockedSubscriber).
            Method("Ended").
            WithAnyArguments();

            test.AsyncEnded += new EventHandler(mockedSubscriber.Ended);

            this.mockery.VerifyAllExpectationsHaveBeenMet();
        }
    public void TestWaitUnlimited() {
      TestTransaction test = new TestTransaction();

      // We can only do a positive test here without slowing down the unit test
      ThreadPool.QueueUserWorkItem(
        (WaitCallback)delegate(object state) { Thread.Sleep(1); test.End(); }
      );

      test.Wait();
    }
 public void TestThrowOnRepeatedlyEndedTransaction() {
   TestTransaction test = new TestTransaction();
   test.End();
   Assert.Throws<InvalidOperationException>(
     delegate() { test.End(); }
   );
 }
    public void TestEndedEventAfterSubscription() {
      TestTransaction test = new TestTransaction();

      ITransactionSubscriber mockedSubscriber = mockSubscriber(test);
      Expect.Once.On(mockedSubscriber).
        Method("Ended").
        WithAnyArguments();

      test.End();

      this.mockery.VerifyAllExpectationsHaveBeenMet();
    }
Exemple #17
0
        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();
        }
    public void TestEndedEventDuingSubscription() {
      TestTransaction test = new TestTransaction();
      test.End();

      ITransactionSubscriber mockedSubscriber =
        this.mockery.NewMock<ITransactionSubscriber>();

      Expect.Once.On(mockedSubscriber).
        Method("Ended").
        WithAnyArguments();

      test.AsyncEnded += new EventHandler(mockedSubscriber.Ended);

      this.mockery.VerifyAllExpectationsHaveBeenMet();
    }
    public void TestIdleWithAutoRemoval() {
      using(ProgressTracker tracker = new ProgressTracker()) {
        TestTransaction test1 = new TestTransaction();

        Assert.IsTrue(tracker.Idle);

        tracker.Track(test1);

        Assert.IsFalse(tracker.Idle);

        test1.End();

        Assert.IsTrue(tracker.Idle);
      }
    }
    public void TestProvokedDeadlock() {
      using(ProgressTracker tracker = new ProgressTracker()) {
        TestTransaction test1 = new TestTransaction();
        tracker.Track(test1);

        tracker.AsyncIdleStateChanged +=
          (EventHandler<IdleStateEventArgs>)delegate(object sender, IdleStateEventArgs arguments) {
          tracker.Track(Transaction.EndedDummy);
        };

        test1.End();
      }
    }
    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();
    }
    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();
    }
    public void TestUnsubscribeInEndedCallback() {
      TestTransaction monitored = new TestTransaction();
      UnsubscribingTransaction test = new UnsubscribingTransaction(monitored);

      ITransactionSubscriber mockedSubscriber = mockSubscriber(monitored);

      try {
        Expect.Once.On(mockedSubscriber).Method("Ended").WithAnyArguments();
        monitored.End();
        this.mockery.VerifyAllExpectationsHaveBeenMet();
      }
      finally {
        test.End();
      }
    }
    public void TestWaitTimeSpan() {
      TestTransaction test = new TestTransaction();

      // Wait 0 milliseconds for the transaction to end. Of course, this will not happen,
      // so a timeout occurs and false is returned
      Assert.IsFalse(test.Wait(TimeSpan.Zero));

      test.End();

      // Wait another 0 milliseconds for the transaction to end. Now it has already ended
      // and no timeout will occur, even with a wait time of 0 milliseconds.
      Assert.IsTrue(test.Wait(TimeSpan.Zero));
    }