swift
testflightplan.cpp
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: Copyright (C) 2017 swift Project Community / Contributors
2 // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-swift-pilot-client-1
3 
7 
8 #include <QTest>
9 
10 #include "test.h"
11 
13 #include "misc/aviation/selcal.h"
15 
16 using namespace swift::misc::aviation;
17 using namespace swift::misc::network;
18 using namespace swift::misc::physical_quantities;
19 
20 namespace MiscTest
21 {
23  class CTestFlightPlan : public QObject
24  {
25  Q_OBJECT
26 
27  private slots:
29  void flightPlanRemarks();
30 
32  void flightPlanAltitude();
33  };
34 
35  void CTestFlightPlan::flightPlanRemarks()
36  {
37  QString remarks;
38  CFlightPlanRemarks fpRemarks(remarks);
39  QVERIFY2(fpRemarks.isEmpty(), "Expect NULL flight plan remarks");
40 
41  remarks = QStringLiteral("RT/KESTREL OPR/MYTRAVEL REG/G-DAJC SEL/FP-ES PER/C NAV/RNP10");
42  fpRemarks = CFlightPlanRemarks(remarks);
43  QVERIFY2(fpRemarks.getSelcalCode().getCode() == "FPES", "Wrong SELCAL code");
44  QVERIFY2(fpRemarks.getFlightOperator() == "MYTRAVEL", "Wrong flight operator");
45  QVERIFY2(fpRemarks.getRegistration().asString() == "GDAJC", "Wrong registration");
46 
47  remarks = QStringLiteral("OPR/UAL CALLSIGN/UNITED");
48  fpRemarks = CFlightPlanRemarks(remarks);
49  QVERIFY2(fpRemarks.getAirlineIcao().getDesignator() == "UAL", "Wrong airline, expect UAL");
50  QVERIFY2(fpRemarks.getFlightOperator().isEmpty(), "Expect to operator, should be in airline");
51  QVERIFY2(fpRemarks.getRegistration().isEmpty(), "Expect no registration");
52  QVERIFY2(fpRemarks.getRadioTelephony() == "UNITED", "Expect telephony");
53 
54  remarks = QStringLiteral("/v/FPL-VIR9-IS-A346/DEP/S-EGLL/ARR/KJFK/REG/G-VGAS/TCAS RVR/200 OPR/VIRGIN AIRLINES");
55  fpRemarks = CFlightPlanRemarks(remarks);
56  QVERIFY2(fpRemarks.getRegistration().asString() == "GVGAS", "Wrong registration");
57  QVERIFY2(fpRemarks.getFlightOperator() == "VIRGIN AIRLINES", "Wrong operator");
58  QVERIFY2(fpRemarks.getVoiceCapabilities().getCapabilities() == CVoiceCapabilities::Voice,
59  "Wrong airline, expect UAL");
60 
61  remarks =
62  QStringLiteral("/v/FPL-VIR9-IS-A346/ OPR/VIRGIN AIRLINES DEP/S-EGLL/ARR/KJFK/REG/G-VGAS/TCAS RVR/200");
63  fpRemarks = CFlightPlanRemarks(remarks);
64  QVERIFY2(fpRemarks.getRegistration().asString() == "GVGAS", "Wrong registration");
65  QVERIFY2(fpRemarks.getFlightOperator() == "VIRGIN AIRLINES", "Wrong operator");
66  QVERIFY2(fpRemarks.getVoiceCapabilities().getCapabilities() == CVoiceCapabilities::Voice,
67  "Wrong airline, expect UAL");
68  }
69 
70  void CTestFlightPlan::flightPlanAltitude()
71  {
72  CAltitude a;
73  a.parseFromFpAltitudeString("FL125");
74  QVERIFY2(a == CAltitude(12500, CAltitude::FlightLevel, CLengthUnit::ft()), "Wrong altitude FL125");
75  a.parseFromFpAltitudeString("FL126");
76  QVERIFY2(a == CAltitude(12600, CAltitude::FlightLevel, CLengthUnit::ft()), "Wrong altitude FL126");
77  a.parseFromFpAltitudeString("A122");
78  QVERIFY2(a == CAltitude(12200, CAltitude::MeanSeaLevel, CLengthUnit::ft()), "Wrong altitude A122");
79  a.parseFromFpAltitudeString("123ft");
80  QVERIFY2(a == CAltitude(123, CAltitude::MeanSeaLevel, CLengthUnit::ft()), "Wrong altitude 123ft");
81  a.parseFromFpAltitudeString("1234m");
82  QVERIFY2(a == CAltitude(1234, CAltitude::MeanSeaLevel, CLengthUnit::m()), "Wrong altitude 1234m");
83  a.parseFromFpAltitudeString("S0666");
84  QVERIFY2(a == CAltitude(6660, CAltitude::FlightLevel, CLengthUnit::m()), "Wrong altitude S0666");
85  a.parseFromFpAltitudeString("M456");
86  QVERIFY2(a == CAltitude(4560, CAltitude::MeanSeaLevel, CLengthUnit::m()), "Wrong altitude M456");
87 
88  // some values which are supposed to be wrong
89  CAltitude faulty(a);
90  faulty.makeNegative();
91  QVERIFY2(!faulty.isValidFpAltitude(), "Negative values not allowed");
92 
93  // as string
94  a = CAltitude(12500, CAltitude::FlightLevel, CLengthUnit::ft());
95  QVERIFY2(a.asFpICAOAltitudeString() == "FL125", "Expect FL125");
96  QVERIFY2(a.asFpVatsimAltitudeString() == "FL125", "Expect FL125");
97  a = CAltitude(15000, CAltitude::MeanSeaLevel, CLengthUnit::ft());
98  QVERIFY2(a.asFpICAOAltitudeString() == "A150", "Expect A150");
99  // QVERIFY2(a.asFpVatsimAltitudeString() == "15000ft", "Expect 15000");
100  QVERIFY2(a.asFpVatsimAltitudeString() == "15000", "Expect 15000");
101  a = CAltitude(1500, CAltitude::FlightLevel, CLengthUnit::m());
102  QVERIFY2(a.asFpICAOAltitudeString() == "S0150", "Expect S0150");
103  a = CAltitude(1600, CAltitude::MeanSeaLevel, CLengthUnit::m());
104  QVERIFY2(a.asFpICAOAltitudeString() == "M0160", "Expect M0160");
105  }
106 } // namespace MiscTest
107 
110 
111 #include "testflightplan.moc"
112 
Flightplan unit tests.
Altitude as used in aviation, can be AGL or MSL altitude.
Definition: altitude.h:52
QString asFpVatsimAltitudeString() const
As simple VATSIM string, only FLxxx or altitude as ft.
Definition: altitude.cpp:363
QString asFpICAOAltitudeString() const
Altitude string (official version)
Definition: altitude.cpp:340
bool parseFromFpAltitudeString(const QString &value, CStatusMessageList *msgs=nullptr)
Parse from FP altitude string.
Definition: altitude.cpp:188
Flight plan remarks, parsed values.
Definition: flightplan.h:46
SWIFTTEST_APPLESS_MAIN(MiscTest::CTestFlightPlan)
main