public void GivenActivate_WhenProcessAndNoActivationTime_ActivatesProcessImmediately_Test()
        {
            var process = new StatisticProcess();

            CreateBuilder()
            .Activate(() => process)
            .Simulate(TimeSpan.FromSeconds(5));

            Assert.Equal(TimeSpan.Zero, process.ActivationTime);
        }
        public void GivenActivate_WhenProcessAndActivationTime_ActivatesProcessAtActivationTime_Test()
        {
            var process = new StatisticProcess();
            var expectedActivationTime = TimeSpan.FromSeconds(1);

            CreateBuilder()
            .Activate(() => process, expectedActivationTime)
            .Simulate(TimeSpan.FromSeconds(5));

            Assert.Equal(expectedActivationTime, process.ActivationTime);
        }
        public void GivenActivateRange_WhenProcessesAndActivationTime_ActivatesProcessesAtActivationTime_Test()
        {
            var process1 = new StatisticProcess();
            var process2 = new StatisticProcess();
            var expectedActivationTime = TimeSpan.FromSeconds(1);
            var factories = new Func <Process <SimulationEnvironment> >[]
            {
                () => process1,
                () => process2
            };

            CreateBuilder()
            .ActivateRange(factories, expectedActivationTime)
            .Simulate(TimeSpan.FromSeconds(5));

            Assert.Equal(expectedActivationTime, process1.ActivationTime);
            Assert.Equal(expectedActivationTime, process2.ActivationTime);
        }