예제 #1
0
        public void StartAtEnd()
        {
            // Setup
            ReplayMachine machine = CreateMachine();

            machine.SeekToNextBookmark();
            machine.SeekToNextBookmark();

            machine.Start();
            while (machine.Ticks < machine.EndTicks)
            {
                machine.AdvancePlayback(100000);
                Thread.Sleep(10);
            }

            // Act
            Mock <MachineAuditorDelegate> auditor = new Mock <MachineAuditorDelegate>();

            machine.Auditors += auditor.Object;
            machine.Start();
            while (machine.Ticks < machine.EndTicks)
            {
                machine.AdvancePlayback(100000);
                Thread.Sleep(10);
            }

            // Verify
            auditor.VerifyNoOtherCalls();
            Assert.AreEqual(RunningState.Paused, machine.RunningState);
            Assert.AreEqual(machine.EndTicks, machine.Ticks);
        }
예제 #2
0
        public void SeekToPrevAndNextBookmark()
        {
            // Setup
            ReplayMachine machine = CreateMachine();

            // Act and Verify
            foreach (UInt64 bookmarkTick in _bookmarkTicks)
            {
                machine.SeekToNextBookmark();
                Assert.AreEqual(bookmarkTick, machine.Ticks);
            }

            UInt64 finalTicks = machine.Ticks;

            machine.SeekToNextBookmark();
            Assert.AreEqual(finalTicks, machine.Ticks);

            _bookmarkTicks.Reverse();
            foreach (UInt64 bookmarkTick in _bookmarkTicks)
            {
                Assert.AreEqual(bookmarkTick, machine.Ticks);
                machine.SeekToPreviousBookmark();
            }

            Assert.AreEqual(0, machine.Ticks);
            machine.SeekToPreviousBookmark();
            Assert.AreEqual(0, machine.Ticks);
        }
예제 #3
0
        public void EndTicks()
        {
            // Setup
            ReplayMachine replayMachine = CreateMachine();

            // Verify
            Assert.AreEqual(_finalHistoryEvent.Ticks, replayMachine.EndTicks);
        }
예제 #4
0
        public void NoPropertyChangedHandlers()
        {
            // Setup
            ReplayMachine machine = CreateMachine();

            // Act and Verify
            Assert.DoesNotThrow(() => machine.Status = "Status");
        }
예제 #5
0
        public void CanClose()
        {
            // Setup
            ReplayMachine machine = CreateMachine();

            // Verify
            Assert.True(machine.CanClose);
        }
예제 #6
0
        public void CanStart()
        {
            // Setup
            ReplayMachine replayMachine = CreateMachine();

            // Verify
            Assert.True(replayMachine.CanStart);
            Assert.False(replayMachine.CanStop);
        }
예제 #7
0
        public void Name()
        {
            // Setup
            ReplayMachine machine = CreateMachine();

            // Act
            machine.Name = "Test";

            // Verify
            Assert.AreEqual("Test", machine.Name);
        }
예제 #8
0
        public void SeekToStart()
        {
            // Setup
            ReplayMachine machine = CreateMachine();

            RunForAWhile(machine);

            // Act
            machine.SeekToStart();

            // Verify
            Assert.AreEqual(0, machine.Ticks);
        }
예제 #9
0
        public void CloseTwice()
        {
            // Setup
            ReplayMachine machine = CreateMachine();

            machine.Close();

            // Act and Verify
            Assert.DoesNotThrow(() =>
            {
                machine.Close();
            });
        }
예제 #10
0
        public void StatusChanged()
        {
            // Setup
            ReplayMachine machine = CreateMachine();

            Mock <PropertyChangedEventHandler> propChanged = new Mock <PropertyChangedEventHandler>();

            machine.PropertyChanged += propChanged.Object;

            // Act
            machine.Status = "Status";

            // Verify
            propChanged.Verify(p => p(machine, It.Is <PropertyChangedEventArgs>(e => e.PropertyName == "Status")));
        }
예제 #11
0
        public void Auditor()
        {
            // Setup
            ReplayMachine replayMachine           = CreateMachine();
            Mock <MachineAuditorDelegate> auditor = new Mock <MachineAuditorDelegate>();

            replayMachine.Auditors += auditor.Object;

            // Act
            replayMachine.Start();
            Thread.Sleep(10);
            replayMachine.Stop();

            // Verify
            auditor.Verify(a => a(It.Is <CoreAction>(coreAction => coreAction != null && coreAction.Type == CoreRequest.Types.RunUntil)), Times.AtLeastOnce());
        }
예제 #12
0
        public void SetRunning(RunningState runningState)
        {
            // Setup
            ReplayMachine machine = CreateMachine();

            if (runningState == RunningState.Running)
            {
                machine.Start();
            }

            // Act
            machine.SeekToNextBookmark();

            // Verify
            Assert.AreEqual(runningState, machine.RunningState);
        }
예제 #13
0
        public void StartAndStop()
        {
            // Setup
            ReplayMachine replayMachine = CreateMachine();
            RunningState  runningState1 = replayMachine.RunningState;

            // Act
            replayMachine.Start();
            RunningState runningState2 = replayMachine.RunningState;

            replayMachine.Stop();
            RunningState runningState3 = replayMachine.RunningState;

            // Verify
            Assert.AreEqual(RunningState.Paused, runningState1);
            Assert.AreEqual(RunningState.Running, runningState2);
            Assert.AreEqual(RunningState.Paused, runningState3);
        }
예제 #14
0
        public void Toggle()
        {
            // Setup
            ReplayMachine machine = CreateMachine();

            machine.Start();

            // Act
            RunningState runningState1 = machine.RunningState;

            machine.ToggleRunning();
            RunningState runningState2 = machine.RunningState;

            machine.ToggleRunning();

            // Verify
            Assert.AreEqual(RunningState.Running, runningState1);
            Assert.AreEqual(RunningState.Paused, runningState2);
            Assert.AreEqual(RunningState.Running, machine.RunningState);
        }
예제 #15
0
        private ReplayMachine CreateMachine()
        {
            ReplayMachine replayMachine = new ReplayMachine(_finalHistoryEvent);

            return(replayMachine);
        }