/**************************************************************************** ** ** 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 #include #include #include #include #include #include #include #include #include #include #include #include #include #include class tst_qmlinterface : public QObject { Q_OBJECT public: tst_qmlinterface(); private Q_SLOTS: void testAddress(); void testLocation(); void testCategory(); void testIcon(); void testRatings(); void testSupplier(); void testUser(); void testPlaceAttribute(); void testContactDetail(); void testPlace(); private: QGeoCoordinate m_coordinate; QGeoAddress m_address; QGeoRectangle m_rectangle; QGeoLocation m_location; QPlaceCategory m_category; QPlaceIcon m_icon; QPlaceRatings m_ratings; QPlaceSupplier m_supplier; QPlaceUser m_user; QPlaceAttribute m_placeAttribute; QPlaceContactDetail m_contactDetail; QList m_categories; QPlace m_place; }; tst_qmlinterface::tst_qmlinterface() { m_coordinate.setLongitude(10.0); m_coordinate.setLatitude(20.0); m_coordinate.setAltitude(30.0); m_address.setCity(QStringLiteral("Brisbane")); m_address.setCountry(QStringLiteral("Australia")); m_address.setCountryCode(QStringLiteral("AU")); m_address.setPostalCode(QStringLiteral("4000")); m_address.setState(QStringLiteral("Queensland")); m_address.setStreet(QStringLiteral("123 Fake Street")); m_rectangle.setCenter(m_coordinate); m_rectangle.setHeight(30.0); m_rectangle.setWidth(40.0); m_location.setAddress(m_address); m_location.setBoundingBox(m_rectangle); m_location.setCoordinate(m_coordinate); m_category.setName(QStringLiteral("Test category")); m_category.setCategoryId(QStringLiteral("test-category-id")); QVariantMap iconParams; iconParams.insert(QPlaceIcon::SingleUrl, QUrl(QStringLiteral("http://www.example.com/test-icon.png"))); m_icon.setParameters(iconParams); m_ratings.setAverage(3.5); m_ratings.setMaximum(5.0); m_ratings.setCount(10); m_supplier.setName(QStringLiteral("Test supplier")); m_supplier.setUrl(QUrl(QStringLiteral("http://www.example.com/test-supplier"))); m_supplier.setSupplierId(QStringLiteral("test-supplier-id")); m_supplier.setIcon(m_icon); m_user.setName(QStringLiteral("Test User")); m_user.setUserId(QStringLiteral("test-user-id")); m_placeAttribute.setLabel(QStringLiteral("Test Attribute")); m_placeAttribute.setText(QStringLiteral("Test attribute text")); m_contactDetail.setLabel(QStringLiteral("Test Contact Detail")); m_contactDetail.setValue(QStringLiteral("Test contact detail value")); QPlaceCategory category; category.setName(QStringLiteral("Test category 1")); category.setCategoryId(QStringLiteral("test-category-id-1")); m_categories.append(category); category.setName(QStringLiteral("Test category 2")); category.setCategoryId(QStringLiteral("test-category-id-2")); m_categories.append(category); m_place.setName(QStringLiteral("Test Place")); m_place.setPlaceId(QStringLiteral("test-place-id")); m_place.setAttribution(QStringLiteral("Place data by Foo")); m_place.setCategories(m_categories); m_place.setLocation(m_location); m_place.setRatings(m_ratings); m_place.setIcon(m_icon); m_place.setSupplier(m_supplier); m_place.setVisibility(QLocation::PrivateVisibility); } void tst_qmlinterface::testAddress() { QQmlEngine engine; QQmlComponent component(&engine, SRCDIR "data/TestAddress.qml"); QVERIFY2(component.isReady(), qPrintable(component.errorString())); QObject *qmlObject = component.create(); QGeoAddress address = qmlObject->property("address").value(); QCOMPARE(address, m_address); qmlObject->setProperty("address", QVariant::fromValue(QGeoAddress())); QVERIFY(qmlObject->property("city").toString().isEmpty()); QVERIFY(qmlObject->property("country").toString().isEmpty()); QVERIFY(qmlObject->property("countryCode").toString().isEmpty()); QVERIFY(qmlObject->property("postalCode").toString().isEmpty()); QVERIFY(qmlObject->property("state").toString().isEmpty()); QVERIFY(qmlObject->property("street").toString().isEmpty()); delete qmlObject; } void tst_qmlinterface::testLocation() { QQmlEngine engine; QQmlComponent component(&engine, SRCDIR "data/TestLocation.qml"); QVERIFY2(component.isReady(), qPrintable(component.errorString())); QObject *qmlObject = component.create(); QGeoLocation location = qmlObject->property("location").value(); QCOMPARE(location, m_location); qmlObject->setProperty("location", QVariant::fromValue(QGeoLocation())); QCOMPARE(qmlObject->property("address").value(), QGeoAddress()); QCOMPARE(qmlObject->property("boundingBox").value(), QGeoRectangle()); QCOMPARE(qmlObject->property("coordinate").value(), QGeoCoordinate()); delete qmlObject; } void tst_qmlinterface::testCategory() { QQmlEngine engine; QQmlComponent component(&engine, SRCDIR "data/TestCategory.qml"); QVERIFY2(component.isReady(), qPrintable(component.errorString())); QObject *qmlObject = component.create(); QPlaceCategory category = qmlObject->property("category").value(); QCOMPARE(category, m_category); qmlObject->setProperty("category", QVariant::fromValue(QPlaceCategory())); QVERIFY(qmlObject->property("name").toString().isEmpty()); QVERIFY(qmlObject->property("categoryId").toString().isEmpty()); delete qmlObject; } void tst_qmlinterface::testIcon() { QQmlEngine engine; QQmlComponent component(&engine, SRCDIR "data/TestIcon.qml"); QVERIFY2(component.isReady(), qPrintable(component.errorString())); QObject *qmlObject = component.create(); QPlaceIcon icon = qmlObject->property("icon").value(); QCOMPARE(icon, m_icon); qmlObject->setProperty("icon", QVariant::fromValue(QPlaceIcon())); QVERIFY(!qmlObject->property("fullUrl").toUrl().isValid()); delete qmlObject; } void tst_qmlinterface::testRatings() { QQmlEngine engine; QQmlComponent component(&engine, SRCDIR "data/TestRatings.qml"); QVERIFY2(component.isReady(), qPrintable(component.errorString())); QObject *qmlObject = component.create(); QPlaceRatings ratings = qmlObject->property("ratings").value(); QCOMPARE(ratings, m_ratings); qmlObject->setProperty("ratings", QVariant::fromValue(QPlaceRatings())); QCOMPARE(qmlObject->property("average").value(), 0.0); QCOMPARE(qmlObject->property("maximum").value(), 0.0); QCOMPARE(qmlObject->property("average").toInt(), 0); delete qmlObject; } void tst_qmlinterface::testSupplier() { QQmlEngine engine; QQmlComponent component(&engine, SRCDIR "data/TestSupplier.qml"); QVERIFY2(component.isReady(), qPrintable(component.errorString())); QObject *qmlObject = component.create(); QPlaceSupplier supplier = qmlObject->property("supplier").value(); QCOMPARE(supplier, m_supplier); qmlObject->setProperty("supplier", QVariant::fromValue(QPlaceSupplier())); QVERIFY(qmlObject->property("name").toString().isEmpty()); QVERIFY(!qmlObject->property("url").toUrl().isValid()); QVERIFY(qmlObject->property("supplierId").toString().isEmpty()); QCOMPARE(qmlObject->property("icon").value(), QPlaceIcon()); delete qmlObject; } void tst_qmlinterface::testUser() { QQmlEngine engine; QQmlComponent component(&engine, SRCDIR "data/TestUser.qml"); QVERIFY2(component.isReady(), qPrintable(component.errorString())); QObject *qmlObject = component.create(); QPlaceUser user = qmlObject->property("user").value(); QCOMPARE(user, m_user); qmlObject->setProperty("user", QVariant::fromValue(QPlaceUser())); QVERIFY(qmlObject->property("name").toString().isEmpty()); QVERIFY(qmlObject->property("userId").toString().isEmpty()); delete qmlObject; } void tst_qmlinterface::testPlaceAttribute() { QQmlEngine engine; QQmlComponent component(&engine, SRCDIR "data/TestPlaceAttribute.qml"); QVERIFY2(component.isReady(), qPrintable(component.errorString())); QObject *qmlObject = component.create(); QPlaceAttribute placeAttribute = qmlObject->property("attribute").value(); QCOMPARE(placeAttribute, m_placeAttribute); qmlObject->setProperty("attribute", QVariant::fromValue(QPlaceAttribute())); QVERIFY(qmlObject->property("label").toString().isEmpty()); QVERIFY(qmlObject->property("text").toString().isEmpty()); delete qmlObject; } void tst_qmlinterface::testContactDetail() { QQmlEngine engine; QQmlComponent component(&engine, SRCDIR "data/TestContactDetail.qml"); QVERIFY2(component.isReady(), qPrintable(component.errorString())); QObject *qmlObject = component.create(); QPlaceContactDetail contactDetail = qmlObject->property("contactDetail").value(); QCOMPARE(contactDetail, m_contactDetail); qmlObject->setProperty("contactDetail", QVariant::fromValue(QPlaceContactDetail())); QVERIFY(qmlObject->property("label").toString().isEmpty()); QVERIFY(qmlObject->property("value").toString().isEmpty()); delete qmlObject; } void tst_qmlinterface::testPlace() { QQmlEngine engine; QQmlComponent component(&engine, SRCDIR "data/TestPlace.qml"); QVERIFY2(component.isReady(), qPrintable(component.errorString())); QObject *qmlObject = component.create(); QPlace place = qmlObject->property("place").value(); QCOMPARE(place, m_place); qmlObject->setProperty("place", QVariant::fromValue(QPlace())); QVERIFY(qmlObject->property("name").toString().isEmpty()); QVERIFY(qmlObject->property("placeId").toString().isEmpty()); QVERIFY(qmlObject->property("attribution").toString().isEmpty()); QQmlListReference categories(qmlObject, "categories", &engine); QCOMPARE(categories.count(), 0); QCOMPARE(qmlObject->property("location").value(), QGeoLocation()); QCOMPARE(qmlObject->property("ratings").value(), QPlaceRatings()); QCOMPARE(qmlObject->property("icon").value(), QPlaceIcon()); QCOMPARE(qmlObject->property("supplier").value(), QPlaceSupplier()); delete qmlObject; } QTEST_MAIN(tst_qmlinterface) #include "tst_qmlinterface.moc"