Exemple #1
0
        public void Shutdown_AbortsAllProcesses()
        {
            var pm = new ProcessManager();

            pm.Initialize();
            pm.PostInitialize();
            var process1 = new ProcessStub(1);

            process1.Initialize();
            pm.AddProcess(process1);
            var process2 = new ProcessStub(2);

            process1.AttachChild(process2);
            var process3 = new ProcessStub(3);

            process3.Initialize();
            pm.AddProcess(process3);

            pm.Shutdown();

            Assert.IsEmpty(pm.Processes);
            Assert.IsTrue(process1.WasAborted);
            Assert.IsTrue(process2.WasAborted);
            Assert.IsTrue(process3.WasAborted);
        }
Exemple #2
0
        public void RemoveChild_HandlesNoChild()
        {
            var proc = new ProcessStub(1);

            var result = proc.RemoveChild();

            Assert.IsNull(result);
        }
Exemple #3
0
        public void AttachChild_HandlesNull()
        {
            var proc = new ProcessStub(1);

            TestDelegate func = () => proc.AttachChild(null);

            Assert.Throws <ArgumentNullException>(func);
        }
Exemple #4
0
        public void AttachChild_AddsFirstChild()
        {
            var proc  = new ProcessStub(1);
            var child = new ProcessStub(2);

            proc.AttachChild(child);

            Assert.IsNotNull(proc.Child);
            Assert.AreEqual(2, proc.Child.Id);
        }
Exemple #5
0
        public void Initialize_Fails()
        {
            var proc = new ProcessStub(1, false);

            var result = proc.Initialize();

            Assert.IsFalse(result);
            Assert.AreEqual(1, proc.DoInitializeCallCount);
            Assert.IsFalse(proc.IsInitialized);
        }
Exemple #6
0
        public void Initialize_Success()
        {
            var proc = new ProcessStub(1);

            var result = proc.Initialize();

            Assert.IsTrue(result);
            Assert.AreEqual(1, proc.DoInitializeCallCount);
            Assert.IsTrue(proc.IsInitialized);
            Assert.IsTrue(proc.IsPaused);
        }
Exemple #7
0
        public void AttachChild_RejectsInitializedChild()
        {
            var proc  = new ProcessStub(1);
            var child = new ProcessStub(2);

            child.Initialize();
            TestDelegate func = () => proc.AttachChild(child);

            Assert.Throws <InvalidOperationException>(func);
            Assert.IsNull(proc.Child);
        }
Exemple #8
0
        public void Update_CallsHandlers()
        {
            var proc = new ProcessStub(1);

            proc.Initialize();
            proc.Resume();

            proc.Update(1f);

            Assert.AreEqual(1, proc.DoUpdateCallCount);
            Assert.AreEqual(1f, proc.RunningTime);
        }
Exemple #9
0
        public void RemoveChild_DetachesChild()
        {
            var proc  = new ProcessStub(1);
            var child = new ProcessStub(2);

            proc.AttachChild(child);

            var result = proc.RemoveChild();

            Assert.IsNotNull(result);
            Assert.AreEqual(2, child.Id);
        }
Exemple #10
0
        public void AddProcess_AcceptsInitializedProcess()
        {
            var pm = new ProcessManager();

            pm.Initialize();
            pm.PostInitialize();
            var process = new ProcessStub(1);

            process.Initialize();

            pm.AddProcess(process);
        }
Exemple #11
0
        public void Update_AccumulatesRunTime()
        {
            var proc = new ProcessStub(1);

            proc.Initialize();
            proc.Resume();

            proc.Update(1f);
            proc.Update(1f);

            Assert.AreEqual(2, proc.DoUpdateCallCount);
            Assert.AreEqual(2f, proc.RunningTime);
        }
Exemple #12
0
        public void AddProcess_RejectsUnInitializedProcess()
        {
            var pm = new ProcessManager();

            pm.Initialize();
            pm.PostInitialize();
            var process = new ProcessStub(1);

            TestDelegate func = () => pm.AddProcess(process);

            Assert.Throws <InvalidOperationException>(func);
            Assert.IsFalse(pm.Processes.Any());
        }
