UNPKG

@fboes/aerofly-patterns

Version:

Landegerät - Create random custom missions for Aerofly FS 4.

118 lines (94 loc) 5.34 kB
import { strict as assert } from "node:assert"; import { AviationWeatherApi, AviationWeatherNormalizedAirport } from "./AviationWeatherApi.js"; import { Point } from "@fboes/geojson"; export class AviationWeatherApiTest { static async init() { const self = new AviationWeatherApiTest(); await self.fetchAirports(); await self.fetchMetar(); await self.fetchMetarByPosition(); await self.fetchNavaids(); await self.fetchNavaidsByPosition(); } async fetchAirports() { const icaoCodes = ["KEYW", "KMCI", "KMVY", "KCCR"]; const airports = await AviationWeatherApi.fetchAirports(icaoCodes); //console.log(airports); assert.strictEqual(airports.length, icaoCodes.length); airports.forEach((airport) => { assert.strictEqual(typeof airport.icaoId, "string", "airport.icaoId"); assert.ok(icaoCodes.indexOf(airport.icaoId) > -1); assert.strictEqual(typeof airport.name, "string", "airport.name"); assert.strictEqual(typeof airport.type, "string", "airport.type"); assert.strictEqual(typeof airport.lat, "number", "airport.lat"); assert.strictEqual(typeof airport.lon, "number", "airport.lon"); assert.strictEqual(typeof airport.elev, "number", "airport.elev"); assert.strictEqual(typeof airport.magdec, "string", "airport.magdec"); assert.strictEqual(typeof airport.rwyNum, "string", "airport.rwyNum"); assert.strictEqual(typeof airport.tower, "string", "airport.tower"); assert.strictEqual(typeof airport.beacon, "string", "airport.beacon"); assert.ok(Array.isArray(airport.runways), "airport.runways"); assert.ok(Array.isArray(airport.freqs) || typeof airport.freqs === "string", "airport.freqs"); const airportNormalized = new AviationWeatherNormalizedAirport(airport); assert.strictEqual(typeof airportNormalized.icaoId, "string", "airportNormalized.icaoId"); assert.ok(icaoCodes.indexOf(airportNormalized.icaoId) > -1); assert.strictEqual(typeof airportNormalized.name, "string", "airportNormalized.name"); assert.strictEqual(typeof airportNormalized.type, "string", "airportNormalized.type"); assert.strictEqual(typeof airportNormalized.lat, "number", "airportNormalized.lat"); assert.strictEqual(typeof airportNormalized.lon, "number", "airportNormalized.lon"); assert.strictEqual(typeof airportNormalized.elev, "number", "airportNormalized.elev"); assert.strictEqual(typeof airportNormalized.magdec, "number", "airportNormalized.magdec"); assert.strictEqual(typeof airportNormalized.rwyNum, "number", "airportNormalized.rwyNum"); assert.strictEqual(typeof airportNormalized.tower, "boolean", "airportNormalized.tower"); assert.strictEqual(typeof airportNormalized.beacon, "boolean", "airportNormalized.beacon"); assert.ok(Array.isArray(airportNormalized.runways), "airportNormalized.runways"); assert.ok(Array.isArray(airportNormalized.freqs), "airportNormalized.freqs"); }); console.log(`✅ ${this.constructor.name}.fetchAirports successful`); } async fetchMetar() { const metars = await AviationWeatherApi.fetchMetar(["KEYw"]); assert.strictEqual(metars.length, 1); metars.forEach((metar) => { assert.strictEqual(typeof metar.lat, "number", "metar.lat"); assert.strictEqual(typeof metar.lon, "number", "metar.lon"); assert.strictEqual(typeof metar.elev, "number", "metar.elev"); }); console.log(`✅ ${this.constructor.name}.fetchMetar successful`); } async fetchNavaids() { const navaids = await AviationWeatherApi.fetchNavaids(["GND"]); assert.ok(Array.isArray(navaids), "navaids is an array"); assert.ok(navaids.length > 0, "navaids array is not empty"); navaids.forEach((navaid) => { assert.strictEqual(typeof navaid.id, "string", "navaid.id"); assert.strictEqual(typeof navaid.type, "string", "navaid.type"); }); console.log(`✅ ${this.constructor.name}.fetchNavaids successful`); } async fetchNavaidsByPosition() { const point = new Point(-61.782, 12.0001, 0); assert.ok(point instanceof Point, "point is an instance of Point"); const navaids = await AviationWeatherApi.fetchNavaidsByPosition(point, 10000); assert.ok(Array.isArray(navaids), "navaids is an array"); assert.ok(navaids.length > 0, "navaids array is not empty"); navaids.forEach((navaid) => { assert.strictEqual(typeof navaid.id, "string", "navaid.id"); assert.strictEqual(typeof navaid.type, "string", "navaid.type"); }); console.log(`✅ ${this.constructor.name}.fetchNavaidsByPosition successful`); } async fetchMetarByPosition() { const point = new Point(-80.1975, 25.7358, 0); assert.ok(point instanceof Point, "point is an instance of Point"); const metars = await AviationWeatherApi.fetchMetarByPosition(point, 10000); assert.ok(Array.isArray(metars), "metars is an array"); /*assert.ok(metars.length > 0, "metars array is not empty"); metars.forEach((metar) => { assert.strictEqual(typeof metar.lat, "number", "metar.lat"); assert.strictEqual(typeof metar.lon, "number", "metar.lon"); assert.strictEqual(typeof metar.elev, "number", "metar.elev"); });*/ console.log(`✅ ${this.constructor.name}.fetchMetarByPosition successful`); } }