public async void Parent_Pipeline_Cancels_Execution_When_Child_Pipeline_Node_Cancelled() { var testNode1 = new SimpleTestNodeA1(); var testNode2 = new SimpleTestNodeA1(true, false, true); var testNode3 = new SimpleTestNodeA2(); var innerPipelineNode = new PipelineNode <TestObjectA>(); innerPipelineNode.AddChild(testNode1); innerPipelineNode.AddChild(testNode2); var pipelineNode = new PipelineNode <TestObjectA>(); pipelineNode.AddChild(innerPipelineNode); pipelineNode.AddChild(testNode3); var testObject = new TestObjectA(); NodeResult result = await pipelineNode.ExecuteAsync(testObject); result.Status.ShouldEqual(NodeResultStatus.Succeeded); innerPipelineNode.Status.ShouldEqual(NodeRunStatus.Completed); testNode1.Status.ShouldEqual(NodeRunStatus.Completed); testNode2.Status.ShouldEqual(NodeRunStatus.NotRun); pipelineNode.Status.ShouldEqual(NodeRunStatus.Completed); testNode3.Status.ShouldEqual(NodeRunStatus.NotRun); }
public async Task Pipeline_Overall_Result_Subject_Equals_Last_Changed_Subject() { var pipelineNode = new PipelineNode <TestObjectA>(); var node1 = new SimpleTestNodeA1(); var node2 = new SubjectChangingNode1(); var node3 = new SimpleTestNodeA2(); var node4 = new SubjectChangingNode1(); pipelineNode.AddChild(node1); pipelineNode.AddChild(node2); pipelineNode.AddChild(node3); pipelineNode.AddChild(node4); var testObject = new TestObjectA(); NodeResult result = await pipelineNode.ExecuteAsync(testObject); pipelineNode.Status.Should().Be(NodeRunStatus.Completed); var childResults = result.ChildResults.ToList(); result.Subject.Should().NotBeSameAs(testObject); result.Subject.Should().NotBeSameAs(childResults[1].Subject); result.Subject.Should().NotBeSameAs(childResults[2].Subject); result.Subject.Should().BeSameAs(childResults[3].Subject); }
public async void Subject_Of_Inherited_Type_Is_Passed_To_Execute() { var testNode = new SimpleTestNodeA1(); var testObject = new TestObjectASub(); var result = await testNode.ExecuteAsync(testObject); testNode.Status.ShouldEqual(NodeRunStatus.Completed); result.Status.ShouldEqual(NodeResultStatus.Succeeded); }
public async Task Successful_Node_Run_Status_Is_Completed_When_Fewer_Subjects_Than_DegreeOfParallelism() { var testNode = new SimpleTestNodeA1(); var testObjectList = GetTestObjects(2); var result = await testNode.ExecuteManyAsync(testObjectList, new ExecutionOptions { DegreeOfParallelism = 4 }); result.Status.Should().Be(NodeResultStatus.Succeeded); result.Exception.Should().BeNull(); testNode.Status.Should().Be(NodeRunStatus.Completed); }
public async void Successful_Node_Run_Status_Is_Completed() { var testNode = new SimpleTestNodeA1(); var testObjectList = GetTestObjects(100); var result = await testNode.ExecuteManyAsync(testObjectList, new ExecutionOptions { DegreeOfParallelism = 4 }); result.Status.ShouldEqual(NodeResultStatus.Succeeded); result.Exception.ShouldBeNull(); testNode.Status.ShouldEqual(NodeRunStatus.Completed); }
public async void Successful_Node_Run_Status_Is_Completed() { var testNode = new SimpleTestNodeA1(); var testObject = new TestObjectA(); var context = new ExecutionContext <TestObjectA>(testObject); var result = await testNode.ExecuteAsync(context); testNode.Status.ShouldEqual(NodeRunStatus.Completed); }
public async Task ExecutionContext_Based_On_Inherited_Type_Is_Passed_To_Execute() { var testNode = new SimpleTestNodeA1(); var testObject = new TestObjectASub(); var context = new ExecutionContext <TestObjectASub>(testObject); var result = await testNode.ExecuteAsync(context); testNode.Status.Should().Be(NodeRunStatus.Completed); result.Status.Should().Be(NodeResultStatus.Succeeded); }
public async void ExecutionContext_Based_On_Root_Type_Works_With_Inherited_Type() { var testNode = new SimpleTestNodeA1(); var testObject = new TestObjectASub(); var context = new ExecutionContext <TestObjectA>(testObject); var result = await testNode.ExecuteAsync(context); testNode.Status.ShouldEqual(NodeRunStatus.Completed); result.Status.ShouldEqual(NodeResultStatus.Succeeded); }
public async void Node_Is_Not_Run_If_ShouldExecute_False() { var testNode = new SimpleTestNodeA1(false); var testObject = new TestObjectA(); var context = new ExecutionContext <TestObjectA>(testObject); var result = await testNode.ExecuteAsync(context); result.Status.ShouldEqual(NodeResultStatus.NotRun); context.Subject.TestValueString.ShouldBeNull(); }
public void Node_Specific_Options_Override_Global_Options() { var testNode = new SimpleTestNodeA1(); var testObject = new TestObjectA(); var context = new ExecutionContext <TestObjectA>(testObject); testNode.LocalOptions = new ExecutionOptions { ThrowOnError = true }; testNode.GetEffectiveOptions(context.GlobalOptions).ThrowOnError.ShouldEqual(true); }
public async void Global_Options_Are_Reflected_In_Effective_Options() { var testNode = new SimpleTestNodeA1(); var testObject = new TestObjectA(); var context = new ExecutionContext <TestObjectA>(testObject) { GlobalOptions = { ThrowOnError = true } }; var result = await testNode.ExecuteAsync(context); testNode.GetEffectiveOptions(context.GlobalOptions).ThrowOnError.ShouldEqual(true); }
public async void Successful_Node_Result_Matches_Expectations() { var testNode = new SimpleTestNodeA1(); var testObject = new TestObjectA(); var context = new ExecutionContext <TestObjectA>(testObject); var result = await testNode.ExecuteAsync(context); result.Status.ShouldEqual(NodeResultStatus.Succeeded); result.Exception.ShouldEqual(null); result.Id.ShouldEqual(testNode.Id); context.Subject.TestValueString.ShouldEqual("Completed"); }
public async Task Successful_Sync_Node_Run_Status_Is_Completed() { var testNode = new SimpleTestNodeA1(); var testObject1 = new TestObjectA(); var testObject2 = new TestObjectA(); var testObjectList = new List <TestObjectA> { testObject1, testObject2 }; var result = await testNode.ExecuteManySeriallyAsync(testObjectList); result.Status.Should().Be(NodeResultStatus.Succeeded); result.Exception.Should().BeNull(); testNode.Status.Should().Be(NodeRunStatus.Completed); }
public async Task Can_Add_Base_Type_Nodes_To_Inherited_Type_Pipeline() { var testNode = new SimpleTestNodeA1(); var testNode2 = new SimpleTestNodeASub1(); var pipeline = new PipelineNode <TestObjectASub>(); pipeline.AddChild(testNode); pipeline.AddChild(testNode2); var testObject = new TestObjectASub(); var result = await pipeline.ExecuteAsync(testObject); testNode.Status.Should().Be(NodeRunStatus.Completed); result.Status.Should().Be(NodeResultStatus.Succeeded); }
public async Task ShouldExecuteFunc_On_Test_Object_Is_Evaluated() { var testNode = new SimpleTestNodeA1(); var testNode2 = new SimpleTestNodeASub1(); testNode2.AddShouldExecute(context => Task.FromResult(context.Subject.TestValueDecimal == 1)); var pipeline = new PipelineNode <TestObjectASub>(); pipeline.AddChild(testNode); pipeline.AddChild(testNode2); var testObject = new TestObjectASub(); var result = await pipeline.ExecuteAsync(testObject); testNode.Status.Should().Be(NodeRunStatus.Completed); testNode2.Status.Should().Be(NodeRunStatus.NotRun); }
public async void When_Cancelling_Pipeline_At_First_Node_Then_Status_Is_NotRun() { var pipelineNode = new PipelineNode <TestObjectA>(); var testNode1 = new SimpleTestNodeA1(true, false, true); var testNode2 = new SimpleTestNodeA2(); pipelineNode.AddChild(testNode1); pipelineNode.AddChild(testNode2); var testObject = new TestObjectA(); NodeResult result = await pipelineNode.ExecuteAsync(testObject); result.Status.ShouldEqual(NodeResultStatus.NotRun); pipelineNode.Status.ShouldEqual(NodeRunStatus.Completed); testNode1.Status.ShouldEqual(NodeRunStatus.NotRun); testNode2.Status.ShouldEqual(NodeRunStatus.NotRun); }
public async void Group_Overall_Result_Subject_Equals_Changed_Subject() { var groupNode = new GroupNode <TestObjectA>(); var node1 = new SimpleTestNodeA1(); var node2 = new SubjectChangingNode1(); var node3 = new SimpleTestNodeA2(); groupNode.AddChild(node1); groupNode.AddChild(node2); groupNode.AddChild(node3); var testObject = new TestObjectA(); NodeResult result = await groupNode.ExecuteAsync(testObject); groupNode.Status.ShouldEqual(NodeRunStatus.Completed); var childResults = result.ChildResults.ToList(); result.Subject.ShouldNotBeSameAs(testObject); result.Subject.ShouldBeSameAs(childResults[1].Subject); }
public async Task When_Cancelling_Pipeline_At_Later_Node_Then_Status_Is_Success() { var pipelineNode = new PipelineNode <TestObjectA>(); var testNode1 = new SimpleTestNodeA1(); var testNode2 = new SimpleTestNodeA1(true, false, true); var testNode3 = new SimpleTestNodeA2(); pipelineNode.AddChild(testNode1); pipelineNode.AddChild(testNode2); pipelineNode.AddChild(testNode3); var testObject = new TestObjectA(); NodeResult result = await pipelineNode.ExecuteAsync(testObject); result.Status.Should().Be(NodeResultStatus.Succeeded); pipelineNode.Status.Should().Be(NodeRunStatus.Completed); testNode1.Status.Should().Be(NodeRunStatus.Completed); testNode2.Status.Should().Be(NodeRunStatus.NotRun); testNode3.Status.Should().Be(NodeRunStatus.NotRun); }
public async Task Successful_FirstMatch_Node_Runs_Second_Node_When_First_Not_Matched() { var matchNode = new FirstMatchNode <TestObjectA>(); var firstNode = new SimpleTestNodeA1(false); matchNode.AddChild(firstNode); var secondNode = new SimpleTestNodeA2(); matchNode.AddChild(secondNode); var testObject = new TestObjectA(); NodeResult result = await matchNode.ExecuteAsync(testObject); matchNode.Status.Should().Be(NodeRunStatus.Completed); firstNode.Status.Should().Be(NodeRunStatus.NotRun); secondNode.Status.Should().Be(NodeRunStatus.Completed); result.Status.Should().Be(NodeResultStatus.Succeeded); testObject.TestValueString.Should().BeNull(); testObject.TestValueInt.Should().Be(100); }
public async void Pipeline_Node_Results_Following_Subject_Change_Node_Return_Changed_Subject() { var pipelineNode = new PipelineNode <TestObjectA>(); var node1 = new SimpleTestNodeA1(); var node2 = new SubjectChangingNode1(); var node3 = new SimpleTestNodeA2(); pipelineNode.AddChild(node1); pipelineNode.AddChild(node2); pipelineNode.AddChild(node3); var testObject = new TestObjectA(); NodeResult result = await pipelineNode.ExecuteAsync(testObject); pipelineNode.Status.ShouldEqual(NodeRunStatus.Completed); var childResults = result.ChildResults.ToList(); childResults[0].Subject.ShouldBeSameAs(testObject); childResults[1].Subject.ShouldNotBeSameAs(testObject); childResults[2].Subject.ShouldNotBeSameAs(testObject); childResults[1].Subject.ShouldEqual(childResults[2].Subject); }
public void Initial_Node_Run_Status_Is_NotRun() { var testNode = new SimpleTestNodeA1(); testNode.Status.ShouldEqual(NodeRunStatus.NotRun); }