swift
testing.cpp
1 // SPDX-FileCopyrightText: Copyright (C) 2013 swift Project Community / Contributors
2 // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-swift-pilot-client-1
3 
4 #include "misc/test/testing.h"
5 
6 #include <tuple>
7 
8 #include <QDateTime>
9 #include <QList>
10 #include <QStringList>
11 #include <QtGlobal>
12 
13 #include "misc/aviation/callsign.h"
15 #include "misc/iterator.h"
16 #include "misc/network/user.h"
17 #include "misc/pq/frequency.h"
18 #include "misc/pq/length.h"
20 #include "misc/pq/units.h"
22 #include "misc/sequence.h"
23 #include "misc/variant.h"
24 
25 using namespace swift::misc::aviation;
26 using namespace swift::misc::geo;
27 using namespace swift::misc::network;
28 using namespace swift::misc::physical_quantities;
29 using namespace swift::misc::simulation::fscommon;
30 
31 namespace swift::misc::test
32 {
33  CAtcStationList CTesting::createAtcStations(int number, bool byPropertyIndex)
34  {
35  CAtcStationList atcs;
36  for (int i = 0; i < number; i++) { atcs.push_back(createStation(i, byPropertyIndex)); }
37  return atcs;
38  }
39 
40  CAtcStation CTesting::createStation(int index, bool byPropertyIndex)
41  {
42  // from WGS is slow, so static const (only 1 time init)
43  static const CCoordinateGeodetic geoPos =
44  CCoordinateGeodetic::fromWgs84("48° 21′ 13″ N", "11° 47′ 09″ E", CAltitude(index, CLengthUnit::ft()));
45  const QString cs = QStringLiteral("%1MI-SNO_TWR").arg(index);
46  const QString usr = QStringLiteral("Joe %1").arg(index);
47  const QString id = QStringLiteral("00000%1").arg(index).right(6);
48  const double f = 118.0 + (index % 30) * 0.25;
49 
50  const CUser user(id, usr);
51  const CInformationMessage atis(CInformationMessage::ATIS, "ATIS for " + QString::number(index));
52  const CInformationMessage metar(CInformationMessage::METAR, "Metar for " + QString::number(index));
53 
54  CAtcStation station;
55  if (byPropertyIndex)
56  {
57  station.setPropertyByIndex(CAtcStation::IndexCallsign, CVariant::from(CCallsign(cs)));
58  station.setPropertyByIndex(CAtcStation::IndexController, CVariant::from(user));
59  station.setPropertyByIndex(CAtcStation::IndexFrequency,
60  CVariant::from(CFrequency(f, CFrequencyUnit::MHz())));
61  station.setPropertyByIndex(CAtcStation::IndexRange, CVariant::from(CLength(50, CLengthUnit::km())));
62  station.setPropertyByIndex(CAtcStation::IndexPosition, CVariant::from(geoPos));
63  station.setPropertyByIndex(CAtcStation::IndexIsOnline, CVariant::from(false));
64  station.setPropertyByIndex(CAtcStation::IndexRelativeDistance,
65  CVariant::from(CLength(index + 1, CLengthUnit::NM())));
66  station.setPropertyByIndex(CAtcStation::IndexAtis, CVariant::from(atis));
67  station.setPropertyByIndex(CAtcStation::IndexMetar, CVariant::from(metar));
68  }
69  else
70  {
71  station = CAtcStation(CCallsign(cs, CCallsign::Atc), user, CFrequency(f, CFrequencyUnit::MHz()), geoPos,
72  CLength(50, CLengthUnit::km()), false);
73  station.setRelativeDistance(CLength(index + 1, CLengthUnit::NM()));
74  station.setAtis(atis);
75  station.setMetar(metar);
76  }
77  return station;
78  }
79 
80  CAircraftCfgEntriesList CTesting::getAircraftCfgEntries(int number)
81  {
83  for (int i = 0; i < number; i++)
84  {
86  e.setAtcModel("atc model");
87  e.setAtcParkingCode(QString::number(i));
88  e.setIndex(i);
89  e.setFileName("this will be the file path and pretty long");
90  e.setTitle("I am the aircraft title foobar");
91  e.setAtcType("B737");
92  list.push_back(e);
93  }
94  return list;
95  }
96 
97  CAirportList CTesting::getAirports(int number)
98  {
100  for (int i = 0; i < number; i++)
101  {
102  const char cc = 65 + (i % 26);
103  const QString icao = QStringLiteral("EXX%1").arg(QLatin1Char(cc));
104  CAirport a(icao);
105  a.setPosition(CCoordinateGeodetic(i, i, i));
106  list.push_back(a);
107  }
108  return list;
109  }
110 
111  CClientList CTesting::getClients(int number)
112  {
113  CClientList list;
114  for (int i = 0; i < number; i++)
115  {
116  const CCallsign cs(QStringLiteral("DXX%1").arg(i));
117  const QString rn = QStringLiteral("Joe Doe%1").arg(i);
118  CUser user(QString::number(i), rn, cs);
119  user.setCallsign(cs);
120  CClient client(user);
121  client.addCapability(CClient::FsdWithInterimPositions);
122  client.addCapability(CClient::FsdWithIcaoCodes);
123  const QString myFooModel = QStringLiteral("fooModel %1").arg(i);
124  client.setQueriedModelString(myFooModel);
125  list.push_back(client);
126  }
127  return list;
128  }
129 } // namespace swift::misc::test
void push_back(const T &value)
Appends an element at the end of the sequence.
Definition: sequence.h:305
static CVariant from(T &&value)
Synonym for fromValue().
Definition: variant.h:147
Value object encapsulating information about an airpot.
Definition: airport.h:36
void setPosition(const swift::misc::geo::CCoordinateGeodetic &position)
Set position.
Definition: airport.h:97
Value object for a list of airports.
Definition: airportlist.h:29
Altitude as used in aviation, can be AGL or MSL altitude.
Definition: altitude.h:52
Value object encapsulating information about an ATC station.
Definition: atcstation.h:38
void setMetar(const CInformationMessage &metar)
Set METAR.
Definition: atcstation.h:193
void setPropertyByIndex(CPropertyIndexRef index, const QVariant &variant)
Set property by index.
Definition: atcstation.cpp:207
void setAtis(const CInformationMessage &atis)
Set ATIS.
Definition: atcstation.h:181
Value object for a list of ATC stations.
Value object encapsulating information of a callsign.
Definition: callsign.h:30
Value object encapsulating information message (ATIS, METAR, TAF)
void setRelativeDistance(const physical_quantities::CLength &distance)
Set relative distance.
Another client software.
Definition: client.h:27
void addCapability(Capability capability)
Add capability.
Definition: client.cpp:33
void setQueriedModelString(const QString &modelString)
Set model.
Definition: client.cpp:72
Value object encapsulating a list of voice rooms.
Definition: clientlist.h:27
Value object encapsulating information of a user.
Definition: user.h:28
bool setCallsign(const aviation::CCallsign &callsign)
Set associated callsign.
Definition: user.cpp:62
Physical unit length (length)
Definition: length.h:18
Set of aircraft.cfg entries representing an aircraft (FSX)
void setAtcModel(const QString &atcModel)
ATC model.
void setFileName(const QString &filePath)
Filepath.
void setAtcParkingCode(const QString &parkingCode)
Parking code.
Generate data for testing purposes.
Definition: testdata.h:45