public void TestGraphWithTwoMines() { var graph = new Graph(); graph.AddVertex(1); graph.AddVertex(2); graph.AddVertex(3, true); graph.AddVertex(4, true); graph.AddVertex(5); graph.AddVertex(100); graph.AddEdge(1, 4); graph.AddEdge(1, 2); graph.AddEdge(1, 3); graph.AddEdge(2, 3); graph.AddEdge(3, 5); var calculator = new MineDistCalculator(graph); Assert.AreEqual(1, calculator.GetDist(3, 1)); Assert.AreEqual(1, calculator.GetDist(3, 2)); Assert.AreEqual(0, calculator.GetDist(3, 3)); Assert.AreEqual(2, calculator.GetDist(3, 4)); Assert.AreEqual(1, calculator.GetDist(3, 5)); Assert.AreEqual(1, calculator.GetDist(4, 1)); Assert.AreEqual(2, calculator.GetDist(4, 2)); Assert.AreEqual(2, calculator.GetDist(4, 3)); Assert.AreEqual(0, calculator.GetDist(4, 4)); Assert.AreEqual(3, calculator.GetDist(4, 5)); calculator.GetReversedPath(4, 5).ShouldBe(new[] { 5, 3, 1, 4 }); calculator.GetReversedPath(3, 2).ShouldBe(new[] { 2, 3 }); calculator.GetReversedPath(3, 3).ShouldBe(new[] { 3 }); calculator.GetReversedPath(4, 100).ShouldBeEmpty(); }
public void TestDisjoint() { var graph = new Graph(); graph.AddVertex(1, true); graph.AddVertex(2); var calculator = new MineDistCalculator(graph); Assert.AreEqual(-1, calculator.GetDist(1, 2)); }