public async Task TwoNodes_BackAndForth() { var tester = new NavigatorTester(); tester.AddNode("n1", "r1"); tester.AddNode("n2", "r2"); for (var n = 1; n <= 3; n++) { await tester.MoveAsync(true, "n1"); await tester.MoveAsync(false, "r1", null); await tester.MoveAsync(true, "n1", "n2"); await tester.MoveAsync(false, "r2", "r1", null); await tester.MoveAsync(true, "n1", "n2", null); await tester.MoveAsync(false, "r2"); await tester.MoveAsync(true, "n2", null); await tester.MoveAsync(false, "r2", "r1"); await tester.MoveAsync(true, "n1", "n2", null); await tester.MoveAsync(false, "r2", "r1", null); } }
public async void ThreeNodes() { var tester = new NavigatorTester(); var isValid1 = false; tester.AddNode("n1", "r1", () => isValid1); var isValid2 = false; tester.AddNode("n2", "r2", () => isValid2); var isValid3 = false; tester.AddNode("n3", "r3", () => isValid3); for (var n = 1; n <= 3; n++) { isValid1 = isValid2 = isValid3 = false; await tester.MoveAsync(true, null); await tester.MoveAsync(false, null); isValid1 = true; await tester.MoveAsync(true, "n1", null); await tester.MoveAsync(false, "r1", null); isValid2 = true; await tester.MoveAsync(true, "n1", "n2", null); await tester.MoveAsync(false, "r2", "r1", null); isValid3 = true; await tester.MoveAsync(true, "n1", "n2", "n3", null); await tester.MoveAsync(false, "r3", "r2", "r1", null); isValid2 = false; await tester.MoveAsync(true, "n1", "n3", null); await tester.MoveAsync(false, "r3", "r1", null); isValid1 = false; await tester.MoveAsync(true, "n3", null); await tester.MoveAsync(false, "r3", null); isValid2 = true; isValid3 = true; await tester.MoveAsync(true, "n2", "n3", null); await tester.MoveAsync(false, "r3", "r2", null); } }
public async Task ThreeNodes() { var tester = new NavigatorTester(); tester.AddNode("n1", "r1"); tester.AddNode("n2", "r2"); tester.AddNode("n3", "r3"); for (var n = 1; n <= 3; n++) { await tester.MoveAsync(true, "n1", "n2", "n3", null); await tester.MoveAsync(false, "r3", "r2", "r1", null); } }
public async void SingleNode_BackAndForth() { var tester = new NavigatorTester(); var isValid = false; tester.AddNode("normal", "reversed", () => isValid); for (var n = 1; n <= 3; n++) { isValid = false; await tester.MoveAsync(true, null); await tester.MoveAsync(false, null); isValid = true; await tester.MoveAsync(true, "normal"); await tester.MoveAsync(false, "reversed", null); await tester.MoveAsync(true, "normal", null); await tester.MoveAsync(false, "reversed"); await tester.MoveAsync(true, "normal", null); await tester.MoveAsync(false, "reversed", null); } }
public async Task RepeatMultipleNodes() { var tester = new NavigatorTester(); var @while = A.Fake <ICondition>(i => i.Strict()); A.CallTo(() => @while.Evaluate(tester.Context.Variables)) .ReturnsNextFromSequence(true, false); A.CallTo(() => tester.Block.While).Returns(@while); tester.AddNode("N1", "R1"); tester.AddNode("N2", "R2"); tester.AddNode("N3", "R3"); await tester.MoveAsync(true, "N1", "N2", "N3", "N1", "N2", "N3", null); await tester.MoveAsync(false, "R3", "R2", "R1", "R3", "R2", "R1", null); }
public async Task IgnoreNodeWhenChildBlockWhileReturnsFalse() { var tester = new NavigatorTester(); var @while = A.Fake <ICondition>(i => i.Strict()); A.CallTo(() => @while.Evaluate(tester.Context.Variables)) .Returns(false); tester.AddNode("N1", "R1"); tester.AddNode("N2", "R2").ConfigureChildBlock( i => A.CallTo(() => i.While).Returns(@while) ); tester.AddNode("N3", "R3"); await tester.MoveAsync(true, "N1", "N3", null); await tester.MoveAsync(false, "R3", "R1", null); }
public async void TwoNodes_BackAndForth() { var tester = new NavigatorTester(); var isValid = false; tester.AddNode("n1", "r1"); tester.AddNode("n2", "r2", () => isValid); for (var n = 1; n <= 3; n++) { isValid = false; await tester.MoveAsync(true, "n1", null); await tester.MoveAsync(false, "r1", null); isValid = true; await tester.MoveAsync(true, "n1"); await tester.MoveAsync(false, "r1", null); await tester.MoveAsync(true, "n1", "n2"); await tester.MoveAsync(false, "r2", "r1", null); await tester.MoveAsync(true, "n1", "n2", null); await tester.MoveAsync(false, "r2"); await tester.MoveAsync(true, "n2", null); await tester.MoveAsync(false, "r2", "r1"); await tester.MoveAsync(true, "n1", "n2", null); await tester.MoveAsync(false, "r2", "r1", null); } }
public async Task CorrectSequenceOnMovePreviousWithThreeNodes() { var tester = new NavigatorTester(); tester.AddNode("n1", "r1"); tester.AddNode("n2", "r2"); tester.AddNode("n3", "r3"); await tester.MoveAsync(true, "n1", "n2", "n3", null); tester.CurrentNodeIndex.Should().BeNull(); await tester.MoveAsync(false, "r3"); tester.CurrentNodeIndex.Should().Be(1); await tester.MoveAsync(false, "r2"); tester.CurrentNodeIndex.Should().Be(0); await tester.MoveAsync(true, "n2", "n3", null); }
public async Task SingleNode_BackAndForth() { var tester = new NavigatorTester(); tester.AddNode("normal", "reversed"); await tester.MoveAsync(true, "normal"); await tester.MoveAsync(false, "reversed", null); await tester.MoveAsync(true, "normal", null); await tester.MoveAsync(false, "reversed"); await tester.MoveAsync(true, "normal", null); await tester.MoveAsync(false, "reversed", null); }
public async void SingleNode() { var tester = new NavigatorTester(); var isValid = false; tester.AddNode("normal", "reversed", () => isValid); isValid = false; await tester.MoveAsync(true, null); await tester.MoveAsync(false, null); isValid = true; await tester.MoveAsync(true, "normal", null); await tester.MoveAsync(false, "reversed", null); }
public async void ConditionsShouldNotAffectBackwardsMotion() { var tester = new NavigatorTester(); var isValid = false; tester.AddNode("normal", "reversed", () => isValid); isValid = false; await tester.MoveAsync(true, null); isValid = true; await tester.MoveAsync(false, null); // Unaffected by condition await tester.MoveAsync(true, "normal", null); isValid = false; await tester.MoveAsync(false, "reversed", null); // Unaffected by condition }
public async Task CorrectSequenceOnMovePrevious() { var tester = new NavigatorTester(); tester.AddNode("normal", "reversed"); await tester.MoveAsync(true, "normal"); tester.CurrentNodeIndex.Should().Be(0); await tester.MoveAsync(true, null); tester.CurrentNodeIndex.Should().BeNull(); await tester.MoveAsync(false, "reversed"); tester.CurrentNodeIndex.Should().BeNull(); await tester.MoveAsync(true, "normal"); tester.CurrentNodeIndex.Should().Be(0); await tester.MoveAsync(false, "reversed"); tester.CurrentNodeIndex.Should().BeNull(); await tester.MoveAsync(false, null); tester.CurrentNodeIndex.Should().BeNull(); await tester.MoveAsync(true, "normal"); tester.CurrentNodeIndex.Should().Be(0); await tester.MoveAsync(true, null); tester.CurrentNodeIndex.Should().BeNull(); }