diff --git a/samples/blackmisc/main.cpp b/samples/blackmisc/main.cpp index 94a5abf55..cbaf0eaee 100644 --- a/samples/blackmisc/main.cpp +++ b/samples/blackmisc/main.cpp @@ -56,7 +56,7 @@ int main(int argc, char *argv[]) else if (s.startsWith("3")) { CSamplesContainer::samples(); } else if (s.startsWith("4")) { CSamplesMetadata::samples(); } else if (s.startsWith("5")) { CSamplesVariant::samples(); } - else if (s.startsWith("6")) { CSamplesPerformance::samples(); } + else if (s.startsWith("6")) { CSamplesPerformance::samples(qtout); } else if (s.startsWith("7")) { CSamplesAlgorithm::samples(); } else if (s.startsWith("8")) { CSamplesConcurrent::samples(s, qtout, qtin); } else if (s.startsWith("x")) { break; } diff --git a/samples/blackmisc/samplesperformance.cpp b/samples/blackmisc/samplesperformance.cpp index 4159e5f10..93bf4741e 100644 --- a/samples/blackmisc/samplesperformance.cpp +++ b/samples/blackmisc/samplesperformance.cpp @@ -18,7 +18,7 @@ namespace BlackMiscTest /* * Samples */ - int CSamplesPerformance::samples() + int CSamplesPerformance::samples(QTextStream &out) { QTime timer; int ms, number; @@ -28,88 +28,88 @@ namespace BlackMiscTest timer.start(); CAtcStationList atcs1 = BlackMisc::Aviation::CTesting::createAtcStations(10000); ms = timer.elapsed(); - qDebug() << "created (copy)" << atcs1.size() << "ATC stations in" << ms << "ms"; + out << "created (copy) " << atcs1.size() << " ATC stations in " << ms << "ms" << endl; timer.start(); CAtcStationList atcs2 = BlackMisc::Aviation::CTesting::createAtcStations(100000); ms = timer.elapsed(); - qDebug() << "created (copy)" << atcs2.size() << "ATC stations in" << ms << "ms"; + out << "created (copy) " << atcs2.size() << " ATC stations in " << ms << "ms" << endl; // ATC stations, property index created timer.start(); CAtcStationList atcs3 = BlackMisc::Aviation::CTesting::createAtcStations(10000, true); ms = timer.elapsed(); - qDebug() << "created (propertyIndex)" << atcs3.size() << "ATC stations in" << ms << "ms"; + out << "created (propertyIndex) " << atcs3.size() << " ATC stations in " << ms << "ms" << endl; timer.start(); CAtcStationList atcs4 = BlackMisc::Aviation::CTesting::createAtcStations(100000, true); ms = timer.elapsed(); - qDebug() << "created (propertyIndex)" << atcs4.size() << "ATC stations in" << ms << "ms"; + out << "created (propertyIndex) " << atcs4.size() << " ATC stations in " << ms << "ms" << endl; // Sort by timer.start(); atcs1.sortBy(&CAtcStation::getCallsign); ms = timer.elapsed(); - qDebug() << "Sorted by callsign" << atcs1.size() << "ATC stations in" << ms << "ms"; + out << "Sorted by callsign " << atcs1.size() << " ATC stations in " << ms << "ms" << endl; timer.start(); atcs2.sortBy(&CAtcStation::getCallsign); ms = timer.elapsed(); - qDebug() << "Sorted by callsign" << atcs2.size() << "ATC stations in" << ms << "ms"; + out << "Sorted by callsign " << atcs2.size() << " ATC stations in " << ms << "ms" << endl; // Read data, this is what all our models do when displaying in a table view timer.start(); BlackMisc::Aviation::CTesting::readStations(atcs1, false); ms = timer.elapsed(); - qDebug() << "Read (getters)" << atcs1.size() << "ATC stations in" << ms << "ms"; + out << "Read (getters) " << atcs1.size() << " ATC stations in " << ms << "ms" << endl; timer.start(); BlackMisc::Aviation::CTesting::readStations(atcs2, false); ms = timer.elapsed(); - qDebug() << "Read (getters)" << atcs2.size() << "ATC stations in" << ms << "ms"; + out << "Read (getters) " << atcs2.size() << " ATC stations in " << ms << "ms" << endl; timer.start(); BlackMisc::Aviation::CTesting::readStations(atcs1, true); ms = timer.elapsed(); - qDebug() << "Read (propertyIndex)" << atcs1.size() << "ATC stations in" << ms << "ms"; + out << "Read (propertyIndex) " << atcs1.size() << " ATC stations in " << ms << "ms" << endl; timer.start(); BlackMisc::Aviation::CTesting::readStations(atcs2, true); ms = timer.elapsed(); - qDebug() << "Read (propertyIndex)" << atcs2.size() << "ATC stations in" << ms << "ms"; + out << "Read (propertyIndex) " << atcs2.size() << " ATC stations in " << ms << "ms" << endl; // calculate number = 10000; timer.start(); BlackMisc::Aviation::CTesting::calculateDistance(number); ms = timer.elapsed(); - qDebug() << "Calculated distances " << number << "in" << ms << "ms"; + out << "Calculated distances " << number << " in " << ms << "ms" << endl; number = 100000; timer.start(); BlackMisc::Aviation::CTesting::calculateDistance(number); ms = timer.elapsed(); - qDebug() << "Calculated distances " << number << "in" << ms << "ms"; + out << "Calculated distances " << number << "in " << ms << "ms" << endl; // parse number = 100000; timer.start(); BlackMisc::Aviation::CTesting::parseWgs(number); ms = timer.elapsed(); - qDebug() << "Parse WGS coordinates" << number << "in" << ms << "ms"; + out << "Parse WGS coordinates " << number << " in " << ms << "ms" << endl; // copy timer.start(); number = 20; BlackMisc::Aviation::CTesting::copy10kStations(number); ms = timer.elapsed(); - qDebug() << "Copied 10k stations" << number << "times in" << ms << "ms"; + out << "Copied 10k stations " << number << " times in " << ms << "ms" << endl; timer.start(); number = 100; BlackMisc::Aviation::CTesting::copy10kStations(number); ms = timer.elapsed(); - qDebug() << "Copied 10k stations" << number << "times in" << ms << "ms"; + out << "Copied 10k stations " << number << " times in " << ms << "ms" << endl; // Regex pattern matching with lists of 10000 strings containing random hex numbers auto generator = []() { return QString::number(qrand() | (qrand() << 16), 16); }; @@ -126,24 +126,24 @@ namespace BlackMiscTest timer.start(); for (const auto &str : strList1) { if (newRegex.match(str).hasMatch()) number++; } ms = timer.elapsed(); - qDebug() << "new regex matched" << number << "of" << strList1.size() << "strings in" << ms << "ms"; + out << "new regex matched " << number << " of" << strList1.size() << " strings in " << ms << "ms" << endl; number = 0; timer.start(); for (const auto &str : strList2) { if (fullRegex.exactMatch(str)) number++; } ms = timer.elapsed(); - qDebug() << "full regex matched" << number << "of" << strList2.size() << "strings in" << ms << "ms"; + out << "full regex matched " << number << " of" << strList2.size() << " strings in " << ms << "ms" << endl; number = 0; timer.start(); for (const auto &str : strList3) { if (wildcardRegex.exactMatch(str)) number++; } ms = timer.elapsed(); - qDebug() << "wildcard matched" << number << "of" << strList3.size() << "strings in" << ms << "ms"; + out << "wildcard matched " << number << " of " << strList3.size() << " strings in " << ms << "ms" << endl; number = 0; timer.start(); for (const auto &str : strList4) { if (str.contains(containsStr)) number++; } ms = timer.elapsed(); - qDebug() << "contains matched" << number << "of" << strList4.size() << "strings in" << ms << "ms"; + out << "contains matched " << number << " of " << strList4.size() << " strings in " << ms << "ms" << endl; - qDebug() << "-----------------------------------------------"; + out << "-----------------------------------------------" << endl; return 0; } diff --git a/samples/blackmisc/samplesperformance.h b/samples/blackmisc/samplesperformance.h index d0746a7e8..81b5489b7 100644 --- a/samples/blackmisc/samplesperformance.h +++ b/samples/blackmisc/samplesperformance.h @@ -12,6 +12,8 @@ #ifndef BLACKMISCTEST_SAMPLESPERFORMANCEINDEX_H #define BLACKMISCTEST_SAMPLESPERFORMANCEINDEX_H +#include + namespace BlackMiscTest { //! Samples for our containers @@ -19,7 +21,7 @@ namespace BlackMiscTest { public: //! Run the samples - static int samples(); + static int samples(QTextStream &out); }; } // namespace diff --git a/src/blackmisc/avatcstation.h b/src/blackmisc/avatcstation.h index 6e8866fbb..16dc46219 100644 --- a/src/blackmisc/avatcstation.h +++ b/src/blackmisc/avatcstation.h @@ -160,6 +160,9 @@ namespace BlackMisc //! Set voice room void setVoiceRoom(const BlackMisc::Audio::CVoiceRoom &voiceRoom) { this->m_voiceRoom = voiceRoom; } + //! Set voice room URL + void setVoiceRoomUrl(const QString &url) { this->m_voiceRoom.setVoiceRoomUrl(url); } + //! Valid voice room? bool hasValidVoiceRoom() const { return this->m_voiceRoom.isValid(); } diff --git a/src/blackmisc/testing.cpp b/src/blackmisc/testing.cpp index f9fdecae2..1f3f36fed 100644 --- a/src/blackmisc/testing.cpp +++ b/src/blackmisc/testing.cpp @@ -44,9 +44,9 @@ namespace BlackMisc const QDateTime dtUntil = dtFrom.addSecs(60 * 60.0); // 1 hour const CUser user(id, usr); + CAtcStation station; if (byPropertyIndex) { - CAtcStation station; station.setPropertyByIndex(CCallsign(cs).toCVariant(), CAtcStation::IndexCallsign); station.setPropertyByIndex(user.toCVariant(), CAtcStation::IndexController); station.setPropertyByIndex(CFrequency(f, CFrequencyUnit::MHz()).toCVariant(), CAtcStation::IndexFrequency); @@ -56,16 +56,17 @@ namespace BlackMisc station.setPropertyByIndex(CVariant::from(dtFrom), CAtcStation::IndexBookedFrom); station.setPropertyByIndex(CVariant::from(dtUntil), CAtcStation::IndexBookedUntil); station.setPropertyByIndex(CLength(index + 1, CLengthUnit::NM()).toCVariant(), CAtcStation::IndexDistanceToOwnAircraft); - return station; } else { - CAtcStation station(CCallsign(cs), user, - CFrequency(f, CFrequencyUnit::MHz()), - geoPos, CLength(50, CLengthUnit::km()), false, dtFrom, dtUntil); + station = CAtcStation(CCallsign(cs), user, + CFrequency(f, CFrequencyUnit::MHz()), + geoPos, CLength(50, CLengthUnit::km()), false, dtFrom, dtUntil); station.setDistanceToOwnAircraft(CLength(index + 1, CLengthUnit::NM())); - return station; } + + station.setVoiceRoomUrl("vvl://foo.bar.baz/room" + QString::number(index)); + return station; } void CTesting::readStations(const CAtcStationList &stations, bool byPropertyIndex) diff --git a/src/blackmisc/voiceroom.cpp b/src/blackmisc/voiceroom.cpp index ee5f21c55..2b8847367 100644 --- a/src/blackmisc/voiceroom.cpp +++ b/src/blackmisc/voiceroom.cpp @@ -127,7 +127,7 @@ namespace BlackMisc QString url = serverUrl.trimmed().toLower(); url.replace(CVoiceRoom::protocolComplete(), ""); url.replace(CVoiceRoom::protocol(), ""); - QStringList splitParts = serverUrl.split("/"); + QStringList splitParts = url.split("/"); m_hostname = splitParts.at(0); m_channel = splitParts.at(1); }