blob: 11fc3c16b577c1c3df317b784c2c08777d92c94a [file] [log] [blame]
/****************************************************************************
**
** 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 <QtTest/QtTest>
#include <QtQml/QQmlEngine>
#include <QtQml/QQmlComponent>
#include <QtQml/QQmlListReference>
#include <QtPositioning/QGeoCoordinate>
#include <QtPositioning/QGeoAddress>
#include <QtPositioning/QGeoRectangle>
#include <QtPositioning/QGeoCircle>
#include <QtPositioning/QGeoLocation>
#include <QtLocation/QPlaceCategory>
#include <QtLocation/QPlace>
#include <QtLocation/QPlaceIcon>
#include <QtLocation/QPlaceRatings>
#include <QtLocation/QPlaceSupplier>
#include <QtLocation/QPlaceUser>
#include <QtLocation/QPlaceAttribute>
#include <QtLocation/QPlaceContactDetail>
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<QPlaceCategory> 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<QGeoAddress>();
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<QGeoLocation>();
QCOMPARE(location, m_location);
qmlObject->setProperty("location", QVariant::fromValue(QGeoLocation()));
QCOMPARE(qmlObject->property("address").value<QGeoAddress>(), QGeoAddress());
QCOMPARE(qmlObject->property("boundingBox").value<QGeoRectangle>(), QGeoRectangle());
QCOMPARE(qmlObject->property("coordinate").value<QGeoCoordinate>(), 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<QPlaceCategory>();
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<QPlaceIcon>();
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<QPlaceRatings>();
QCOMPARE(ratings, m_ratings);
qmlObject->setProperty("ratings", QVariant::fromValue(QPlaceRatings()));
QCOMPARE(qmlObject->property("average").value<qreal>(), 0.0);
QCOMPARE(qmlObject->property("maximum").value<qreal>(), 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<QPlaceSupplier>();
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>(), 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<QPlaceUser>();
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<QPlaceAttribute>();
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<QPlaceContactDetail>();
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<QPlace>();
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>(), QGeoLocation());
QCOMPARE(qmlObject->property("ratings").value<QPlaceRatings>(), QPlaceRatings());
QCOMPARE(qmlObject->property("icon").value<QPlaceIcon>(), QPlaceIcon());
QCOMPARE(qmlObject->property("supplier").value<QPlaceSupplier>(), QPlaceSupplier());
delete qmlObject;
}
QTEST_MAIN(tst_qmlinterface)
#include "tst_qmlinterface.moc"