@fboes/aerofly-patterns
Version:
Landegerät - Create random custom missions for Aerofly FS 4.
164 lines (163 loc) • 5.54 kB
JavaScript
import { strict as assert } from "node:assert";
import { Airport } from "./Airport.js";
export class AirportTest {
constructor() {
this.checkKansasCity();
this.checkMarthasVineyard();
this.checkStockton();
}
checkKansasCity() {
const airportJson = {
icaoId: "KMCI",
name: "KANSAS CITY/KANSAS_CITY_INTL",
type: "ARP",
lat: 39.2976,
lon: -94.7139,
elev: 313.1,
magdec: "02E",
rwyNum: "3",
tower: "T",
beacon: "B",
runways: [
{
id: "01L/19R",
dimension: "10801x150",
surface: "A",
alignment: "013",
},
{
id: "01R/19L",
dimension: "9500x150",
surface: "C",
alignment: "013",
},
{
id: "09/27",
dimension: "9501x150",
surface: "A",
alignment: "096",
},
],
freqs: [
{
type: "LCL/P",
freq: 128.2,
},
{
type: "D-ATIS",
freq: 128.375,
},
],
};
const airport = new Airport(airportJson);
assert.strictEqual(airport.id, "KMCI");
assert.strictEqual(airport.name, "Kansas City International");
assert.strictEqual(airport.hasTower, true);
assert.strictEqual(airport.hasBeacon, true);
assert.strictEqual(airport.magneticDeclination, 2);
assert.strictEqual(airport.runways.length, 6);
assert.strictEqual(airport.localFrequency, 128.2);
assert.strictEqual(airport.position.latitude, 39.2976);
assert.strictEqual(airport.position.longitude, -94.7139);
assert.strictEqual(airport.position.elevation, 313.1);
console.log(`✅ ${this.constructor.name}.checkKansasCity successful`);
}
checkMarthasVineyard() {
/** @type {AviationWeatherApiAirport} */
const airportJson = {
icaoId: "KMVY",
name: "VINEYARD HAVEN/MARTHA'S_VINEYARD",
type: "ARP",
lat: 41.3934,
lon: -70.6139,
elev: 20.4,
magdec: "15W",
rwyNum: "2",
tower: "T",
beacon: "B",
runways: [
{
id: "06/24",
dimension: "5504x100",
surface: "A",
alignment: "041",
},
{
id: "15/33",
dimension: "3327x75",
surface: "A",
alignment: "131",
},
],
freqs: [
{ type: "LCL/P", freq: 121.4 },
{ type: "ATIS", freq: 126.25 },
],
};
const airport = new Airport(airportJson);
assert.strictEqual(airport.id, "KMVY");
assert.strictEqual(airport.name, "Vineyard Haven / Martha's Vineyard");
assert.strictEqual(airport.hasTower, true);
assert.strictEqual(airport.hasBeacon, true);
assert.strictEqual(airport.magneticDeclination, -15);
assert.strictEqual(airport.runways.length, 4);
assert.strictEqual(airport.localFrequency, 121.4);
console.log(`✅ ${this.constructor.name}.checkMarthasVineyard successful`);
}
checkStockton() {
/** @type {AviationWeatherApiAirport} */
const airportJson = {
icaoId: "KSCK",
name: "STOCKTON/STOCKTON_METRO",
type: "ARP",
lat: 37.8944,
lon: -121.2387,
elev: 10.1,
magdec: "14E",
rwyNum: "3",
tower: "T",
beacon: "B",
runways: [
{
id: "11L/29R",
dimension: "10249x150",
surface: "A",
alignment: "128",
},
{
id: "11R/29L",
dimension: "4448x75",
surface: "A",
alignment: "128",
},
{
id: "H1",
dimension: "70x70",
surface: "C",
alignment: "-",
},
],
freqs: [
{
type: "ATIS",
freq: 118.25,
},
{
type: "LCL/P",
freq: 120.3,
},
],
};
const airport = new Airport(airportJson);
assert.strictEqual(airport.id, "KSCK");
assert.strictEqual(airport.hasTower, true);
assert.strictEqual(airport.hasBeacon, true);
assert.strictEqual(airport.runways.length, 5);
assert.strictEqual(airport.runways[0].id, "11L");
assert.strictEqual(airport.runways[0].isRightPattern, false);
assert.strictEqual(airport.runways[2].id, "11R");
assert.strictEqual(airport.runways[2].isRightPattern, true);
assert.strictEqual(airport.runways[4].runwayType, "H");
console.log(`✅ ${this.constructor.name}.checkStockton successful`);
}
}