public void DisposesJobObject_ThisEnsuresWeCanDeleteTheDirectory()
            {
                Container.Destroy();

                JobObject.Received(1).TerminateProcessesAndWait();
                JobObject.Received(1).Dispose();
            }
            public void ProxiesToJobObject()
            {
                var priority = ProcessPriorityClass.RealTime;

                this.Container.SetPriorityClass(priority);
                JobObject.Received(1).SetPriorityClass(priority);
            }
            public void ProxiesToJobObject()
            {
                uint processLimit = 8765;

                this.Container.SetActiveProcessLimit(processLimit);
                JobObject.Received(1).SetActiveProcessLimit(processLimit);
            }
            public void WhenContainerStopAllThrows_CallsJobobjectTerminate()
            {
                ConstrainedProcessRunner
                .When(x => x.StopAll(true))
                .Do(x => { throw new TimeoutException("Test timeout exception"); });

                Container.Stop(true);

                JobObject.Received(1).TerminateProcessesAndWait();
            }
            public void SetsJobCpuLimit()
            {
                Container.LimitCpu(5);

                JobObject.Received(1).SetJobCpuLimit(5);
            }
            public void SetsJobMemoryLimit()
            {
                Container.LimitMemory(2048);

                JobObject.Received(1).SetJobMemoryLimit(2048);
            }
            public void TerminatesProcessesInJobObject()
            {
                Client.Shutdown();

                JobObject.Received(1).TerminateProcessesAndWait(Timeout.Infinite);
            }