public void Normal_directed_connected_graph() { var result = new TopographicalSorting().FindOrdering(new[] { // // 0 --> 1 ---> 5 --> 6 // --> 2 ---> 3 --^ ^ // ---> 4 --- ^ // new[] { 1, 2 }, // node 0 new[] { 2 }, // node 1 new[] { 3, 4 }, // node 2 new[] { 5 }, // node 3 new[] { 5 }, // node 4 new[] { 6 }, // node 5 new int[] { } // node 6 }); result[0].Should().Be(1); result[1].Should().Be(2); result[2].Should().Be(3); result[3].Should().Be(5); result[4].Should().Be(4); result[5].Should().Be(6); result[6].Should().Be(7); result.Should().HaveCount(7); }
public void What_happens_when_loop() { var result = new TopographicalSorting().FindOrdering(new[] { // // 0 --> 1 ---> 5 --> 6 // ^ --> 2 --> 4 --- ^ // ^ --> 3- -- // ---------- loop 3 to 0 // new[] { 1, 2 }, // node 0 new[] { 2 }, // node 1 new[] { 3, 4 }, // node 2 new[] { 2 }, // node 3 new[] { 5 }, // node 4 new[] { 6 }, // node 5 new int[] { } // node 6 }); result[0].Should().Be(1); result[1].Should().Be(2); result[2].Should().Be(3); result[3].Should().Be(5); result[4].Should().Be(4); result[5].Should().Be(6); result[6].Should().Be(7); result.Should().HaveCount(7); }
public void Test_null_graph_returns_empty_result() { var result = new TopographicalSorting().FindOrdering(null); result.Length.Should().Be(0); }
public void One_node() { var result = new TopographicalSorting().FindOrdering(new[] { new int[] { } }); result[0].Should().Be(1); result.Length.Should().Be(1); }
public void Two_nodes() { var result = new TopographicalSorting().FindOrdering(new[] { new[] { 1 }, // 0 new int[] { } // 1 }); result[0].Should().Be(1); result[1].Should().Be(2); }