File indexing completed on 2024-04-21 04:41:07

0001 /*
0002     SPDX-FileCopyrightText: 2021 Volker Krause <vkrause@kde.org>
0003 
0004     SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #include <KPublicTransport/JourneyRequest>
0008 
0009 #include <QTest>
0010 
0011 #define s(x) QStringLiteral(x)
0012 
0013 using namespace KPublicTransport;
0014 
0015 namespace KPublicTransport {
0016 class JourneyRequestTest : public QObject
0017 {
0018     Q_OBJECT
0019 private Q_SLOTS:
0020     void testAccessEgressModeValidation()
0021     {
0022         JourneyRequest req;
0023 
0024         // there always has to be at least one access/egress mode
0025         req.setAccessModes(std::vector<IndividualTransport>{});
0026         req.setEgressModes(std::vector<IndividualTransport>{});
0027         req.validate();
0028         QCOMPARE(req.accessModes().size(), 1);
0029         QCOMPARE(req.accessModes()[0], IndividualTransport{IndividualTransport::Walk});
0030         QCOMPARE(req.egressModes().size(), 1);
0031         QCOMPARE(req.egressModes()[0], IndividualTransport{IndividualTransport::Walk});
0032 
0033         // parking is not a valid qualifier for egress
0034         req.setEgressModes(std::vector<IndividualTransport>{{IndividualTransport::Bike, IndividualTransport::Park}});
0035         req.validate();
0036         QCOMPARE(req.egressModes()[0], IndividualTransport{IndividualTransport::Walk});
0037 
0038         // when taking a bike on public transport, we also need to take it off again
0039         req.setAccessModes(std::vector<IndividualTransport>{{IndividualTransport::Bike}});
0040         req.validate();
0041         QCOMPARE(req.egressModes().size(), 2);
0042         QCOMPARE(req.egressModes()[1], IndividualTransport{IndividualTransport::Bike});
0043 
0044         // cars can't be taken on a train
0045         req.setAccessModes(std::vector<IndividualTransport>{{IndividualTransport::Car}});
0046         req.validate();
0047         QCOMPARE(req.accessModes().size(), 1);
0048         QCOMPARE(req.accessModes()[0], IndividualTransport{IndividualTransport::Walk});
0049         // ... and that also means we wont have a bike to take of the train again
0050         QCOMPARE(req.egressModes().size(), 1);
0051         QCOMPARE(req.egressModes()[0], IndividualTransport{IndividualTransport::Walk});
0052     }
0053 };
0054 }
0055 
0056 QTEST_GUILESS_MAIN(JourneyRequestTest)
0057 
0058 #include "journeyrequesttest.moc"