@fboes/aerofly-custom-missions 1.2.0 → 1.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
- import { AeroflyMissionsList, AeroflyMission, AeroflyMissionConditions, AeroflyMissionConditionsCloud, AeroflyMissionCheckpoint, AeroflyLocalizedText, AeroflyMissionTargetPlane, } from "./index.js";
1
+ import { AeroflyConfigFileSet, AeroflyMissionsList, AeroflyMission, AeroflyMissionConditions, AeroflyMissionConditionsCloud, AeroflyMissionCheckpoint, AeroflyLocalizedText, AeroflyMissionTargetPlane, } from "./index.js";
2
2
  import { strict as assert } from "node:assert";
3
- const validityCheck = (aeroflyString) => {
3
+ const assertValidAeroflyStructure = (aeroflyString) => {
4
4
  const openingBrackets = aeroflyString.match(/</g);
5
5
  const closingBrackets = aeroflyString.match(/>/g);
6
6
  const openingBrackets2 = aeroflyString.match(/\[/g);
@@ -8,27 +8,61 @@ const validityCheck = (aeroflyString) => {
8
8
  assert.strictEqual(openingBrackets?.length, closingBrackets?.length, "Number of <> matches");
9
9
  assert.strictEqual(openingBrackets2?.length, closingBrackets2?.length, "Number of [] matches");
10
10
  };
11
+ const assertIncludes = (string, includes) => {
12
+ assert.ok(string.includes(includes), `Includes "${includes}"`);
13
+ };
14
+ {
15
+ const file = new AeroflyConfigFileSet(0, "file", "");
16
+ file.pushRaw(new AeroflyConfigFileSet(1, "tmmissions_list", "")
17
+ .pushRaw(new AeroflyConfigFileSet(2, "list_tmmission_definition", "missions")
18
+ .pushRaw(new AeroflyConfigFileSet(3, "tmmission_definition", "mission")
19
+ .push("string8", "title", "KCCR #1: Concord / Buchanan Field")
20
+ .push("float64", "origin_alt", 1066.799965862401, "3500 ft MSL")
21
+ .toString())
22
+ .pushRaw(new AeroflyConfigFileSet(3, "tmmission_definition", "mission").toString())
23
+ .toString())
24
+ .toString());
25
+ assertValidAeroflyStructure(file.toString());
26
+ console.log("✅ AeroflyMission test successful");
27
+ }
11
28
  {
12
- const mission = new AeroflyMission("Title");
29
+ const mission = new AeroflyMission("Title", {
30
+ origin: {
31
+ icao: "XXXX",
32
+ longitude: 0,
33
+ latitude: 0,
34
+ dir: 0,
35
+ alt: 0,
36
+ },
37
+ destination: {
38
+ icao: "XXXX",
39
+ longitude: 0,
40
+ latitude: 0,
41
+ dir: 0,
42
+ alt: 0,
43
+ },
44
+ });
13
45
  assert.deepStrictEqual(mission.title, "Title");
46
+ assertValidAeroflyStructure(mission.toString());
47
+ //console.log(mission.toString());
14
48
  console.log("✅ AeroflyMission test successful");
15
49
  }
16
50
  {
17
51
  const conditions = new AeroflyMissionConditions();
18
- conditions.visibility = 15_000;
19
- assert.deepStrictEqual(conditions.visibility, 15_000);
52
+ conditions.visibility = 15000;
53
+ assert.deepStrictEqual(conditions.visibility, 15000);
20
54
  conditions.visibility_sm = 10;
21
55
  assert.notDeepStrictEqual(conditions.visibility, 10);
22
56
  assert.deepStrictEqual(Math.round(conditions.visibility_sm), 10);
23
- validityCheck(conditions.toString());
57
+ assertValidAeroflyStructure(conditions.toString());
24
58
  console.log("✅ AeroflyMissionConditions test successful");
25
59
  }
26
60
  {
27
61
  const conditions = new AeroflyMissionConditions({
28
- visibility: 15_000,
62
+ visibility: 15000,
29
63
  });
30
- assert.deepStrictEqual(conditions.visibility, 15_000);
31
- validityCheck(conditions.toString());
64
+ assert.deepStrictEqual(conditions.visibility, 15000);
65
+ assertValidAeroflyStructure(conditions.toString());
32
66
  console.log("✅ AeroflyMissionConditions test successful");
33
67
  }
34
68
  {
@@ -37,14 +71,18 @@ const validityCheck = (aeroflyString) => {
37
71
  });
38
72
  assert.notDeepStrictEqual(conditions.visibility, 10);
39
73
  assert.deepStrictEqual(Math.round(conditions.visibility_sm), 10);
40
- validityCheck(conditions.toString());
74
+ assertValidAeroflyStructure(conditions.toString());
41
75
  console.log("✅ AeroflyMissionConditions test successful");
42
76
  }
43
77
  {
44
78
  const cloud = new AeroflyMissionConditionsCloud(0, 0);
45
79
  assert.deepStrictEqual(cloud.cover, 0);
46
80
  assert.deepStrictEqual(cloud.base, 0);
47
- validityCheck(cloud.toString());
81
+ assertValidAeroflyStructure(cloud.toString());
82
+ assertValidAeroflyStructure(cloud.toString(0));
83
+ assertValidAeroflyStructure(cloud.toString(1));
84
+ assertValidAeroflyStructure(cloud.toString(2));
85
+ assertValidAeroflyStructure(cloud.toString(3));
48
86
  console.log("✅ AeroflyMissionConditionsCloud test successful");
49
87
  }
50
88
  {
@@ -54,7 +92,7 @@ const validityCheck = (aeroflyString) => {
54
92
  cloud.base_feet = 1000;
55
93
  assert.notDeepStrictEqual(cloud.base, 1000);
56
94
  assert.deepStrictEqual(Math.round(cloud.base_feet), 1000);
57
- validityCheck(cloud.toString());
95
+ assertValidAeroflyStructure(cloud.toString());
58
96
  console.log("✅ AeroflyMissionConditionsCloud test successful");
59
97
  }
60
98
  {
@@ -62,7 +100,7 @@ const validityCheck = (aeroflyString) => {
62
100
  assert.deepStrictEqual(localizedText.language, "de");
63
101
  assert.deepStrictEqual(localizedText.title, "Test");
64
102
  assert.deepStrictEqual(localizedText.description, "Test2");
65
- validityCheck(localizedText.toString());
103
+ assertValidAeroflyStructure(localizedText.toString());
66
104
  console.log("✅ AeroflyLocalizedText test successful");
67
105
  }
68
106
  {
@@ -71,9 +109,26 @@ const validityCheck = (aeroflyString) => {
71
109
  assert.deepStrictEqual(targetPlane.latitude, 1);
72
110
  assert.deepStrictEqual(targetPlane.dir, 2);
73
111
  assert.deepStrictEqual(targetPlane.name, "Test2");
74
- validityCheck(targetPlane.toString());
112
+ assertValidAeroflyStructure(targetPlane.toString());
75
113
  console.log("✅ AeroflyMissionTargetPlane test successful");
76
114
  }
115
+ {
116
+ const checkpoint = new AeroflyMissionCheckpoint("TEST", "waypoint", 15, 20);
117
+ let checkpointString = checkpoint.toString();
118
+ assertIncludes(checkpointString, "[type]");
119
+ assertIncludes(checkpointString, "[name]");
120
+ assertIncludes(checkpointString, "[lon_lat]");
121
+ assertIncludes(checkpointString, "15 20");
122
+ assertIncludes(checkpointString, "[altitude]");
123
+ assert.ok(!checkpointString.includes("[fly_over]"));
124
+ assert.ok(!checkpointString.includes("[alt_cst]"));
125
+ checkpoint.altitudeConstraint = false;
126
+ checkpoint.flyOver = false;
127
+ checkpointString = checkpoint.toString();
128
+ assertIncludes(checkpointString, "[fly_over]");
129
+ assertIncludes(checkpointString, "[alt_cst]");
130
+ console.log("✅ AeroflyMissionCheckpoint test successful");
131
+ }
77
132
  {
78
133
  const conditions = new AeroflyMissionConditions({
79
134
  time: new Date(Date.UTC(2024, 5, 14, 13, 15, 38)),
@@ -147,25 +202,26 @@ const validityCheck = (aeroflyString) => {
147
202
  assert.strictEqual(missionList.missions[0].aircraft.name, "c172");
148
203
  assert.strictEqual(missionList.missions[0].aircraft.icao, "C172");
149
204
  let missionListString = missionList.toString();
150
- assert.ok(missionListString.includes("[origin]"));
151
- assert.ok(missionListString.includes("[tmmission_definition]"));
152
- assert.ok(missionListString.includes("[list_tmmission_checkpoint]"));
153
- assert.ok(missionListString.includes("[tmmission_checkpoint]"));
154
- assert.ok(missionListString.includes("[departure_runway]"));
155
- assert.ok(missionListString.includes("[cloud_cover]"));
156
- assert.ok(missionListString.includes("[cirrus_cover]"));
157
- assert.ok(missionListString.includes("[tmmission_checkpoint][element][0]"));
158
- assert.ok(missionListString.includes("[tmmission_checkpoint][element][1]"));
159
- assert.ok(missionListString.includes("[tmmission_checkpoint][element][2]"));
160
- assert.ok(missionListString.includes("[tmmission_checkpoint][element][3]"));
161
- assert.ok(missionListString.includes("<[float64][length][844.2959729825288]>"));
205
+ assertIncludes(missionListString, "[origin]");
206
+ assertIncludes(missionListString, "[tmmission_definition]");
207
+ assertIncludes(missionListString, "[list_tmmission_checkpoint]");
208
+ assertIncludes(missionListString, "[tmmission_checkpoint]");
209
+ assertIncludes(missionListString, "[departure_runway]");
210
+ assertIncludes(missionListString, "[cloud_cover]");
211
+ assertIncludes(missionListString, "[cirrus_cover]");
212
+ assertIncludes(missionListString, "[tmmission_checkpoint][element][0]");
213
+ assertIncludes(missionListString, "[tmmission_checkpoint][element][1]");
214
+ assertIncludes(missionListString, "[tmmission_checkpoint][element][2]");
215
+ assertIncludes(missionListString, "[tmmission_checkpoint][element][3]");
216
+ assertIncludes(missionListString, "<[float64][length][844.2959729825288]>");
162
217
  assert.ok(!missionListString.includes("[tags]"));
163
218
  assert.ok(!missionListString.includes("[difficulty]"));
164
219
  assert.ok(!missionListString.includes("[is_featured]"));
165
- assert.ok(!missionListString.includes("[tmmission_definition_localized]"), "has `tmmission_definition_localized`");
220
+ assert.ok(!missionListString.includes("[tmmission_definition_localized]"));
166
221
  assert.ok(!missionListString.includes("[distance]"));
167
222
  assert.ok(!missionListString.includes("[duration]"));
168
- validityCheck(missionListString);
223
+ assert.ok(!missionListString.includes("[alt_cst]"));
224
+ assertValidAeroflyStructure(missionListString);
169
225
  //console.log(missionListString);
170
226
  mission.difficulty = 1.0;
171
227
  mission.isFeatured = true;
@@ -175,18 +231,22 @@ const validityCheck = (aeroflyString) => {
175
231
  mission.tags.push("approach");
176
232
  mission.tags.push("pattern");
177
233
  mission.finish = new AeroflyMissionTargetPlane(0, 1, 2);
234
+ mission.tutorialName = "c172";
235
+ mission.isScheduled = true;
178
236
  missionListString = missionList.toString();
179
- assert.ok(missionListString.includes("[tags]"));
180
- assert.ok(missionListString.includes("[difficulty]"));
181
- assert.ok(missionListString.includes("[is_featured]"));
182
- assert.ok(missionListString.includes("true"));
183
- assert.ok(missionListString.includes("[tmmission_definition_localized]"), "has `tmmission_definition_localized`");
184
- assert.ok(missionListString.includes("Landeübung"));
185
- assert.ok(missionListString.includes("[distance]"));
186
- assert.ok(missionListString.includes("[duration]"));
187
- assert.ok(missionListString.includes("[finish]"));
188
- validityCheck(missionListString);
237
+ assertIncludes(missionListString, "[tags]");
238
+ assertIncludes(missionListString, "[difficulty]");
239
+ assertIncludes(missionListString, "[is_featured]");
240
+ assertIncludes(missionListString, "true");
241
+ assertIncludes(missionListString, "[tmmission_definition_localized]");
242
+ assertIncludes(missionListString, "Landeübung");
243
+ assertIncludes(missionListString, "[distance]");
244
+ assertIncludes(missionListString, "[duration]");
245
+ assertIncludes(missionListString, "[finish]");
246
+ assertIncludes(missionListString, "[tutorial_name]");
247
+ assertIncludes(missionListString, "[is_scheduled]");
248
+ assertValidAeroflyStructure(missionListString);
189
249
  //console.dir(missionList.missions[0], { depth: null });
190
- console.log(missionListString);
250
+ //console.log(missionListString);
191
251
  console.log("✅ AeroflyMissionsList test successful");
192
252
  }