Exemple #13
0
        public async Task TestThatProcessIsRestarted()
        {
            ProcessStub process = new ProcessStub("exePath", "exeArgs");

            SelfRestartingProcess selfRestartingProcess = new SelfRestartingProcess(process, 1);
            await selfRestartingProcess.Start();

            Assert.IsTrue(process.IsRunning);

            process.RaiseExitedEvent();
            Assert.IsTrue(await SpinWaitForRestart(selfRestartingProcess, 1));
            Assert.IsTrue(process.IsRunning);
        }
Exemple #14
0
        public void IsPaused_Setter_Resumes()
        {
            var proc        = new ProcessStub(1);
            var resumeEvent = false;

            proc.Resumed += (sender, args) => resumeEvent = true;
            proc.Initialize();

            proc.IsPaused = false;

            Assert.AreEqual(1, proc.DoResumeCallCount);
            Assert.IsTrue(resumeEvent);
            Assert.IsTrue(proc.IsRunning);
        }
Exemple #15
0
        public void AttachChild_ChainsChildren()
        {
            var proc   = new ProcessStub(1);
            var child1 = new ProcessStub(2);
            var child2 = new ProcessStub(3);

            proc.AttachChild(child1);
            proc.AttachChild(child2);

            Assert.IsNotNull(proc.Child);
            Assert.AreEqual(2, proc.Child.Id);
            Assert.IsNotNull(proc.Child.Child);
            Assert.AreEqual(3, proc.Child.Child.Id);
        }
Exemple #16
0
        public void Abort_HandlesUninitializedState()
        {
            var proc       = new ProcessStub(1);
            var abortEvent = false;

            proc.Aborted += (sender, args) => abortEvent = true;

            proc.Abort();

            Assert.AreEqual(1, proc.DoAbortCallCount);
            Assert.IsTrue(abortEvent);
            Assert.IsTrue(proc.WasAborted);
            Assert.IsTrue(proc.IsCompleted);
        }
Exemple #17
0
        public void Pause_DoesNothingIfPaused()
        {
            var proc       = new ProcessStub(1);
            var pauseEvent = false;

            proc.Initialize();
            proc.Paused += (sender, args) => pauseEvent = true;

            proc.Pause();

            Assert.AreEqual(0, proc.DoPauseCallCount);
            Assert.IsFalse(pauseEvent);
            Assert.IsTrue(proc.IsPaused);
        }
Exemple #18
0
        public void GetProcess_DoesNotFindNonExistingProcess()
        {
            var pm = new ProcessManager();

            pm.Initialize();
            pm.PostInitialize();
            var process = new ProcessStub(1);

            process.Initialize();
            pm.AddProcess(process);

            var result = pm.GetProcess(2);

            Assert.IsNull(result);
        }
Exemple #19
0
        public void Fail_ChangesState()
        {
            var proc      = new ProcessStub(1);
            var failEvent = false;

            proc.Failed += (sender, args) => failEvent = true;
            proc.Initialize();

            proc.Fail();

            Assert.AreEqual(1, proc.DoFailCallCount);
            Assert.IsTrue(failEvent);
            Assert.IsTrue(proc.HasFailed);
            Assert.IsTrue(proc.IsCompleted);
        }
Exemple #20
0
        public void AbortAll_HandlesNoChild()
        {
            var proc       = new ProcessStub(1);
            var abortEvent = false;

            proc.Aborted += (sender, args) => abortEvent = true;

            proc.AbortAll();

            Assert.AreEqual(1, proc.DoAbortCallCount);
            Assert.IsTrue(abortEvent);
            Assert.IsTrue(proc.WasAborted);
            Assert.IsTrue(proc.IsCompleted);
            Assert.IsNull(proc.Child);
        }
Exemple #21
0
        public void GetProcesses_DoesNotFindNonExisting()
        {
            var pm = new ProcessManager();

            pm.Initialize();
            pm.PostInitialize();
            var process1 = new ProcessStub(1);

            process1.Initialize();
            pm.AddProcess(process1);

            var result = pm.GetProcesses <ProcessStub2>().ToList();

            Assert.IsEmpty(result);
        }
