public void Should_Return_Empty_If_No_Nodes()
            {
                // Given
                var graph = new CakeGraph();

                // When
                var result = graph.Traverse("D").ToArray();

                // Then
                Assert.Equal(0, result.Length);
            }
            public void Should_Return_Empty_If_Not_Found()
            {
                var graph = new CakeGraph();

                graph.Connect("A", "B");
                graph.Connect("B", "C");

                var result = graph.Traverse("E").ToArray();

                Assert.Equal(0, result.Length);
            }
            public void Should_Throw_If_Encountering_Circular_Reference()
            {
                var graph = new CakeGraph();

                graph.Connect("A", "B");
                graph.Connect("B", "C");
                graph.Connect("C", "A");

                var result = Record.Exception(() => graph.Traverse("C"));

                Assert.IsType <CakeException>(result);
                Assert.Equal("Graph contains circular references.", result.Message);
            }
            public void Should_Not_Group_NonParallel_Nodes()
            {
                var graph = new CakeGraph();

                graph.Connect("A", "B");
                graph.Connect("B", "C");

                var result = graph.Traverse("C").ToArray();

                Assert.Equal(3, result.Length);
                Assert.Equal("A", result[0]);
                Assert.Equal("B", result[1]);
                Assert.Equal("C", result[2]);
            }
            public void Should_Return_Empty_Collection_Of_Nodes_If_Target_Was_Not_Found()
            {
                // Given
                var graph = new CakeGraph();

                graph.Connect("A", "B");
                graph.Connect("C", "D");
                graph.Connect("B", "C");

                // When
                var result = graph.Traverse("E").ToArray();

                // Then
                Assert.Equal(0, result.Length);
            }
            public void Should_Traverse_Graph_In_Correct_Order_Regardless_Of_Casing_Of_Root()
            {
                // Given
                var graph = new CakeGraph();

                graph.Connect("A", "B");
                graph.Connect("C", "D");
                graph.Connect("B", "C");

                // When
                var result = graph.Traverse("d").ToArray();

                // Then
                Assert.Equal(4, result.Length);
                Assert.Equal("A", result[0]);
                Assert.Equal("B", result[1]);
                Assert.Equal("C", result[2]);
                Assert.Equal("d", result[3]);
            }
            public void Should_Skip_Nodes_That_Are_Not_On_The_Way_To_The_Target()
            {
                // Given
                var graph = new CakeGraph();

                graph.Connect("A", "B");
                graph.Connect("B", "C");
                graph.Connect("B", "D");
                graph.Connect("D", "E");

                // When
                var result = graph.Traverse("E").ToArray();

                // Then
                Assert.Equal(4, result.Length);
                Assert.Equal("A", result[0]);
                Assert.Equal("B", result[1]);
                Assert.Equal("D", result[2]);
                Assert.Equal("E", result[3]);
            }
Exemple #8
0
 public void Throws_On_Circular_References()
 {
     Should.Throw <CakeException>(() => _graph.Traverse("circ-c", (nodeName, cts) => Task.CompletedTask));
 }