/**************************************************************************** ** ** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the test suite of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL21$ ** Commercial License Usage ** Licensees holding valid commercial Qt licenses may use this file in ** accordance with the commercial license agreement provided with the ** Software or, alternatively, in accordance with the terms contained in ** a written agreement between you and Digia. For licensing terms and ** conditions see http://qt.digia.com/licensing. For further information ** use the contact form at http://qt.digia.com/contact-us. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 or version 3 as published by the Free ** Software Foundation and appearing in the file LICENSE.LGPLv21 and ** LICENSE.LGPLv3 included in the packaging of this file. Please review the ** following information to ensure the GNU Lesser General Public License ** requirements will be met: https://www.gnu.org/licenses/lgpl.html and ** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** In addition, as a special exception, Digia gives you certain additional ** rights. These rights are described in the Digia Qt LGPL Exception ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ** ** $QT_END_LICENSE$ ** ****************************************************************************/ #include #include #include "qgeotilespec_p.h" QT_USE_NAMESPACE class tst_QGeoTileSpec : public QObject { Q_OBJECT public: tst_QGeoTileSpec(); private: void populateGeoTileSpecData(); private Q_SLOTS: void constructorTest_data(); void constructorTest(); void pluginTest(); void zoomTest(); void xTest(); void yTest(); void mapIdTest(); void assignsOperatorTest_data(); void assignsOperatorTest(); void equalsOperatorTest_data(); void equalsOperatorTest(); void lessThanOperatorTest_data(); void lessThanOperatorTest(); void qHashTest_data(); void qHashTest(); }; tst_QGeoTileSpec::tst_QGeoTileSpec() { } void tst_QGeoTileSpec::populateGeoTileSpecData(){ QTest::addColumn("plugin"); QTest::addColumn("mapId"); QTest::addColumn("zoom"); QTest::addColumn("x"); QTest::addColumn("y"); QTest::newRow("zeros") << QString() << 0 << 0 << 0 << 0; QTest::newRow("valid") << QString("geo plugin") << 455 << 1 << 20 << 50; QTest::newRow("negative values") << QString("geo plugin negative") << -350 << 2 << -20 << -50; } void tst_QGeoTileSpec::constructorTest_data() { populateGeoTileSpecData(); } void tst_QGeoTileSpec::constructorTest() { QFETCH(QString,plugin); QFETCH(int,zoom); QFETCH(int,mapId); QFETCH(int,x); QFETCH(int,y); // test constructor copy with default values QGeoTileSpec testObj; QGeoTileSpec testObj2(testObj); QCOMPARE(testObj.plugin(), testObj2.plugin()); QCOMPARE(testObj.mapId(), testObj2.mapId()); QCOMPARE(testObj.zoom(), testObj2.zoom()); QCOMPARE(testObj.x(), testObj2.x()); QCOMPARE(testObj.y(), testObj2.y()); // test second construct QGeoTileSpec testObj3(plugin, mapId, zoom, x, y); QCOMPARE(testObj3.plugin(), plugin); QCOMPARE(testObj3.mapId(), mapId); QCOMPARE(testObj3.zoom(), zoom); QCOMPARE(testObj3.x(), x); QCOMPARE(testObj3.y(), y); } void tst_QGeoTileSpec::pluginTest() { QGeoTileSpec tileSpec; QCOMPARE(tileSpec.plugin(), QString()); QGeoTileSpec tileSpec2(QString("plugin test"),1,10,10,5); QCOMPARE(tileSpec2.plugin(), QString("plugin test")); } void tst_QGeoTileSpec::zoomTest() { QGeoTileSpec tileSpec; QVERIFY(tileSpec.zoom() == -1); tileSpec.setZoom(1); QVERIFY(tileSpec.zoom() == 1); QGeoTileSpec tileSpec2 = tileSpec; QVERIFY(tileSpec2.zoom() == 1); tileSpec.setZoom(2); QVERIFY(tileSpec2.zoom() == 1); } void tst_QGeoTileSpec::xTest() { QGeoTileSpec tileSpec; QVERIFY(tileSpec.x() == -1); tileSpec.setX(10); QVERIFY(tileSpec.x() == 10); QGeoTileSpec tileSpec2 = tileSpec; QVERIFY(tileSpec2.x() == 10); tileSpec.setX(30); QVERIFY(tileSpec2.x() == 10); } void tst_QGeoTileSpec::yTest() { QGeoTileSpec tileSpec; QVERIFY(tileSpec.y() == -1); tileSpec.setY(20); QVERIFY(tileSpec.y() == 20); QGeoTileSpec tileSpec2 = tileSpec; QVERIFY(tileSpec2.y() == 20); tileSpec.setY(40); QVERIFY(tileSpec2.y() == 20); } void tst_QGeoTileSpec::mapIdTest() { QGeoTileSpec tileSpec; QVERIFY(tileSpec.mapId() == 0); tileSpec.setMapId(1); QVERIFY(tileSpec.mapId() == 1); QGeoTileSpec tileSpec2 = tileSpec; QVERIFY(tileSpec2.mapId() == 1); tileSpec.setMapId(5); QVERIFY(tileSpec2.mapId() == 1); } void tst_QGeoTileSpec::assignsOperatorTest_data() { populateGeoTileSpecData(); } void tst_QGeoTileSpec::assignsOperatorTest() { QFETCH(QString,plugin); QFETCH(int,mapId); QFETCH(int,zoom); QFETCH(int,x); QFETCH(int,y); QGeoTileSpec testObj(plugin, mapId, zoom, x, y); QGeoTileSpec testObj2; testObj2 = testObj; // test the correctness of the asignment operator QVERIFY2(testObj2.plugin() == plugin, "Plugin not copied correctly"); QVERIFY2(testObj2.zoom() == zoom, "Zoom not copied correctly"); QVERIFY2(testObj2.mapId() == mapId, "Map Id not copied correctly"); QVERIFY2(testObj2.x() == x, "X not copied correctly"); QVERIFY2(testObj2.y() == y, "Y not copied correctly"); // verify that values have not changed after an assignment QVERIFY2(testObj.plugin() == testObj2.plugin(), "Plugin not copied correctly"); QVERIFY2(testObj.zoom() == testObj2.zoom(), "Zoom not copied correctly"); QVERIFY2(testObj.mapId() == testObj2.mapId(), "Map Id not copied correctly"); QVERIFY2(testObj.x() == testObj2.x(), "X not copied correctly"); QVERIFY2(testObj.y() == testObj2.y(), "Y not copied correctly"); } void tst_QGeoTileSpec::equalsOperatorTest_data() { populateGeoTileSpecData(); } void tst_QGeoTileSpec::equalsOperatorTest() { QFETCH(QString,plugin); QFETCH(int,mapId); QFETCH(int,zoom); QFETCH(int,x); QFETCH(int,y); QGeoTileSpec testObj(plugin, mapId, zoom, x, y); QGeoTileSpec testObj2(plugin, mapId, zoom, x, y); QVERIFY2(testObj == testObj2, "Equals operator is not correct"); // test QGeoTileSpec pairs where they differ in one field testObj2.setZoom(zoom+1); QVERIFY2(!(testObj == testObj2), "Equals operator is not correct"); testObj2 = testObj; testObj2.setMapId(mapId+1); QVERIFY2(!(testObj == testObj2), "Equals operator is not correct"); testObj2 = testObj; testObj2.setX(x+1); QVERIFY2(!(testObj == testObj2), "Equals operator is not correct"); testObj2 = testObj; testObj2.setY(y+1); QVERIFY2(!(testObj == testObj2), "Equals operator is not correct"); } void tst_QGeoTileSpec::lessThanOperatorTest_data() { populateGeoTileSpecData(); } void tst_QGeoTileSpec::lessThanOperatorTest() { QFETCH(QString,plugin); QFETCH(int,mapId); QFETCH(int,zoom); QFETCH(int,x); QFETCH(int,y); QGeoTileSpec testObj(plugin, mapId, zoom, x, y); QGeoTileSpec testObj2(testObj); QVERIFY(!(testObj < testObj2)); testObj2.setMapId(mapId-1); QVERIFY2(testObj2 < testObj, "Less than operator is not correct for mapId"); testObj2 = testObj; testObj2.setZoom(zoom-1); QVERIFY2(testObj2 < testObj, "Less than operator is not correct for zoom"); testObj2 = testObj; testObj2.setX(x-1); QVERIFY2(testObj2 < testObj, "Less than operator is not correct for x"); testObj2 = testObj; testObj2.setY(y-1); QVERIFY2(testObj2 < testObj, "Less than operator is not correct for y"); // less than comparisons are done in the order: plugin -> mapId -> zoom -> x -> y // the test below checks if the order is correct QGeoTileSpec testObj3(plugin + QString('a'), mapId-1, zoom-1, x-1, y-1); QVERIFY2(testObj < testObj3, "Order of less than operator is not correct"); QGeoTileSpec testObj4(plugin, mapId+1, zoom-1, x-1, y-1); QVERIFY2(testObj < testObj4, "Order of less than operator is not correct"); QGeoTileSpec testObj5(plugin, mapId, zoom+1, x-1, y-1); QVERIFY2(testObj < testObj5, "Order of less than operator is not correct"); QGeoTileSpec testObj6(plugin, mapId, zoom, x+1, y-1); QVERIFY2(testObj < testObj6, "Order of less than operator is not correct"); QGeoTileSpec testObj7(plugin, mapId, zoom, x, y+1); QVERIFY2(testObj < testObj7, "Order of less than operator is not correct"); QGeoTileSpec testObj8(plugin, mapId-1, zoom+1, x+1, y+1); QVERIFY2(testObj8 < testObj, "Order of less than operator is not correct"); QGeoTileSpec testObj9(plugin, mapId, zoom-1, x+1, y+1); QVERIFY2(testObj9 < testObj, "Order of less than operator is not correct"); QGeoTileSpec testObj10(plugin, mapId, zoom, x-1, y+1); QVERIFY2(testObj10 < testObj, "Order of less than operator is not correct"); } void tst_QGeoTileSpec::qHashTest_data(){ populateGeoTileSpecData(); } void tst_QGeoTileSpec::qHashTest() { QGeoTileSpec testObj; unsigned int hash1 = qHash(testObj); QGeoTileSpec testObj2; testObj2 = testObj; unsigned int hash2 = qHash(testObj2); QCOMPARE(hash1, hash2); QFETCH(QString,plugin); QFETCH(int,mapId); QFETCH(int,zoom); QFETCH(int,x); QFETCH(int,y); QGeoTileSpec testObj3(plugin, mapId, zoom, x, y); unsigned int hash3 = qHash(testObj3); QVERIFY(hash1 != hash3); testObj2.setMapId(testObj3.mapId()+1); testObj2.setZoom(testObj3.zoom()+1); testObj2.setX(testObj3.x()*5); testObj2.setY(testObj3.y()*10); hash2 = qHash(testObj2); QVERIFY(hash2 != hash3); } QTEST_APPLESS_MAIN(tst_QGeoTileSpec) #include "tst_qgeotilespec.moc"