private AnalyzerWithCommands GetAnalyzer1(params string[] route) { InitObjects1(); var wptList = new WaypointList(); var wptP1 = new Waypoint("P1", 24.0, 120.0); var wptQ1 = new Waypoint("Q1", 23.0, 114.0); int p1 = wptList.AddWaypoint(wptP1); int q1 = wptList.AddWaypoint(wptQ1); var neighbor = new Neighbor("A1", wptP1.Distance(wptQ1)); wptList.AddNeighbor(p1, q1, neighbor); return(new AnalyzerWithCommands( route.ToRouteString(), "ABCD", "05L", "EFGH", "07L", airportList, wptList, wptList.GetEditor(), sids, stars)); }
public void WhenMainRouteWptDoesNotExistShouldRecordFailure() { // Arrange var p1 = new Waypoint("P1", 0.0, 0.0); var p2 = new Waypoint("P2", 0.0, 2.0); var wptList = new WaypointList(); var route = new Route(); route.AddLastWaypoint(p1); route.AddLastWaypoint(p2, "DCT"); var nodes = new TrackNodes("A", "NATA", route, new List <WptPair>()); var recorder = new StatusRecorder(); var adder = new TrackAdder( wptList, wptList.GetEditor(), recorder, TrackType.Nats); // Act adder.AddToWaypointList(new[] { nodes }); // Assert Assert.AreEqual(1, recorder.Records.Count); }
private void AddToWptListCase3And5(WaypointList wptList) { var entry = new SidEntry( "18", "SID1", List(wpt101, wpt102, wpt103, wpt104), EntryType.RwySpecific, false); var adder = new SidAdder( "AXYZ", new SidCollection( List(entry)), wptList, wptList.GetEditor(), GetAirportManager()); int rwyIndex = adder.AddSidsToWptList("18", List("SID1")); // Check the SID has been added with correct total distance. var edges = wptList.EdgesFrom(rwyIndex).ToList(); Assert.IsTrue(edges.Count > 0); Assert.IsTrue(edges.Select(e => wptList.GetEdge(e)) .All(e => e.Value.InnerWaypoints.SequenceEqual(List(wpt101, wpt102, wpt103)) && e.Value.Type == InnerWaypointsType.Terminal)); double dis = List(rwy, wpt101, wpt102, wpt103, wpt104).TotalDistance(); Assert.IsTrue(SidIsAdded( rwyIndex, "SID1", dis, wptList)); // Check the edges of last wpt int index = wptList.FindByWaypoint(wpt104); Assert.AreEqual(2, wptList.EdgesFromCount(index)); foreach (var i in wptList.EdgesFrom(index)) { var edge = wptList.GetEdge(i); var neighbor = edge.Value; Assert.AreEqual("DCT", neighbor.Airway); Assert.AreEqual(0, neighbor.InnerWaypoints.Count); var expectedDis = wpt104.Distance(wptList[edge.ToNodeIndex]); Assert.AreEqual( expectedDis, neighbor.Distance, DistanceEpsilon); } }
private void AddToWptListCase2And4(WaypointList wptList) { var entry = new StarEntry( "18", "STAR1", List(wpt101, wpt102, wpt103, wpt104), EntryType.RwySpecific); var adder = new StarAdder( "AXYZ", new StarCollection(List(entry)), wptList, wptList.GetEditor(), GetAirportManager()); int rwyIndex = adder.AddStarsToWptList("18", List("STAR1")); // Check the STAR1 has been added with correct total distance. var edges = wptList.EdgesTo(rwyIndex).ToList(); Assert.IsTrue(edges.Count > 0); Assert.IsTrue(edges .Select(e => wptList.GetEdge(e)) .All(e => e.Value.InnerWaypoints.SequenceEqual(List(wpt102, wpt103, wpt104)) && e.Value.Type == InnerWaypointsType.Terminal)); double dis = List(wpt101, wpt102, wpt103, wpt104, rwy) .TotalDistance(); Assert.IsTrue(StarIsAdded( wptList.FindByWaypoint(wpt101), "STAR1", dis, wptList)); // Check the edges of first wpt int index = wptList.FindByWaypoint(wpt101); Assert.IsTrue(index >= 0); Assert.AreEqual(2, wptList.EdgesToCount(index)); foreach (var i in wptList.EdgesTo(index)) { var edge = wptList.GetEdge(i); Assert.AreEqual("DCT", edge.Value.Airway); Assert.AreEqual(0, edge.Value.InnerWaypoints.Count); double expectedDis = wpt101.Distance(wptList[edge.FromNodeIndex]); Assert.AreEqual(expectedDis, edge.Value.Distance, DistanceEpsilon); } }
// @Throws public static Route AnalyzeWithCommands( string route, string origIcao, string origRwy, string destIcao, string destRwy, string navDataLocation, AirportManager airportList, WaypointList wptList) { var sidHandler = SidHandlerFactory.GetHandler( origIcao, navDataLocation, wptList, wptList.GetEditor(), airportList); var starHandler = StarHandlerFactory.GetHandler( destIcao, navDataLocation, wptList, wptList.GetEditor(), airportList); return(new AnalyzerWithCommands( CoordinateFormatter.Split(route), origIcao, origRwy, destIcao, destRwy, airportList, wptList, wptList.GetEditor(), sidHandler.SidCollection, starHandler.StarCollection).Analyze()); }
public void AddsMainRouteCorrectly() { // Arrange var p1 = new Waypoint("P1", 0.0, 0.0); var p2 = new Waypoint("P2", 0.0, 2.0); var p3 = new Waypoint("P3", 0.0, 4.0); var wptList = new WaypointList(); wptList.AddWaypoint(p1); wptList.AddWaypoint(p2); wptList.AddWaypoint(p3); var route = new Route(); route.AddLastWaypoint(p1); route.AddLastWaypoint(p2, "DCT"); route.AddLastWaypoint(p3, "DCT"); var nodes = new TrackNodes("A", "NATA", route, new WptPair[0]); var adder = new TrackAdder( wptList, wptList.GetEditor(), new StatusRecorder(), TrackType.Nats); // Act adder.AddToWaypointList(new[] { nodes }); // Assert int indexP1 = wptList.FindByWaypoint(p1); Assert.AreEqual(1, wptList.EdgesFromCount(indexP1)); var edge = wptList.EdgesFrom(indexP1).First(); var neighbor = wptList.GetEdge(edge).Value; Assert.IsTrue(neighbor.Airway == "NATA"); Assert.IsTrue(neighbor.InnerWaypoints.SequenceEqual(CreateList(p2))); Assert.AreEqual(InnerWaypointsType.Track, neighbor.Type); var distance = p1.Distance(p2) + p2.Distance(p3); Assert.AreEqual(distance, neighbor.Distance); }
private AnalyzerWithCommands GetAnalyzer2(params string[] route) { InitObjects2(); var wptList = new WaypointList(); wptList.AddWaypoint(new Waypoint("N37E112", 37.0, 112.0)); wptList.AddWaypoint(new Waypoint("N30E117", 30.0, 117.0)); return(new AnalyzerWithCommands( route.ToRouteString(), "ABCD", "05L", "EFGH", "07L", airportList, wptList, wptList.GetEditor(), new SidCollection(new SidEntry[0]), new StarCollection(new StarEntry[0]))); }
public Route FindRoute( string origIcao, string origRwy, IReadOnlyList <string> sids, string destIcao, string destRwy, IReadOnlyList <string> stars) { var editor = wptList.GetEditor(); var sidHandler = SidHandlerFactory.GetHandler( origIcao, navDataLocation, wptList, editor, airportList); var starHandler = StarHandlerFactory.GetHandler( destIcao, navDataLocation, wptList, editor, airportList); return(finder.FindRoute( new OrigInfo(origRwy, sids, sidHandler), new DestInfo(destRwy, stars, starHandler), editor)); }