File indexing completed on 2024-05-05 13:08:09
0001 /* 0002 SPDX-FileCopyrightText: 2021 Volker Krause <vkrause@kde.org> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #include <geo/polylinedecoder_p.h> 0008 0009 #include <QTest> 0010 0011 #include <iostream> 0012 0013 using namespace KPublicTransport; 0014 0015 class PolylineDecoderTest : public QObject 0016 { 0017 Q_OBJECT 0018 private Q_SLOTS: 0019 void testDecode() 0020 { 0021 PolylineDecoder<2> decoder("_p~iF~ps|U_ulLnnqC_mqNvxq`@"); 0022 0023 QCOMPARE(decoder.canReadMore(), true); 0024 QCOMPARE(decoder.readNextDouble(), 38.5); 0025 QCOMPARE(decoder.canReadMore(), true); 0026 QCOMPARE(decoder.readNextDouble(), -120.2); 0027 QCOMPARE(decoder.canReadMore(), true); 0028 QCOMPARE(decoder.readNextDouble(), 40.7); 0029 QCOMPARE(decoder.canReadMore(), true); 0030 QCOMPARE(decoder.readNextDouble(), -120.95); 0031 QCOMPARE(decoder.canReadMore(), true); 0032 QCOMPARE(decoder.readNextDouble(), 43.252); 0033 QCOMPARE(decoder.canReadMore(), true); 0034 QCOMPARE(decoder.readNextDouble(), -126.453); 0035 QCOMPARE(decoder.canReadMore(), false); 0036 } 0037 0038 void testEmpty() 0039 { 0040 PolylineDecoder<2> decoder(""); 0041 QCOMPARE(decoder.canReadMore(), false); 0042 } 0043 0044 void testZero() 0045 { 0046 PolylineDecoder<1> decoder("???"); 0047 QCOMPARE(decoder.canReadMore(), true); 0048 QCOMPARE(decoder.readNextInt(), 0); 0049 QCOMPARE(decoder.readNextDouble(), 0.0); 0050 QCOMPARE(decoder.readNextDouble(), 0.0); 0051 QCOMPARE(decoder.canReadMore(), false); 0052 } 0053 0054 void testNonDifferential() 0055 { 0056 PolylineDecoder<1, false> decoder("NL"); 0057 QCOMPARE(decoder.canReadMore(), true); 0058 QCOMPARE(decoder.readNextInt(), -8); 0059 QCOMPARE(decoder.readNextInt(), -7); 0060 QCOMPARE(decoder.canReadMore(), false); 0061 } 0062 0063 void testPolygon() 0064 { 0065 PolylineDecoder<2> decoder("_p~iF~ps|U_ulLnnqC_mqNvxq`@"); 0066 QPolygonF polygon; 0067 decoder.readPolygon(polygon); 0068 QCOMPARE(decoder.canReadMore(), false); 0069 QCOMPARE(polygon.size(), 3); 0070 QCOMPARE(polygon.isClosed(), false); 0071 QCOMPARE(polygon[0].x(), -120.2); 0072 QCOMPARE(polygon[0].y(), 38.5); 0073 } 0074 0075 #if 0 0076 void dumpEncoded() // mostly for manual testing 0077 { 0078 PolylineDecoder<1> decoder("?cAclA}K{P?gTwE?e@qNyMuEiWmVyNgAuBgAyJqHy[{MsQeWM?eF"); 0079 while (decoder.canReadMore()) { 0080 for (int i = 0; i < decoder.dimensions(); ++i) { 0081 std::cout << decoder.readNextDouble() << " "; 0082 } 0083 std::cout << std::endl; 0084 } 0085 } 0086 #endif 0087 }; 0088 0089 QTEST_GUILESS_MAIN(PolylineDecoderTest) 0090 0091 #include "polylinetest.moc"