/**************************************************************************** ** ** Copyright (C) 2016 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the test suite of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:GPL-EXCEPT$ ** 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 The Qt Company. For licensing terms ** and conditions see https://www.qt.io/terms-conditions. For further ** information use the contact form at https://www.qt.io/contact-us. ** ** GNU General Public License Usage ** Alternatively, this file may be used under the terms of the GNU ** General Public License version 3 as published by the Free Software ** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT ** included in the packaging of this file. Please review the following ** information to ensure the GNU General Public License requirements will ** be met: https://www.gnu.org/licenses/gpl-3.0.html. ** ** $QT_END_LICENSE$ ** ****************************************************************************/ #include #include #include QT_USE_NAMESPACE class tst_QGeoAddress : public QObject { Q_OBJECT public: tst_QGeoAddress(); private Q_SLOTS: void constructorTest(); void moveConstructTest(); void moveAssignTest(); void textTest(); void cityTest(); void countryCodeTest(); void countryTest(); void countyTest(); void districtTest(); void postalCodeTest(); void stateTest(); void streetTest(); void streetNumberTest(); void generatedText(); void generatedText_data(); void operatorsTest(); void emptyClearTest(); void hashingTest(); void hashingTest_data(); }; tst_QGeoAddress::tst_QGeoAddress() { } void tst_QGeoAddress::constructorTest() { QGeoAddress testObj; testObj.setStreet("testId"); auto testObjPtr = std::make_unique(testObj); QVERIFY2(testObjPtr != NULL, "Copy constructor - null"); QVERIFY2(*testObjPtr == testObj, "Copy constructor - compare"); } void tst_QGeoAddress::moveConstructTest() { QGeoAddress address; address.setCountry("country"); address.setCity("city"); address.setPostalCode("postcode"); address.setStreet("street"); address.setStreetNumber("number"); const QGeoAddress addressCopy = address; QCOMPARE(QGeoAddress(std::move(address)), addressCopy); } void tst_QGeoAddress::moveAssignTest() { QGeoAddress address; address.setCountry("country"); address.setCity("city"); address.setPostalCode("postcode"); address.setStreet("street"); address.setStreetNumber("number"); QGeoAddress addressCopy = address; QGeoAddress otherAddress; otherAddress = std::move(address); QCOMPARE(otherAddress, addressCopy); // Check that (move)assigning to a moved-from object is fine address = std::move(addressCopy); QCOMPARE(address, otherAddress); } void tst_QGeoAddress::textTest() { QGeoAddress address; QVERIFY(address.text().isEmpty()); address.setText(QStringLiteral("123 Fake Street\nSpringfield")); QCOMPARE(address.text(), QStringLiteral("123 Fake Street\nSpringfield")); } void tst_QGeoAddress::cityTest() { QGeoAddress testObj; QVERIFY2(testObj.city() == QString(), "Wrong default value"); testObj.setCity("testText"); QVERIFY2(testObj.city() == "testText", "Wrong value returned"); } void tst_QGeoAddress::countryCodeTest() { QGeoAddress testObj; QVERIFY2(testObj.countryCode() == QString(), "Wrong default value"); testObj.setCountryCode("testText"); QVERIFY2(testObj.countryCode() == "testText", "Wrong value returned"); } void tst_QGeoAddress::countryTest() { QGeoAddress testObj; QVERIFY2(testObj.country() == QString(), "Wrong default value"); testObj.setCountry("testText"); QVERIFY2(testObj.country() == "testText", "Wrong value returned"); } void tst_QGeoAddress::countyTest() { QGeoAddress testObj; QVERIFY2(testObj.county() == QString(), "Wrong default value"); testObj.setCounty("testText"); QVERIFY2(testObj.county() == "testText", "Wrong value returned"); } void tst_QGeoAddress::districtTest() { QGeoAddress testObj; QVERIFY2(testObj.district() == QString(), "Wrong default value"); testObj.setDistrict("testText"); QVERIFY2(testObj.district() == "testText", "Wrong value returned"); } void tst_QGeoAddress::postalCodeTest() { QGeoAddress testObj; QVERIFY2(testObj.postalCode() == QString(), "Wrong default value"); testObj.setPostalCode("testText"); QVERIFY2(testObj.postalCode() == "testText", "Wrong value returned"); } void tst_QGeoAddress::stateTest() { QGeoAddress testObj; QVERIFY2(testObj.state() == QString(), "Wrong default value"); testObj.setState("testText"); QVERIFY2(testObj.state() == "testText", "Wrong value returned"); } void tst_QGeoAddress::streetTest() { QGeoAddress testObj; QVERIFY2(testObj.street() == QString(), "Wrong default value"); testObj.setStreet("testText"); QVERIFY2(testObj.street() == "testText", "Wrong value returned"); } void tst_QGeoAddress::streetNumberTest() { QGeoAddress testObj; QVERIFY2(testObj.streetNumber() == QString(), "Wrong default value"); const auto streetNumber = QStringLiteral("some street number"); testObj.setStreetNumber(streetNumber); QVERIFY2(testObj.streetNumber() == streetNumber, "Wrong value returned"); } void tst_QGeoAddress::generatedText() { QFETCH(QString, countryCode); QFETCH(QString, expectedPostalCodeOnly); QFETCH(QString, expectedFullAddress); QGeoAddress streetOnly; streetOnly.setStreet("street"); streetOnly.setCountryCode(countryCode); QCOMPARE(streetOnly.text(), QStringLiteral("street")); QGeoAddress cityOnly; cityOnly.setCity("city"); cityOnly.setCountryCode(countryCode); if (countryCode == QLatin1String("CYM") || countryCode == QLatin1String("IRL")) QCOMPARE(cityOnly.text(), QString()); else QCOMPARE(cityOnly.text(), QStringLiteral("city")); QGeoAddress postalCodeOnly; postalCodeOnly.setPostalCode("postcode"); postalCodeOnly.setCountryCode(countryCode); QCOMPARE(postalCodeOnly.text(), expectedPostalCodeOnly); QGeoAddress fullAddress; fullAddress.setStreet("street"); fullAddress.setStreetNumber("number"); fullAddress.setDistrict("district"); fullAddress.setPostalCode("postcode"); fullAddress.setCity("city"); fullAddress.setState("state"); fullAddress.setCountry("country"); fullAddress.setCountryCode(countryCode); QCOMPARE(fullAddress.text(), expectedFullAddress); } void tst_QGeoAddress::generatedText_data() { QTest::addColumn("countryCode"); QTest::addColumn("expectedPostalCodeOnly"); QTest::addColumn("expectedFullAddress"); QTest::newRow("Albania") << QString::fromLatin1("ALB") << QString::fromLatin1("postcode") /* postal code only */ << QString::fromLatin1("street number
" /* full address */ "postcode, city
" "country"); QTest::newRow("Andorra") << QString::fromLatin1("AND") << QString::fromLatin1("postcode") << QString::fromLatin1("street number
" "postcode city
" "country"); QTest::newRow("United Arab Emirates") << QString::fromLatin1("ARE") << QString() << QString::fromLatin1("street number
" "district city
" "country"); QTest::newRow("Australia") << QString::fromLatin1("AUS") << QString::fromLatin1("postcode") << QString::fromLatin1("number street
" "district state postcode
" "country"); QTest::newRow("Austria") << QString::fromLatin1("AUT") << QString::fromLatin1("postcode") << QString::fromLatin1("street number
" "postcode city
" "country"); QTest::newRow("Bahamas") << QString::fromLatin1("BHS") << QString() << QString::fromLatin1("street number
" "district city
" "country"); QTest::newRow("Bahrain") << QString::fromLatin1("BHR") << QString() << QString::fromLatin1("street number
" "district, city, state
" "country"); QTest::newRow("Brazil") << QString::fromLatin1("BRA") << QString::fromLatin1("postcode") << QString::fromLatin1("street number
" "district city-state postcode
" "country"); QTest::newRow("Brunei Darussalam") << QString::fromLatin1("BRN") << QString::fromLatin1("postcode") << QString::fromLatin1("number street
" "district city postcode
" "country"); QTest::newRow("Canada") << QString::fromLatin1("CAN") << QString::fromLatin1("postcode") << QString::fromLatin1("number street
" "city, state postcode
" "country"); QTest::newRow("China") << QString::fromLatin1("CHN") << QString::fromLatin1("postcode") << QString::fromLatin1("street number, city
" "postcode state
" "country"); QTest::newRow("Chile") << QString::fromLatin1("CHL") << QString::fromLatin1("postcode") << QString::fromLatin1("street number
" "postcode district, city, state
" "country"); QTest::newRow("Cayman Islands") << QString::fromLatin1("CYM") << QString::fromLatin1("postcode") << QString::fromLatin1("number street
" "state postcode
" "country"); QTest::newRow("France") << QString::fromLatin1("FRA") << QString::fromLatin1("postcode") << QString::fromLatin1("number street
" "postcode city
" "country"); QTest::newRow("United Kingdom") << QString::fromLatin1("GBR") << QString::fromLatin1("postcode") << QString::fromLatin1("number street
" "district, city, postcode
" "country"); QTest::newRow("Gibraltar") << QString::fromLatin1("GIB") << QString() << QString::fromLatin1("number street
" "city
" "country"); QTest::newRow("Guadeloupe") << QString::fromLatin1("GLP") << QString::fromLatin1("postcode") << QString::fromLatin1("street number
" "postcode city
" "country"); QTest::newRow("French Guiana") << QString::fromLatin1("GUF") << QString::fromLatin1("postcode") << QString::fromLatin1("number street
" "postcode city
" "country"); QTest::newRow("Hong Kong") << QString::fromLatin1("HKG") << QString() << QString::fromLatin1("number street
" "district
" "city"); QTest::newRow("India") << QString::fromLatin1("IND") << QString::fromLatin1("postcode") << QString::fromLatin1("number street
" "city postcode state
" "country"); QTest::newRow("Indonesia") << QString::fromLatin1("IDN") << QString::fromLatin1("postcode") << QString::fromLatin1("street number
" "city, postcode
" "country"); QTest::newRow("Ireland") << QString::fromLatin1("IRL") << QString() << QString::fromLatin1("number street
" "district, state
" "country"); QTest::newRow("Italy") << QString::fromLatin1("ITA") << QString::fromLatin1("postcode") << QString::fromLatin1("street number
" "postcode city
" "country"); QTest::newRow("Jersey") << QString::fromLatin1("JEY") << QString::fromLatin1("postcode") << QString::fromLatin1("street number
" "city, postcode
" "country"); QTest::newRow("Jordan") << QString::fromLatin1("JOR") << QString::fromLatin1("postcode") << QString::fromLatin1("number street
" "district city postcode
" "country"); QTest::newRow("Kuwait") << QString::fromLatin1("KWT") << QString::fromLatin1("postcode") << QString::fromLatin1("street number
" "postcode, district, city
" "country"); QTest::newRow("Latvia") << QString::fromLatin1("LVA") << QString::fromLatin1("postcode") << QString::fromLatin1("street number
" "city, postcode
" "country"); QTest::newRow("Lebanon") << QString::fromLatin1("LBN") << QString::fromLatin1("postcode") << QString::fromLatin1("number street
" "district city postcode
" "country"); QTest::newRow("Luxembourg") << QString::fromLatin1("LUX") << QString::fromLatin1("postcode") << QString::fromLatin1("number street
" "postcode city
" "country"); QTest::newRow("Malta") << QString::fromLatin1("MLT") << QString::fromLatin1("postcode") << QString::fromLatin1("number street
" "city postcode
" "country"); QTest::newRow("Monaco") << QString::fromLatin1("MCO") << QString::fromLatin1("postcode") << QString::fromLatin1("number street
" "postcode city
" "country"); QTest::newRow("Mexico") << QString::fromLatin1("MEX") << QString::fromLatin1("postcode") << QString::fromLatin1("street number
" "district
" "postcode city, state
" "country"); QTest::newRow("Martinique") << QString::fromLatin1("MTQ") << QString::fromLatin1("postcode") << QString::fromLatin1("street number
" "postcode, city
" "country"); QTest::newRow("Malaysia") << QString::fromLatin1("MYS") << QString::fromLatin1("postcode") << QString::fromLatin1("number street
" "postcode city
" "state
" "country"); QTest::newRow("New Zealand") << QString::fromLatin1("NZL") << QString::fromLatin1("postcode") << QString::fromLatin1("number street
" "district city postcode
" "country"); QTest::newRow("Oman") << QString::fromLatin1("OMN") << QString::fromLatin1("postcode") << QString::fromLatin1("number street
" "district, postcode, city, country"); QTest::newRow("Puerto Rico") << QString::fromLatin1("PRI") << QString::fromLatin1("postcode") << QString::fromLatin1("street number
" "district, city, state, postcode
" "country"); QTest::newRow("Qatar") << QString::fromLatin1("QAT") << QString() << QString::fromLatin1("street number
" "district city, country"); QTest::newRow("Reunion") << QString::fromLatin1("REU") << QString::fromLatin1("postcode") << QString::fromLatin1("number street
" "postcode city
" "country"); QTest::newRow("Russian Federation") << QString::fromLatin1("RUS") << QString::fromLatin1("postcode") << QString::fromLatin1("street number
" "postcode city
" "country"); QTest::newRow("Saudi Arabia") << QString::fromLatin1("SAU") << QString::fromLatin1("postcode") << QString::fromLatin1("number street district
" "city postcode
" "country"); QTest::newRow("Singapore") << QString::fromLatin1("SGP") << QString::fromLatin1("postcode") << QString::fromLatin1("number street
" "city postcode
" "country"); QTest::newRow("Marino") << QString::fromLatin1("SMR") << QString::fromLatin1("postcode") << QString::fromLatin1("street number
" "postcode city
" "country"); QTest::newRow("Taiwan") << QString::fromLatin1("TWN") << QString() << QString::fromLatin1("street number, district, city
" "country"); QTest::newRow("Thailand") << QString::fromLatin1("THA") << QString("postcode") << QString::fromLatin1("street number
" "district, city postcode
" "country"); QTest::newRow("Turkey") << QString::fromLatin1("TUR") << QString("postcode") << QString::fromLatin1("street number
" "postcode district, city
" "country"); QTest::newRow("Ukraine") << QString::fromLatin1("UKR") << QString::fromLatin1("postcode") << QString::fromLatin1("street number
" "city postcode
" "country"); QTest::newRow("United States") << QString::fromLatin1("USA") << QString::fromLatin1("postcode") << QString::fromLatin1("number street
" "city, state postcode
" "country"); QTest::newRow("Virgin Islands, US") << QString::fromLatin1("VIR") << QString("postcode") << QString::fromLatin1("number street
" "city, state postcode
" "country"); QTest::newRow("Vatican City State") << QString::fromLatin1("VAT") << QString::fromLatin1("postcode") << QString::fromLatin1("street number
" "postcode city
" "country"); QTest::newRow("Venezuela") << QString::fromLatin1("VEN") << QString::fromLatin1("postcode") << QString::fromLatin1("street number
" "city postcode, state
" "country"); QTest::newRow("South Africa") << QString::fromLatin1("ZAF") << QString() << QString::fromLatin1("street number
" "district, city
" "country"); QTest::newRow("Finland") << QString::fromLatin1("FIN") << QString::fromLatin1("postcode") << QString::fromLatin1("street number
" "postcode city
" "country"); } void tst_QGeoAddress::operatorsTest() { QGeoAddress testObj; testObj.setStreet("testValue"); QGeoAddress testObj2; testObj2 = testObj; QVERIFY2(testObj == testObj2, "Not copied correctly"); testObj2.setCountry("testValue2"); QVERIFY2(testObj != testObj2, "Object should be different"); } void tst_QGeoAddress::emptyClearTest() { QGeoAddress testObj; QVERIFY(testObj.isEmpty()); testObj.setCountry(QStringLiteral("country")); QVERIFY(!testObj.isEmpty()); testObj.clear(); testObj.setCountryCode(QStringLiteral("countryCode")); QVERIFY(!testObj.isEmpty()); testObj.clear(); testObj.setState(QStringLiteral("state")); QVERIFY(!testObj.isEmpty()); testObj.clear(); testObj.setCounty(QStringLiteral("county")); QVERIFY(!testObj.isEmpty()); testObj.clear(); testObj.setCity(QStringLiteral("city")); QVERIFY(!testObj.isEmpty()); testObj.clear(); testObj.setDistrict(QStringLiteral("district")); QVERIFY(!testObj.isEmpty()); testObj.clear(); testObj.setPostalCode(QStringLiteral("postalCode")); QVERIFY(!testObj.isEmpty()); testObj.clear(); testObj.setStreet(QStringLiteral("street")); QVERIFY(!testObj.isEmpty()); testObj.clear(); testObj.setStreetNumber(QStringLiteral("street number")); QVERIFY(!testObj.isEmpty()); testObj.clear(); testObj.setText(QStringLiteral("formatted address")); QVERIFY(!testObj.isEmpty()); testObj.clear(); QVERIFY(testObj.isEmpty()); } void tst_QGeoAddress::hashingTest() { QFETCH(QGeoAddress, leftAddress); QFETCH(QGeoAddress, rightAddress); QFETCH(bool, result); const size_t leftHash = qHash(leftAddress); const size_t rightHash = qHash(rightAddress); QCOMPARE(leftHash == rightHash, result); } void tst_QGeoAddress::hashingTest_data() { QTest::addColumn("leftAddress"); QTest::addColumn("rightAddress"); QTest::addColumn("result"); QGeoAddress leftAddress; QGeoAddress rightAddress; QTest::newRow("empty") << leftAddress << rightAddress << true; // country leftAddress.setCountry("country"); QTest::newRow("different country") << leftAddress << rightAddress << false; rightAddress.setCountry("country"); QTest::newRow("same country") << leftAddress << rightAddress << true; // country code leftAddress.setCountryCode("country code"); QTest::newRow("different code") << leftAddress << rightAddress << false; rightAddress.setCountryCode("country code"); QTest::newRow("same code") << leftAddress << rightAddress << true; // state leftAddress.setState("state"); QTest::newRow("different state") << leftAddress << rightAddress << false; rightAddress.setState("state"); QTest::newRow("same state") << leftAddress << rightAddress << true; // county leftAddress.setCounty("county"); QTest::newRow("different county") << leftAddress << rightAddress << false; rightAddress.setCounty("county"); QTest::newRow("same county") << leftAddress << rightAddress << true; // city leftAddress.setCity("city"); QTest::newRow("different city") << leftAddress << rightAddress << false; rightAddress.setCity("city"); QTest::newRow("same city") << leftAddress << rightAddress << true; // district leftAddress.setDistrict("district"); QTest::newRow("different district") << leftAddress << rightAddress << false; rightAddress.setDistrict("district"); QTest::newRow("same district") << leftAddress << rightAddress << true; // street leftAddress.setStreet("street"); QTest::newRow("different street") << leftAddress << rightAddress << false; rightAddress.setStreet("street"); QTest::newRow("same street") << leftAddress << rightAddress << true; // street number leftAddress.setStreetNumber("number"); QTest::newRow("different number") << leftAddress << rightAddress << false; rightAddress.setStreetNumber("number"); QTest::newRow("same number") << leftAddress << rightAddress << true; // postal code leftAddress.setPostalCode("postal code"); QTest::newRow("different postcode") << leftAddress << rightAddress << false; rightAddress.setPostalCode("postal code"); QTest::newRow("same postcode") << leftAddress << rightAddress << true; // custom text leftAddress.setText("some custom text"); QTest::newRow("different custom text") << leftAddress << rightAddress << false; rightAddress.setText("some custom text"); QTest::newRow("same custom text") << leftAddress << rightAddress << true; // empty with custom text leftAddress.clear(); leftAddress.setText("some custom text"); rightAddress.clear(); QTest::newRow("empty with different custom text") << leftAddress << rightAddress << false; rightAddress.setText("some custom text"); QTest::newRow("empty with same custom text") << leftAddress << rightAddress << true; } QTEST_APPLESS_MAIN(tst_QGeoAddress) #include "tst_qgeoaddress.moc"