예제 #1
0
        private static void AssertTrackZ(WaypointList wptList)
        {
            var edge        = wptList.GetEdge(GetEdgeIndex("NATZ", "SOORY", wptList));
            var expectedDis = new ICoordinate[]
            {
                wptList[wptList.FindById("SOORY")],
                new LatLon(42.0, -50.0),
                new LatLon(44.0, -40.0),
                new LatLon(44.0, -30.0),
                new LatLon(46.0, -20.0),
                new LatLon(46.0, -15.0),
                wptList[wptList.FindById("SEPAL")],
                wptList[wptList.FindById("LAPEX")]
            }.TotalDistance();

            // Distance
            Assert.AreEqual(expectedDis, edge.Value.Distance, 0.01);

            // Start, end waypoints are correct
            Assert.IsTrue(wptList[edge.FromNodeIndex].ID == "SOORY");
            Assert.IsTrue(wptList[edge.ToNodeIndex].ID == "LAPEX");

            // Start, end waypoints are connected
            Assert.IsTrue(wptList.EdgesFromCount(edge.FromNodeIndex) > 0);
            Assert.IsTrue(wptList.EdgesToCount(edge.ToNodeIndex) > 0);

            // Airway is correct
            Assert.IsTrue(edge.Value.Airway == "NATZ");
        }
예제 #2
0
        private static void AssertTrackJ(WaypointList wptList)
        {
            var edge = wptList.GetEdge(GetEdgeIndex("PACOTJ", "ALCOA", wptList));

            // Distance
            var expectedDis = new ICoordinate[]
            {
                wptList[wptList.FindById("ALCOA")],
                wptList[wptList.FindById("CEPAS")],
                wptList[wptList.FindById("COBAD")],
                new LatLon(41, -140),
                new LatLon(42, -150),
                new LatLon(40, -160),
                new LatLon(37, -170),
                new LatLon(33, 180),
                new LatLon(29, 170),
                new LatLon(27, 160),
                new LatLon(26, 150),
                new LatLon(27, 140),
                wptList[wptList.FindById("BIXAK")]
            }.TotalDistance();

            Assert.AreEqual(expectedDis, edge.Value.Distance, 0.01);

            // Start, end waypoints are correct
            Assert.IsTrue(wptList[edge.FromNodeIndex].ID == "ALCOA");
            Assert.IsTrue(wptList[edge.ToNodeIndex].ID == "BIXAK");

            // Start, end waypoints are connected
            Assert.IsTrue(wptList.EdgesFromCount(edge.FromNodeIndex) > 0);
            Assert.IsTrue(wptList.EdgesToCount(edge.ToNodeIndex) > 0);

            // Airway is correct
            Assert.IsTrue(edge.Value.Airway == "PACOTJ");
        }
예제 #3
0
        private static void AssertTrackC(WaypointList wptList)
        {
            var edge = wptList.GetEdge(GetEdgeIndex("NATC", "ETARI", wptList));

            // Distance
            var expectedDis = new ICoordinate[]
            {
                wptList[wptList.FindById("ETARI")],
                new LatLon(55.5, -20),
                new LatLon(55.5, -30),
                new LatLon(55.5, -40),
                new LatLon(54.5, -50),
                wptList[wptList.FindById("MELDI")]
            }.TotalDistance();

            Assert.AreEqual(expectedDis, edge.Value.Distance, 0.01);

            // Start, end waypoints are correct
            Assert.IsTrue(wptList[edge.FromNodeIndex].ID == "ETARI");
            Assert.IsTrue(wptList[edge.ToNodeIndex].ID == "MELDI");

            // Start, end waypoints are connected
            Assert.IsTrue(wptList.EdgesFromCount(edge.FromNodeIndex) > 0);
            Assert.IsTrue(wptList.EdgesToCount(edge.ToNodeIndex) > 0);

            // Airway is correct
            Assert.IsTrue(edge.Value.Airway == "NATC");
        }
예제 #4
0
        private static void AssertTrack11(WaypointList wptList)
        {
            var edge = wptList.GetEdge(GetEdgeIndex("PACOT11", "SEALS", wptList));

            // Distance
            var expectedDis = new ICoordinate[]
            {
                wptList[wptList.FindById("SEALS")],
                new LatLon(36, 150),
                new LatLon(37, 160),
                new LatLon(36, 170),
                new LatLon(33, 180),
                new LatLon(29, -170),
                wptList[wptList.FindById("DANNO")]
            }.TotalDistance();

            Assert.AreEqual(expectedDis, edge.Value.Distance, 0.01);

            // Start, end waypoints are correct
            Assert.IsTrue(wptList[edge.FromNodeIndex].ID == "SEALS");
            Assert.IsTrue(wptList[edge.ToNodeIndex].ID == "DANNO");

            // Start, end waypoints are connected
            Assert.IsTrue(wptList.EdgesFromCount(edge.FromNodeIndex) > 0);
            Assert.IsTrue(wptList.EdgesToCount(edge.ToNodeIndex) > 0);

            // Airway is correct
            Assert.IsTrue(edge.Value.Airway == "PACOT11");
        }