Exemple #22
0
        public void Succeed_ChangesState()
        {
            var proc         = new ProcessStub(1);
            var succeedEvent = false;

            proc.Succeeded += (sender, args) => succeedEvent = true;
            proc.Initialize();

            proc.Succeed();

            Assert.AreEqual(1, proc.DoSucceedCallCount);
            Assert.IsTrue(succeedEvent);
            Assert.IsTrue(proc.HasSucceeded);
            Assert.IsTrue(proc.IsCompleted);
        }
Exemple #23
0
        public void Pause_Pauses()
        {
            var proc       = new ProcessStub(1);
            var pauseEvent = false;

            proc.Paused += (sender, args) => pauseEvent = true;
            proc.Initialize();
            proc.Resume();

            proc.Pause();

            Assert.AreEqual(1, proc.DoPauseCallCount);
            Assert.IsTrue(pauseEvent);
            Assert.IsTrue(proc.IsPaused);
        }
Exemple #24
0
        public void Update_DoesNotUpdatePausedProcess()
        {
            var pm = new ProcessManager();

            pm.Initialize();
            pm.PostInitialize();
            var process = new ProcessStub(1);

            process.Initialize();
            pm.AddProcess(process);
            const float time = 1.0f;

            pm.Update(time);

            Assert.AreEqual(0, process.DoUpdateCallCount);
        }
Exemple #25
0
        public void GetProcess_FindsProcess()
        {
            var pm = new ProcessManager();

            pm.Initialize();
            pm.PostInitialize();
            var process = new ProcessStub(1);

            process.Initialize();
            pm.AddProcess(process);

            var result = pm.GetProcess(1);

            Assert.IsNotNull(result);
            Assert.AreSame(process, result);
        }
Exemple #26
0
        public void Resume_DoesNothingIfRunning()
        {
            var proc = new ProcessStub(1);

            proc.Initialize();
            proc.Resume();
            var resumeEvent = false;

            proc.Resumed += (sender, args) => resumeEvent = true;

            proc.Resume();

            Assert.AreEqual(1, proc.DoResumeCallCount); // one call to start running
            Assert.IsFalse(resumeEvent);
            Assert.IsTrue(proc.IsRunning);
        }
Exemple #27
0
        public void Update_RemovesAbortedProcess()
        {
            var pm = new ProcessManager();

            pm.Initialize();
            pm.PostInitialize();
            var process = new ProcessStub(1);

            process.Initialize();
            pm.AddProcess(process);
            const float time = 1.0f;

            process.Abort();
            pm.Update(time);

            Assert.IsEmpty(pm.Processes);
        }
Exemple #28
0
        public void Update_UpdatesRunningProcess()
        {
            var pm = new ProcessManager();

            pm.Initialize();
            pm.PostInitialize();
            var process = new ProcessStub(1);

            process.Initialize();
            pm.AddProcess(process);
            process.Resume();
            const float time = 1.0f;

            pm.Update(time);

            Assert.AreEqual(1, process.DoUpdateCallCount);
            Assert.AreEqual(time, process.LastUpdateDeltaTime);
        }
Exemple #29
0
        public void AddProcess_RejectsDuplicateProcessId()
        {
            var pm = new ProcessManager();

            pm.Initialize();
            pm.PostInitialize();
            var process1 = new ProcessStub(1);

            process1.Initialize();
            var process2 = new ProcessStub(1);

            process2.Initialize();
            pm.AddProcess(process1);

            TestDelegate func = () => pm.AddProcess(process2);

            Assert.Throws <InvalidOperationException>(func);
            Assert.AreEqual(1, pm.Processes.Count);
        }
Exemple #30
0
        public void GetProcesses_FindsProcessesByMostDerived()
        {
            var pm = new ProcessManager();

            pm.Initialize();
            pm.PostInitialize();
            var process1 = new ProcessStub(1);

            process1.Initialize();
            pm.AddProcess(process1);
            var process2 = new ProcessStub2(2);

            process2.Initialize();
            pm.AddProcess(process2);

            var result = pm.GetProcesses <ProcessStub2>().ToList();

            Assert.AreEqual(1, result.Count);
            Assert.IsNotNull(result.Single(p => ReferenceEquals(p, process2)));
        }