swift
Loading...
Searching...
No Matches
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
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
25using namespace swift::misc::aviation;
26using namespace swift::misc::geo;
27using namespace swift::misc::network;
28using namespace swift::misc::physical_quantities;
29using namespace swift::misc::simulation::fscommon;
30
31namespace swift::misc::test
32{
33 CAtcStationList CTesting::createAtcStations(int number, bool byPropertyIndex)
34 {
35 CAtcStationList atcs;
36 for (int i = 0; i < number; i++)
37 {
38 atcs.push_back(createStation(i, byPropertyIndex));
39 }
40 return atcs;
41 }
42
43 CAtcStation CTesting::createStation(int index, bool byPropertyIndex)
44 {
45 // from WGS is slow, so static const (only 1 time init)
46 static const CCoordinateGeodetic geoPos =
47 CCoordinateGeodetic::fromWgs84("48° 21′ 13″ N", "11° 47′ 09″ E", CAltitude(index, CLengthUnit::ft()));
48 const QString cs = QStringLiteral("%1MI-SNO_TWR").arg(index);
49 const QString usr = QStringLiteral("Joe %1").arg(index);
50 const QString id = QStringLiteral("00000%1").arg(index).right(6);
51 const double f = 118.0 + (index % 30) * 0.25;
52
53 const CUser user(id, usr);
54 const CInformationMessage atis(CInformationMessage::ATIS, "ATIS for " + QString::number(index));
55 const CInformationMessage metar(CInformationMessage::METAR, "Metar for " + QString::number(index));
56
57 CAtcStation station;
58 if (byPropertyIndex)
59 {
60 station.setPropertyByIndex(CAtcStation::IndexCallsign, CVariant::fromValue(CCallsign(cs)));
61 station.setPropertyByIndex(CAtcStation::IndexController, CVariant::fromValue(user));
62 station.setPropertyByIndex(CAtcStation::IndexFrequency,
64 station.setPropertyByIndex(CAtcStation::IndexRange, CVariant::fromValue(CLength(50, CLengthUnit::km())));
65 station.setPropertyByIndex(CAtcStation::IndexPosition, CVariant::fromValue(geoPos));
66 station.setPropertyByIndex(CAtcStation::IndexIsOnline, CVariant::fromValue(false));
67 station.setPropertyByIndex(CAtcStation::IndexRelativeDistance,
69 station.setPropertyByIndex(CAtcStation::IndexAtis, CVariant::fromValue(atis));
70 station.setPropertyByIndex(CAtcStation::IndexMetar, CVariant::fromValue(metar));
71 }
72 else
73 {
74 station = CAtcStation(CCallsign(cs, CCallsign::Atc), user, CFrequency(f, CFrequencyUnit::MHz()), geoPos,
75 CLength(50, CLengthUnit::km()), false);
76 station.setRelativeDistance(CLength(index + 1, CLengthUnit::NM()));
77 station.setAtis(atis);
78 station.setMetar(metar);
79 }
80 return station;
81 }
82
84 {
86 for (int i = 0; i < number; i++)
87 {
89 e.setAtcModel("atc model");
91 e.setIndex(i);
92 e.setFileName("this will be the file path and pretty long");
93 e.setTitle("I am the aircraft title foobar");
94 e.setAtcType("B737");
95 list.push_back(e);
96 }
97 return list;
98 }
99
101 {
103 for (int i = 0; i < number; i++)
104 {
105 const char cc = 65 + (i % 26);
106 const QString icao = QStringLiteral("EXX%1").arg(QLatin1Char(cc));
107 CAirport a(icao);
109 list.push_back(a);
110 }
111 return list;
112 }
113
115 {
116 CClientList list;
117 for (int i = 0; i < number; i++)
118 {
119 const CCallsign cs(QStringLiteral("DXX%1").arg(i));
120 const QString rn = QStringLiteral("Joe Doe%1").arg(i);
121 CUser user(QString::number(i), rn, cs);
122 user.setCallsign(cs);
123 CClient client(user);
126 const QString myFooModel = QStringLiteral("fooModel %1").arg(i);
127 client.setQueriedModelString(myFooModel);
128 list.push_back(client);
129 }
130 return list;
131 }
132} // namespace swift::misc::test
static CFrequencyUnit MHz()
Megahertz.
Definition units.h:380
void push_back(const T &value)
Appends an element at the end of the sequence.
Definition sequence.h:308
static CVariant fromValue(T &&value)
Construct a variant from a value.
Definition variant.h:139
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.
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).
static CCoordinateGeodetic fromWgs84(const QString &latitudeWgs84, const QString &longitudeWgs84, const aviation::CAltitude &geodeticHeight={})
Coordinate by WGS84 position data.
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:75
@ FsdWithIcaoCodes
basically means it is a pilot client handling ICAO code packages
Definition client.h:49
@ FsdWithInterimPositions
fast position updates
Definition client.h:48
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:71
Physical unit length (length).
Definition length.h:18
static CLengthUnit km()
Kilometer km.
Definition units.h:165
static CLengthUnit NM()
Nautical miles NM.
Definition units.h:148
static CLengthUnit ft()
Foot ft.
Definition units.h:157
Set of aircraft.cfg entries representing an aircraft (FSX).
void setAtcModel(const QString &atcModel)
ATC model.
void setAtcParkingCode(const QString &parkingCode)
Parking code.
static swift::misc::network::CClientList getClients(int number)
Get clients.
Definition testing.cpp:114
static swift::misc::aviation::CAtcStation createStation(int index, bool byPropertyIndex=false)
Single station, annotated by index.
Definition testing.cpp:43
static swift::misc::simulation::fscommon::CAircraftCfgEntriesList getAircraftCfgEntries(int number)
Get aircraft cfg entries.
Definition testing.cpp:83
static swift::misc::aviation::CAtcStationList createAtcStations(int number, bool byPropertyIndex=false)
Generate number of ATC stations.
Definition testing.cpp:33
static swift::misc::aviation::CAirportList getAirports(int number)
Get airports.
Definition testing.cpp:100
Generate data for testing purposes.
Definition testdata.h:45
QString arg(Args &&... args) const const
QString number(double n, char format, int precision)
QString right(qsizetype n) &&