UNPKG

aerofly-missions

Version:

The Aerofly Missionsgerät converts simulator flight plan files for Aerofly FS 4, Microsoft Flight Simulator, X-Plane, GeoFS, and Garmin / Infinite Flight flight plan files. It also imports SimBrief flight plans.

120 lines (119 loc) 6.55 kB
import * as fs from "node:fs"; import { Mission } from "../Aerofly/Mission.js"; import { Test } from "../Cli/Test.js"; import { MsfsPln } from "../Import/MsfsPln.js"; import { SimBrief } from "../Import/SimBrief.js"; export class SimBriefTest extends Test { constructor(process, dieOnError = false) { super(process, dieOnError); this.process = process; this.dieOnError = dieOnError; this.testMsfsStatic(); this.testAeroflyStatic(); this.testAeroflyStaticDestination(); this.testAeroflyStatic2(); this.testAeroflyStaticDestination2(); } static async init(process, dieOnError = false) { const self = new SimBriefTest(process, dieOnError); await self.testMsfsLive("fjboes"); await self.testMsfsLive("746243"); await self.testAeroflyLive("fjboes"); await self.testAeroflyLive("746243"); return self; } async testMsfsLive(username) { this.group(SimBrief.name + ".testMsfsLive(" + username + ")"); const simBrief = new SimBrief(); const msfsPln = await simBrief.fetchMsfs(username); this.assert(msfsPln !== "", "Response not empty"); const pln = new MsfsPln(msfsPln); this.assert(pln !== null, "is valid MSFS PLN"); } testMsfsStatic() { this.group(SimBrief.name + ".testMsfsStatic()"); const msfsPln = fs.readFileSync("./src/Tests/fixtures/simbrief-mfs.pln", "utf8"); this.assert(msfsPln !== "", "Response not empty"); const pln = new MsfsPln(msfsPln); this.assert(pln !== null, "is valid MSFS PLN"); const mission = new Mission("TEST", "TEST"); mission.fromGarminFpl(pln); this.assertEquals(mission.checkpoints.length, 11); this.assertEquals(mission.origin_icao, "KEYW"); this.assertEquals(mission.destination_icao, "KMIA"); this.assertEquals(mission.checkpoints[0].name, mission.origin_icao); this.assertEquals(mission.checkpoints[mission.checkpoints.length - 1].name, mission.destination_icao); } async testAeroflyLive(username) { this.group(SimBrief.name + ".testAeroflyLive(" + username + ")"); const simBrief = new SimBrief(); const mission = await simBrief.fetchMission(username, new Mission("TEST", "TEST")); this.assert(mission !== null, "Response not empty"); } testAeroflyStatic() { this.group(SimBrief.name + ".testAeroflyStatic()"); const simBrief = new SimBrief(); const simbriefPayload = fs.readFileSync("./src/Tests/fixtures/simbrief-api.json", "utf8"); const simbriefPayloadJson = JSON.parse(simbriefPayload); const mission = simBrief.convertMission(simbriefPayloadJson, new Mission("TEST", "TEST")); this.assert(mission !== null, "Response not empty"); //console.log(mission); this.assertEquals(mission.checkpoints.length, 13); this.assertEquals(mission.origin_icao, "KEYW"); this.assertEquals(mission.destination_icao, "KMIA"); this.assertEquals(mission.checkpoints[0].name, mission.origin_icao); this.assertEquals(mission.checkpoints[0].icao_region, "K7"); this.assertEquals(mission.checkpoints[2].name, "CARNU"); this.assertEquals(mission.checkpoints[2].icao_region, "K7"); this.assertEquals(mission.checkpoints[3].name, "SNDBR"); this.assertEquals(mission.checkpoints[3].icao_region, "K7"); this.assertEquals(mission.checkpoints[mission.checkpoints.length - 1].name, mission.destination_icao); this.assertEquals(mission.conditions.wind_speed, 5); this.assertEquals(mission.conditions.wind_gusts, 0); this.assertEquals(mission.conditions.wind_direction, 190); this.assertEquals(mission.conditions.cloud.cover, 0); this.assertEquals(mission.conditions.cloud.height, 0); } testAeroflyStaticDestination() { this.group(SimBrief.name + ".testAeroflyStaticDestination()"); const simBrief = new SimBrief(); const simbriefPayload = fs.readFileSync("./src/Tests/fixtures/simbrief-api.json", "utf8"); const simbriefPayloadJson = JSON.parse(simbriefPayload); const mission = simBrief.convertMission(simbriefPayloadJson, new Mission("TEST", "TEST"), true); this.assertEquals(mission.conditions.wind_speed, 8); this.assertEquals(mission.conditions.wind_gusts, 0); this.assertEquals(mission.conditions.wind_direction, 190); this.assertEquals(mission.conditions.cloud.cover, 0); this.assertEquals(mission.conditions.cloud.height, 0); } testAeroflyStatic2() { this.group(SimBrief.name + ".testAeroflyStatic2()"); const simBrief = new SimBrief(); const simbriefPayload = fs.readFileSync("./src/Tests/fixtures/simbrief-api2.json", "utf8"); const simbriefPayloadJson = JSON.parse(simbriefPayload); const mission = simBrief.convertMission(simbriefPayloadJson, new Mission("TEST", "TEST")); this.assert(mission !== null, "Response not empty"); this.assertEquals(mission.checkpoints.length, 9); this.assertEquals(mission.origin_icao, "KEYW"); this.assertEquals(mission.destination_icao, "KMIA"); this.assertEquals(mission.checkpoints[0].name, mission.origin_icao); this.assertEquals(mission.checkpoints[mission.checkpoints.length - 1].name, mission.destination_icao); this.assertEquals(mission.conditions.wind_speed, 10); this.assertEquals(mission.conditions.wind_gusts, 20); this.assertEquals(mission.conditions.wind_direction, 80); this.assertEquals(mission.conditions.cloud.cover, 0.125); this.assertEqualsRounded(mission.conditions.cloud.height, 1036, 0); } testAeroflyStaticDestination2() { this.group(SimBrief.name + ".testAeroflyStaticDestination2()"); const simBrief = new SimBrief(); const simbriefPayload = fs.readFileSync("./src/Tests/fixtures/simbrief-api2.json", "utf8"); const simbriefPayloadJson = JSON.parse(simbriefPayload); const mission = simBrief.convertMission(simbriefPayloadJson, new Mission("TEST", "TEST"), true); this.assertEquals(mission.conditions.wind_speed, 9); this.assertEquals(mission.conditions.wind_gusts, 0); this.assertEquals(mission.conditions.wind_direction, 100); this.assertEquals(mission.conditions.cloud.cover, 0.125); this.assertEqualsRounded(mission.conditions.cloud.height, 762, 0); } }