예제 #5
0
        private static void AssertTrackBP14(WaypointList wptList)
        {
            var edge = wptList.GetEdge(GetEdgeIndex("AUSOTBP14", "TAXEG", wptList));

            var expectedDistance = new[]
            {
                "TAXEG",
                "PASTA",
                "TAROR",
                "WR",
                "ENTRE",
                "MALLY",
                "NSM"
            }.Select(id => wptList[wptList.FindById(id)]).TotalDistance();

            // Distance
            Assert.AreEqual(expectedDistance, edge.Value.Distance, 0.01);

            // Start, end waypoints are correct
            Assert.IsTrue(wptList[edge.FromNodeIndex].ID == "TAXEG");
            Assert.IsTrue(wptList[edge.ToNodeIndex].ID == "NSM");

            // Start, end waypoints are connected
            Assert.IsTrue(wptList.EdgesFromCount(edge.FromNodeIndex) > 0);
            Assert.IsTrue(wptList.EdgesToCount(edge.ToNodeIndex) > 0);

            // Airway is correct
            Assert.IsTrue(edge.Value.Airway == "AUSOTBP14");
        }
예제 #6
0
        private static void AssertTrackMY14(WaypointList wptList)
        {
            var edge = wptList.GetEdge(GetEdgeIndex("AUSOTMY14", "JAMOR", wptList));

            // Distance
            var expectedDistance = new[]
            {
                "JAMOR",
                "IBABI",
                "LEC",
                "OOD",
                "ARNTU",
                "KEXIM",
                "CIN",
                "ATMAP"
            }.Select(id => wptList[wptList.FindById(id)]).TotalDistance();

            Assert.AreEqual(expectedDistance, edge.Value.Distance, 0.01);

            // Start, end waypoints are correct
            Assert.IsTrue(wptList[edge.FromNodeIndex].ID == "JAMOR");
            Assert.IsTrue(wptList[edge.ToNodeIndex].ID == "ATMAP");

            // Start, end waypoints are connected
            Assert.IsTrue(wptList.EdgesFromCount(edge.FromNodeIndex) > 0);
            Assert.IsTrue(wptList.EdgesToCount(edge.ToNodeIndex) > 0);

            // Airway is correct
            Assert.IsTrue(edge.Value.Airway == "AUSOTMY14");
        }
예제 #7
0
        public void WhenRouteUseDirectAnalyzeCorrectness()
        {
            // setup
            var wpts = new[]
            {
                new Waypoint("P01", 0.0, 15.0),
                new Waypoint("P02", 0.0, 16.0),
                new Waypoint("P03", 0.5, 16.5)
            };

            var wptList = new WaypointList();

            foreach (var i in wpts)
            {
                wptList.AddWaypoint(i);
            }

            var analyzer = new BasicRouteAnalyzer(
                GetRouteString("P01", "P02", "P03"),
                wptList,
                wptList.FindById("P01"));

            // invoke
            var route = analyzer.Analyze();

            // assert
            var expected = GetRoute(
                wpts[0], "DCT", -1.0,
                wpts[1], "DCT", -1.0,
                wpts[2]);

            Assert.IsTrue(route.Equals(expected));
        }
예제 #8
0
 private static int GetEdgeIndex(string ID, string firstWpt, WaypointList wptList)
 {
     foreach (var i in wptList.EdgesFrom(wptList.FindById(firstWpt)))
     {
         if (wptList.GetEdge(i).Value.Airway == ID)
         {
             return(i);
         }
     }
     return(-1);
 }
예제 #9
0
        private static void AssertDct(WaypointList wptList, string from, string to)
        {
            foreach (var i in wptList.EdgesFrom(wptList.FindById(from)))
            {
                if (wptList[wptList.GetEdge(i).ToNodeIndex].ID == to)
                {
                    return;
                }
            }

            Assert.Fail("{0} is not connected to {1}", from, to);
        }
예제 #10
0
        private static int TryAddWpt(WaypointList wptList, string id)
        {
            int x = wptList.FindById(id);

            if (x < 0)
            {
                var rd = new Random(123);
                return(wptList.AddWaypoint(new Waypoint(id, rd.Next(-90, 91), rd.Next(-180, 181))));
            }

            return(x);
        }
예제 #11
0
        public void SingleEntryInRoute()
        {
            // setup
            var wptList = new WaypointList();
            var p       = new Waypoint("P", 20.0, 100.0);

            wptList.AddWaypoint(p);

            var analyzer = new BasicRouteAnalyzer(
                GetRouteString("P"),
                wptList,
                wptList.FindById("P"));

            // invoke
            var route = analyzer.Analyze();

            // assert
            Assert.AreEqual(1, route.Count);
            Assert.IsTrue(route.FirstWaypoint.Equals(p));
        }
예제 #12
0
        public void WhenRouteUseAirwaysAnalyzeCorrectness()
        {
            // setup
            var wpts = new[]
            {
                new Waypoint("P01", 0.0, 15.0),
                new Waypoint("P02", 0.0, 16.0),
                new Waypoint("P03", 0.0, 17.0),
                new Waypoint("P04", 0.0, 18.0)
            };

            var wptList = new WaypointList();
            var indices = wpts.Select(w => wptList.AddWaypoint(w)).ToList();

            wptList.AddNeighbor(indices[0], "A01", indices[1]);
            wptList.AddNeighbor(indices[1], "A02", indices[2]);

            // Added so that there are 2 airways to choose from at P03.
            wptList.AddNeighbor(indices[1], "A03", indices[3]);

            var analyzer = new BasicRouteAnalyzer(
                GetRouteString("P01", "A01", "P02", "A02", "P03"),
                wptList,
                wptList.FindById("P01"));

            // invoke
            var route = analyzer.Analyze();

            // assert
            var expected = GetRoute(
                wpts[0], "A01", -1.0,
                wpts[1], "A02", -1.0,
                wpts[2]);

            Assert.IsTrue(route.Equals(expected));
        }