File indexing completed on 2024-04-28 15:59:43
0001 /* 0002 SPDX-FileCopyrightText: 2020 Volker Krause <vkrause@kde.org> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #include <knowledgedb/linemetadata.h> 0008 0009 #include <QObject> 0010 #include <QTest> 0011 0012 using namespace KPublicTransport; 0013 0014 #define s(x) QStringLiteral(x) 0015 0016 class LineMetaDataTest : public QObject 0017 { 0018 Q_OBJECT 0019 private Q_SLOTS: 0020 void testLookup_data() 0021 { 0022 QTest::addColumn<double>("latitude"); 0023 QTest::addColumn<double>("longitude"); 0024 QTest::addColumn<QString>("name"); 0025 QTest::addColumn<Line::Mode>("mode"); 0026 QTest::addColumn<QColor>("color"); 0027 QTest::addColumn<QString>("logo"); 0028 QTest::addColumn<QString>("product"); 0029 0030 QTest::newRow("Berlin U1") << 52.52 << 13.40 << s("U1") << Line::Metro << QColor(0xff52b447) << s("Berlin%20transit%20icons%20-%20U1.svg") << s("U-Bahn.svg"); 0031 QTest::newRow("Berlin S7") << 52.52 << 13.40 << s("S7") << Line::RapidTransit << QColor(0xff8070b7) << s("Berlin%20transit%20icons%20-%20S7.svg") << s("S-Bahn-Logo.svg"); 0032 QTest::newRow("Berlin FEX") << 52.52 << 13.40 << s("FEX") << Line::LocalTrain << QColor() << s("FEX%20VBB%20(2021).png") << QString(); 0033 QTest::newRow("Berlin RE1") << 52.52 << 13.40 << s("RE1") << Line::LocalTrain << QColor(0xffff0000) << s("RE1%20VBB%20(2021).png") << QString(); 0034 QTest::newRow("Munich S1") << 48.13 << 11.58 << s("S1") << Line::RapidTransit << QColor(0xff36caec) << s("M%C3%BCnchen%20S1.svg") << s("S-Bahn-Logo.svg"); 0035 QTest::newRow("Munich S3") << 48.13 << 11.58 << s("S3") << Line::RapidTransit << QColor(0xff862996) << s("M%C3%BCnchen%20S3.svg") << s("S-Bahn-Logo.svg"); 0036 QTest::newRow("Munich U3") << 48.13 << 11.58 << s("U3") << Line::Metro << QColor(0xffe66432) << s("M%C3%BCnchen%20U3.svg") << s("U-Bahnlogo%20M%C3%BCnchen.svg"); 0037 QTest::newRow("Nurnberg S2") << 49.44 << 11.08 << s("S2") << Line::RapidTransit << QColor(0xff65b949) << QString() << s("S-Bahn-Logo.svg"); 0038 QTest::newRow("Nurnberg U2") << 49.44 << 11.08 << s("U2") << Line::Metro << QColor(0xffff0000) << s("N%C3%BCrnberg%20U2.svg") << s("U-Bahn.svg"); 0039 QTest::newRow("Nurnberg tram 5") << 49.44 << 11.08 << s("5") << Line::Tramway << QColor() << s("N%C3%BCrnberg%20T5.png") << s("Tram%20N%C3%BCrnberg%20Logo.png"); 0040 QTest::newRow("Frankfurt U8") << 50.1 << 8.66 << s("U8") << Line::Metro << QColor(0xffc77db5) << s("Frankfurt%20U8.svg") << s("U-Bahn.svg"); 0041 QTest::newRow("Brussels 2") << 50.83 << 4.33 << s("2") << Line::Metro << QColor(0xffed6c23) << s("STIB-MIVB%20Line%202.svg") << s("Brussels%20Metro%20Logo.svg"); 0042 QTest::newRow("Brussels 82") << 50.83 << 4.33 << s("82") << Line::Tramway << QColor(0xff91bee7) << s("STIB-MIVB%20Line%2082.svg") << s("Brussels%20tramway%20icon.svg"); 0043 QTest::newRow("Brussels S6") << 50.83 << 4.33 << s("S6") << Line::RapidTransit << QColor(0xff965f26) << QString() << s("NMBS%20S-Trein%20logo.svg"); 0044 QTest::newRow("Brussels S10") << 50.83 << 4.33 << s("S10") << Line::RapidTransit << QColor(0xff000000) << QString() << s("NMBS%20S-Trein%20logo.svg"); 0045 QTest::newRow("Paris RER C") << 48.84 << 2.37 << s("C") << Line::RapidTransit << QColor(0xfffcd946) << s("Paris%20transit%20icons%20-%20RER%20C.svg") << s("Paris%20transit%20icons%20-%20RER.svg"); 0046 QTest::newRow("Paris RER D") << 48.84 << 2.37 << s("D") << Line::RapidTransit << QColor(0xff5e9620) << s("Paris%20transit%20icons%20-%20RER%20D.svg") << s("Paris%20transit%20icons%20-%20RER.svg"); 0047 QTest::newRow("Paris Metro 1") << 48.84 << 2.37 << s("1") << Line::Metro << QColor(0xffffcd00) << s("Paris%20transit%20icons%20-%20M%C3%A9tro%201.svg") << s("Paris%20transit%20icons%20-%20M%C3%A9tro.svg"); 0048 QTest::newRow("Paris tram 1") << 48.84 << 2.37 << s("T1") << Line::Tramway << QColor(0xff216eb4) << s("Paris%20transit%20icons%20-%20Tram%201.svg") << s("Paris%20transit%20icons%20-%20Tram.svg"); 0049 QTest::newRow("Milano M5") << 45.48 << 9.18 << s("M5") << Line::Metro << QColor(0xffb395d0) << s("Milano%20linea%20M5.svg") << s("Logo%20Metropolitane%20Italia.svg"); 0050 QTest::newRow("Milano S1") << 45.48 << 9.18 << s("S1") << Line::RapidTransit << QColor(0xfffd0000) << s("Milano%20S1.svg") << s("Linee%20S%20di%20Milano.svg"); 0051 QTest::newRow("Hannover S1") << 52.37 << 9.74 << s("S1") << Line::RapidTransit << QColor(0xff7760b0) << s("Hannover%20S1.svg") << s("S-Bahn-Logo.svg"); 0052 QTest::newRow("Magdeburg S1") << 52.13 << 11.62 << s("S 1") << Line::RapidTransit << QColor(0xff408040) << QString() << s("S-Bahn-Logo.svg"); 0053 QTest::newRow("Magdeburg 1") << 52.13 << 11.62 << s("1") << Line::Tramway << QColor(0xffb6005c) << s("Magdeburg%20Tram%201%20(2021).png") << QString(); 0054 QTest::newRow("Vienna U1") << 48.18 << 16.37 << s("U1") << Line::Metro << QColor(0xffe20613) << s("Wien%20U1.svg") << s("U-Bahn%20Wien.svg"); 0055 QTest::newRow("Vienna S1") << 48.18 << 16.37 << s("S1") << Line::RapidTransit << QColor(0xff159dd9) << s("S1%20Wien.svg") << s("S-Bahn%20Wien.svg"); 0056 QTest::newRow("Hamburg U1") << 53.55 << 10.0 << s("U1") << Line::Metro << QColor(0xff0066b3) << s("Hamburg%20U1.svg") << s("U-Bahn.svg"); 0057 QTest::newRow("Hamburg S1") << 53.55 << 10.0 << s("S1") << Line::RapidTransit << QColor(0xff33b540) << s("Hamburg%20S1.svg") << s("S-Bahn-Logo.svg"); 0058 QTest::newRow("Copenhagen A") << 55.67 << 12.56 << s("A") << Line::RapidTransit << QColor(0xff00bfff) << s("S-train%20service%20A.svg") << s("S-tog.svg"); 0059 QTest::newRow("Cologne S11") << 50.94 << 6.97 << s("S11") << Line::RapidTransit << QColor(0xffef7c00) << s("NRW%20S11.svg") << s("S-Bahn-Logo.svg"); 0060 QTest::newRow("Stuttgart S1") << 48.78 << 9.18 << s("S1") << Line::RapidTransit << QColor(0xff5c8e3c) << s("S1%20S-Bahn%20Stuttgart%20Logo%20(2021).svg") << s("S-Bahn-Logo.svg"); 0061 QTest::newRow("Stuttgart U6") << 48.78 << 9.18 << s("U6") << Line::RapidTransit << QColor(0xffec008c) << QString() << s("Logo%20Stadtbahn%20Stuttgart.svg"); 0062 QTest::newRow("Barcelona L1") << 41.37 << 2.13 << s("L1") << Line::Metro << QColor(0xffe33638) << s("L1%20barcelona.svg") << s("Barcelona%20Metro%20Logo.svg"); 0063 QTest::newRow("Toulouse Metro A") << 43.6 << 1.44 << s("A") << Line::Metro << QColor(0xffdb001b) << s("Toulouse%20line%20A%20symbol.svg") << s("Toulouse%20%22M%22%20symbol.svg"); 0064 QTest::newRow("San Francisco BART Yellow") << 37.77 << -122.41 << s("Yellow") << Line::Metro << QColor(0xffffe800) << QString() << s("Bart-logo.svg"); 0065 QTest::newRow("Augsburg tram 3") << 48.33 << 10.89 << s("3") << Line::Tramway << QColor(0xffef7c00) << s("Augsburg%20Tram%203.svg") << QString(); 0066 QTest::newRow("Oslo T-Bane 4") << 59.94 << 10.76 << s("4") << Line::Metro << QColor(0xff0054a6) << s("Oslo%20Metro%204.svg") << s("Oslo%20T-bane%20Logo.svg"); 0067 QTest::newRow("Oslo tram 12") << 59.94 << 10.76 << s("12") << Line::Tramway << QColor(0xffa166aa) << s("Oslo%20Tramway%20new%2012.svg") << QString(); 0068 QTest::newRow("Prague C") << 50.07 << 14.47 << s("C") << Line::Metro << QColor(0xffcf003d) << s("Linka%20C%20(Praha).svg") << s("Prag%20Metro%20Logo.svg"); 0069 QTest::newRow("Bonn tram 61") << 50.73 << 7.1 << s("61") << Line::Tramway << QColor(0xff98c000) << QString() << s("Stadtbahn.svg"); 0070 QTest::newRow("Rome Metro A") << 41.8989 << 12.5089 << s("A") << Line::Metro << QColor(0xfff68b1f) << s("Metropolitana%20di%20Roma%20-%20logo%20linea%20A.svg") << s("Logo%20Metropolitane%20Italia.svg"); 0071 QTest::newRow("Gotenburg tram 6") << 57.7 << 11.96 << s("6") << Line::Tramway << QColor(0xfffa8719) << s("Sp%C3%A5rvagnslinje%206.svg") << QString(); 0072 QTest::newRow("Amsterdam line 54") << 52.37 << 4.9 << s("54") << Line::Metro << QColor(0xfffcfb05) << s("Amsterdam%20unofficial%20metro%20icon%20line%2054.svg") << s("Amsterdam%20metro%20logo.svg"); 0073 QTest::newRow("Thessaloniki metro 2") << 40.64 << 22.93 << s("2") << Line::Metro << QColor(0xff0070ff) << s("Thessaloniki%20Metro%20Line%202.svg") << QString(); 0074 QTest::newRow("Graz S5") << 47.1 << 15.4 << s("S5") << Line::RapidTransit << QColor(0xff8d1d81) << s("S5%20Steiermark.svg") << s("S-Bahn%20Austria.svg"); 0075 QTest::newRow("Zurich IC 1") << 47.37 << 8.54 << s("IC 1") << Line::LongDistanceTrain << QColor(0xffe43d2e) << s("IC%201%20logo.svg") << QString(); 0076 } 0077 0078 void testLookup() 0079 { 0080 QFETCH(double, latitude); 0081 QFETCH(double, longitude); 0082 QFETCH(QString, name); 0083 QFETCH(Line::Mode, mode); 0084 QFETCH(QColor, color); 0085 QFETCH(QString, logo); 0086 QFETCH(QString, product); 0087 0088 const auto l = LineMetaData::find(latitude, longitude, name, mode); 0089 QVERIFY(!l.isNull()); 0090 0091 QCOMPARE(l.name(), name); 0092 QCOMPARE(l.mode(), mode); 0093 QCOMPARE(l.color(), color); 0094 0095 if (logo.isEmpty()) { 0096 QCOMPARE(l.logoUrl(), QUrl()); 0097 } else { 0098 QCOMPARE(l.logoUrl().toString(QUrl::FullyEncoded), QString(QLatin1String("https://commons.wikimedia.org/wiki/Special:Redirect/file/") + logo)); 0099 } 0100 0101 if (product.isEmpty()) { 0102 QCOMPARE(l.modeLogoUrl(), QUrl()); 0103 } else { 0104 QCOMPARE(l.modeLogoUrl().toString(QUrl::FullyEncoded), QString(QLatin1String("https://commons.wikimedia.org/wiki/Special:Redirect/file/") + product)); 0105 } 0106 } 0107 0108 void testLookupSpecial() 0109 { 0110 const auto l = LineMetaData::find(52.52, 13.40, QStringLiteral("S 7"), Line::Train); 0111 QVERIFY(!l.isNull()); 0112 QCOMPARE(l.name(), QLatin1String("S7")); 0113 QCOMPARE(l.mode(), Line::RapidTransit); 0114 } 0115 0116 void testNegativeLookup() 0117 { 0118 auto l = LineMetaData::find(0.0f, -89.0, QStringLiteral("U1"), Line::Metro); 0119 QVERIFY(l.isNull()); 0120 0121 l = LineMetaData::find(52.52f, 13.40f, QStringLiteral("U11"), Line::Metro); 0122 QVERIFY(l.isNull()); 0123 0124 l = LineMetaData::find(52.52, 13.40, QStringLiteral("U1"), Line::Tramway); 0125 QVERIFY(l.isNull()); 0126 } 0127 }; 0128 0129 QTEST_GUILESS_MAIN(LineMetaDataTest) 0130 0131 #include "linemetadatatest.moc"