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]); }
public void Throws_On_Circular_References() { Should.Throw <CakeException>(() => _graph.Traverse("circ-c", (nodeName, cts) => Task.CompletedTask)); }