Esempio n. 1
0
        public void ValidateSampleTwoFrom9To6()
        {
            var one    = new DirectionalNode("1");
            var two    = new DirectionalNode("2");
            var three  = new DirectionalNode("3");
            var four   = new DirectionalNode("4");
            var five   = new DirectionalNode("5");
            var six    = new DirectionalNode("6");
            var seven  = new DirectionalNode("7");
            var height = new DirectionalNode("8");
            var nine   = new DirectionalNode("9");
            var ten    = new DirectionalNode("10");

            one.ConnectTo(two, 10);
            one.ConnectTo(four, 20);
            one.ConnectTo(five, 20);
            one.ConnectTo(six, 5);
            one.ConnectTo(seven, 15);

            two.ConnectTo(four, 10);
            two.ConnectTo(three, 5);

            three.ConnectTo(four, 5);
            three.ConnectTo(two, 15);

            four.ConnectTo(five, 10);

            five.ConnectTo(six, 5);

            seven.ConnectTo(six, 10);

            height.ConnectTo(one, 5);
            height.ConnectTo(two, 20);
            height.ConnectTo(seven, 5);

            nine.ConnectTo(two, 15);
            nine.ConnectTo(height, 20);
            nine.ConnectTo(ten, 10);

            ten.ConnectTo(two, 5);
            ten.ConnectTo(three, 15);

            var dijkstra = new Dijkstra.Dijkstra();
            var result   = dijkstra.FindShortestPath(nine, six);

            Assert.NotNull(result);
            Assert.Equal(4, result.Length);
        }
Esempio n. 2
0
        public void ValidateSampleOneFromAToF()
        {
            var a = new SimpleNode("A");
            var b = new SimpleNode("B");
            var c = new SimpleNode("C");
            var d = new SimpleNode("D");
            var e = new SimpleNode("E");
            var f = new SimpleNode("F");

            a.ConnectTo(b, 4);
            a.ConnectTo(c, 2);
            b.ConnectTo(c, 1);
            b.ConnectTo(d, 5);
            c.ConnectTo(d, 8);
            c.ConnectTo(e, 10);
            d.ConnectTo(f, 6);
            d.ConnectTo(e, 2);
            e.ConnectTo(f, 2);

            var dijkstra = new Dijkstra.Dijkstra();
            var result   = dijkstra.FindShortestPath(a, f);

            Assert.NotNull(result);
            Assert.Equal(6, result.Length);
            Assert.Equal("A", result[0].Label);
            Assert.Equal("C", result[1].Label);
            Assert.Equal("B", result[2].Label);
            Assert.Equal("D", result[3].Label);
            Assert.Equal("E", result[4].Label);
            Assert.Equal("F", result[5].Label);

            var weight = 0;

            for (var i = 0; i < result.Length; i++)
            {
                var currentWeight = 0;
                if (i < result.Length - 1)
                {
                    currentWeight = result[i].Neighbors
                                    .Single(n => n.Node.Label.Equals(result[i + 1].Label))
                                    .WeightToNode;
                }
                weight += currentWeight;
            }

            Assert.Equal(12, weight);
        }