예제 #1
0
        public void Should_CallAbort_When_Dispose()
        {
            WuStateAsyncJobProxy state = new WuStateAsyncJobProxy(WuStateId.Downloading, "name", 0);

            state.Dispose();
            Assert.IsTrue(state.AbortCalled);
        }
예제 #2
0
        public void Should_NotAllowReEnter_When_WuStateAsyncJobIsDisposed()
        {
            WuStateAsyncJob state = new WuStateAsyncJobProxy(WuStateId.Downloading, "name", 1);

            state.Dispose();
            state.EnterState(new WuStateReady());
        }
예제 #3
0
        public void Should_CallProgressCallback_When_NewProgessNotEqualsOldProgress()
        {
            int progressChangedCallbackCounter = 0;

            WuStateAsyncJob.ProgressChangedCallback progressCallback = (j, cu, ci, co, p) => { progressChangedCallbackCounter++; };
            WuStateAsyncJob.TimeoutCallback         timeoutCallback  = (j, t) => { Assert.Fail("Should not be called."); };

            UpdateFake update1 = new UpdateFake("update1");
            UpdateFake update2 = new UpdateFake("update2");

            Tuple <IUpdate, int, int, int>[] progessChanges =
            {
                new Tuple <IUpdate, int, int, int>(update1, 0, 1,   0),
                new Tuple <IUpdate, int, int, int>(update1, 0, 1, 100),
                new Tuple <IUpdate, int, int, int>(update1, 1, 1, 100),
                new Tuple <IUpdate, int, int, int>(update2, 1, 1, 100)
            };

            using (var asyncJob = new WuStateAsyncJobProxy(WuStateId.Downloading, "name", 10000, timeoutCallback, progressCallback))
            {
                foreach (var pc in progessChanges)
                {
                    asyncJob.SimulateOnProgressNow(pc.Item1, pc.Item2, pc.Item3, pc.Item4);
                }
            }
            Assert.AreEqual(progessChanges.Length, progressChangedCallbackCounter);
        }
예제 #4
0
 public void Should_CallAbort_When_CallLeaveState()
 {
     using (var state = new WuStateAsyncJobProxy(WuStateId.Downloading, "name", 0))
     {
         state.LeaveState();
         Assert.IsTrue(state.AbortCalled);
     }
 }
예제 #5
0
        public void Should_ReturnTrue_When_CallIsDisposedAfterDispose()
        {
            WuStateAsyncJob state = new WuStateAsyncJobProxy(WuStateId.Downloading, "name", 0);

            Assert.IsFalse(state.IsDisposed);
            state.Dispose();
            Assert.IsTrue(state.IsDisposed);
        }
예제 #6
0
 public void Should_UpdateRunningIndicator_When_StartAndAbortTimer()
 {
     using (WuStateAsyncJobProxy state = new WuStateAsyncJobProxy(WuStateId.Downloading, "name", 10000))
     {
         Assert.IsFalse(state.IsRunning);
         state.EnterState(new WuStateReady());
         Assert.IsTrue(state.IsRunning);
         state.Abort();
         Assert.IsFalse(state.IsRunning);
     }
 }
예제 #7
0
        public void Should_ContainSpecifiedTimeOut_When_CreateWuStateAsyncJob()
        {
            int timeout = 34;

            WuStateAsyncJob.ProgressChangedCallback progressCallback = (a, b, c, d, e) => { };
            WuStateAsyncJob.TimeoutCallback         timeoutCallback  = (a, b) => { };
            using (var state = new WuStateAsyncJobProxy(WuStateId.Downloading, "name", timeout, timeoutCallback, progressCallback))
            {
                Assert.AreEqual(timeout, state.TimeoutSec);
                Assert.AreSame(progressCallback, state.ProgressChangedCallbackDelegate);
                Assert.AreSame(timeoutCallback, state.TimeoutCallbackDelegate);
            }
        }
예제 #8
0
        public void Should_CallRequestAbort_When_AbortJob()
        {
            var job = MoqFactory.Create <WuApiJobAdapter>(MockBehavior.Loose);

            job.Setup(j => j.RequestAbort());
            using (WuStateAsyncJobProxy state = new WuStateAsyncJobProxy(WuStateId.Downloading, "name", 10000))
            {
                state.Job = job.Object;
                state.EnterState(new WuStateReady());
                state.Abort();
                job.Verify(j => j.RequestAbort(), Times.Once);
            }
        }
예제 #9
0
        public void Should_CallOnTimeout_When_TimeRunsOut()
        {
            int timeout = 1;
            WuStateAsyncJobProxy state = new WuStateAsyncJobProxy(WuStateId.Downloading, "name", timeout);

            state.EnterState(new WuStateReady());

            if (!state.OnTimeoutSignal.WaitOne((int)(timeout * 1000 * 1.5)))
            {
                Assert.Fail($"OnTimeout was not called");
            }
            Assert.IsFalse(state.IsRunning);
            state.Dispose();
        }
예제 #10
0
 public void Should_NotAllowNullTimeoutDelegate_When_CreateWuStateAsyncJob()
 {
     WuStateAsyncJob state = new WuStateAsyncJobProxy(WuStateId.Downloading, "name", 1, null, null);
 }
예제 #11
0
 public void Should_NotAllowNegativeTimeout_When_CreateWuStateAsyncJob()
 {
     WuStateAsyncJob state = new WuStateAsyncJobProxy(WuStateId.Downloading, "name", -1);
 }