Esempio n. 1
0
            public void Should_Execute_Parallel_Tasks_In_Parallel()
            {
                // Given
                var result  = new List <string>();
                var fixture = new CakeEngineFixture();
                var engine  = fixture.CreateParallelEngine();

                engine.RegisterTask("A").Does(() => result.Add("A"));

                var semaphore = new SemaphoreSlim(1);

                engine.RegisterTask("B").IsDependentOn("A").Does(() => { result.Add("B"); semaphore.Wait(); });
                engine.RegisterTask("C").IsDependentOn("A").Does(() => { result.Add("C"); semaphore.Release(); });

                engine.RegisterTask("D").IsDependentOn("B").IsDependentOn("C").Does(() => result.Add("D"));

                // When
                engine.RunTarget(fixture.Context, fixture.ExecutionStrategy, "D");

                // Then
                Assert.Equal(4, result.Count);
                Assert.Equal("A", result[0]);

                Assert.True(result[1] == "B" || result[2] == "B");
                Assert.True(result[1] == "C" || result[2] == "C");

                Assert.Equal("D", result[3]);
            }
Esempio n. 2
0
                public void Should_Throw_If_Target_Is_Null()
                {
                    // Given
                    var fixture = new CakeEngineFixture();
                    var engine  = fixture.CreateParallelEngine();

                    // When
                    var result = Record.Exception(() =>
                                                  engine.RunTarget(fixture.Context, fixture.ExecutionStrategy, null));

                    // Then
                    Assert.IsArgumentNullException(result, "target");
                }
Esempio n. 3
0
            public void Should_Throw_If_Log_Is_Null()
            {
                // Given
                var fixture = new CakeEngineFixture {
                    Log = null
                };

                // When
                var result = Record.Exception(() => fixture.CreateParallelEngine());

                // Then
                Assert.IsArgumentNullException(result, "log");
            }
Esempio n. 4
0
            public void Should_Execute_Sequential_Tasks_In_Order()
            {
                // Given
                var result  = new List <string>();
                var fixture = new CakeEngineFixture();
                var engine  = fixture.CreateParallelEngine();

                engine.RegisterTask("A").Does(() => result.Add("A"));
                engine.RegisterTask("B").IsDependentOn("A").Does(() => result.Add("B"));
                engine.RegisterTask("C").IsDependentOn("B").Does(() => result.Add("C"));

                // When
                engine.RunTarget(fixture.Context, fixture.ExecutionStrategy, "C");

                // Then
                Assert.Equal(3, result.Count);
                Assert.Equal("A", result[0]);
                Assert.Equal("B", result[1]);
                Assert.Equal("C", result[2]);
            }