| /**************************************************************************** |
| ** |
| ** 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 <QtCore/QString> |
| #include <QtTest/QtTest> |
| #include <QtLocation/QPlaceSearchRequest> |
| #include <QtPositioning/QGeoCircle> |
| #include <QtPositioning/QGeoRectangle> |
| |
| QT_USE_NAMESPACE |
| |
| class tst_QPlaceSearchRequest : public QObject |
| { |
| Q_OBJECT |
| |
| public: |
| tst_QPlaceSearchRequest(); |
| |
| private Q_SLOTS: |
| void constructorTest(); |
| void searchTermTest(); |
| void categoriesTest(); |
| void boundingCircleTest(); |
| void boundingBoxTest(); |
| void searchAreaTest(); |
| void visibilityScopeTest(); |
| void relevanceHintTest(); |
| void searchContextTest(); |
| void operatorsTest(); |
| void clearTest(); |
| }; |
| |
| tst_QPlaceSearchRequest::tst_QPlaceSearchRequest() |
| { |
| } |
| |
| void tst_QPlaceSearchRequest::constructorTest() |
| { |
| QPlaceSearchRequest testObj; |
| Q_UNUSED(testObj); |
| |
| QPlaceSearchRequest *testObjPtr = new QPlaceSearchRequest(testObj); |
| QVERIFY2(testObjPtr != NULL, "Copy constructor - null"); |
| QVERIFY2(*testObjPtr == testObj, "Copy constructor - compare"); |
| delete testObjPtr; |
| } |
| |
| void tst_QPlaceSearchRequest::searchTermTest() |
| { |
| QPlaceSearchRequest testObj; |
| QVERIFY2(testObj.searchTerm() == QString(), "Wrong default value"); |
| testObj.setSearchTerm("testText"); |
| QVERIFY2(testObj.searchTerm() == "testText", "Wrong value returned"); |
| } |
| |
| void tst_QPlaceSearchRequest::categoriesTest() |
| { |
| QPlaceSearchRequest testObj; |
| QVERIFY2(testObj.categories().count() == 0, "Wrong default value"); |
| QPlaceCategory cat; |
| cat.setCategoryId("45346"); |
| testObj.setCategory(cat); |
| QVERIFY2(testObj.categories().count() == 1, "Wrong categories count returned"); |
| QVERIFY2(testObj.categories()[0] == cat, "Wrong category returned"); |
| |
| testObj.setCategory(QPlaceCategory()); |
| QVERIFY(testObj.categories().isEmpty()); |
| } |
| |
| void tst_QPlaceSearchRequest::boundingCircleTest() |
| { |
| QPlaceSearchRequest query; |
| QVERIFY2(query.searchArea() == QGeoShape(), "Wrong default value"); |
| QGeoCircle circle; |
| circle.setCenter(QGeoCoordinate(30,20)); |
| circle.setRadius(500.0); |
| query.setSearchArea(circle); |
| |
| QVERIFY(query.searchArea() != QGeoShape()); |
| QVERIFY(query.searchArea().type() == QGeoShape::CircleType); |
| QVERIFY(query.searchArea() == circle); |
| |
| QGeoCircle retrievedCircle = query.searchArea(); |
| QVERIFY2(retrievedCircle.center() == QGeoCoordinate(30,20), "Wrong value returned"); |
| QVERIFY2(retrievedCircle.radius() == 500.0, "Wrong value returned"); |
| query.clear(); |
| QVERIFY2(query.searchArea() == QGeoShape(), "Search area not cleared"); |
| } |
| |
| void tst_QPlaceSearchRequest::boundingBoxTest() |
| { |
| QPlaceSearchRequest query; |
| QVERIFY2(query.searchArea() == QGeoShape(), "Wrong default value"); |
| QGeoRectangle box; |
| |
| box.setTopLeft(QGeoCoordinate(30,20)); |
| box.setBottomRight(QGeoCoordinate(10,50)); |
| query.setSearchArea(box); |
| |
| QVERIFY(query.searchArea() != QGeoShape()); |
| QVERIFY(query.searchArea().type() == QGeoShape::RectangleType); |
| QVERIFY(query.searchArea() == box); |
| |
| QGeoRectangle retrievedBox = query.searchArea(); |
| QVERIFY2(retrievedBox.topLeft() == QGeoCoordinate(30,20), "Wrong value returned"); |
| QVERIFY2(retrievedBox.bottomRight() == QGeoCoordinate(10,50), "Wrong value returned"); |
| |
| query.clear(); |
| QVERIFY2(query.searchArea() == QGeoShape(), "Wrong cleared value returned"); |
| } |
| |
| void tst_QPlaceSearchRequest::searchAreaTest() |
| { |
| //test assignment of new search area over an old search area |
| QPlaceSearchRequest *query = new QPlaceSearchRequest; |
| QGeoCircle circle; |
| circle.setCenter(QGeoCoordinate(30,20)); |
| circle.setRadius(500.0); |
| query->setSearchArea(circle); |
| |
| QVERIFY(query->searchArea() == circle); |
| QGeoRectangle box; |
| box.setTopLeft(QGeoCoordinate(30,20)); |
| box.setBottomRight(QGeoCoordinate(10,50)); |
| query->setSearchArea(box); |
| QVERIFY2(query->searchArea() == box, "New search area not assigned"); |
| } |
| |
| void tst_QPlaceSearchRequest::visibilityScopeTest() |
| { |
| QPlaceSearchRequest query; |
| QVERIFY2(query.visibilityScope() == QLocation::UnspecifiedVisibility, "Wrong default value"); |
| |
| query.setVisibilityScope(QLocation::DeviceVisibility); |
| QCOMPARE(query.visibilityScope(), QLocation::DeviceVisibility); |
| |
| query.setVisibilityScope(QLocation::DeviceVisibility | QLocation::PublicVisibility); |
| QVERIFY(query.visibilityScope() & QLocation::DeviceVisibility); |
| QVERIFY(!(query.visibilityScope() & QLocation::PrivateVisibility)); |
| QVERIFY(query.visibilityScope() & QLocation::PublicVisibility); |
| } |
| |
| void tst_QPlaceSearchRequest::relevanceHintTest() |
| { |
| QPlaceSearchRequest request; |
| QCOMPARE(request.relevanceHint(), QPlaceSearchRequest::UnspecifiedHint); |
| request.setRelevanceHint(QPlaceSearchRequest::DistanceHint); |
| QCOMPARE(request.relevanceHint(), QPlaceSearchRequest::DistanceHint); |
| request.setRelevanceHint(QPlaceSearchRequest::UnspecifiedHint); |
| QCOMPARE(request.relevanceHint(), QPlaceSearchRequest::UnspecifiedHint); |
| } |
| |
| void tst_QPlaceSearchRequest::searchContextTest() |
| { |
| QPlaceSearchRequest request; |
| QVERIFY(!request.searchContext().value<QUrl>().isValid()); |
| request.setSearchContext(QUrl(QStringLiteral("http://www.example.com/"))); |
| QCOMPARE(request.searchContext().value<QUrl>(), QUrl(QStringLiteral("http://www.example.com/"))); |
| } |
| |
| void tst_QPlaceSearchRequest::operatorsTest() |
| { |
| QPlaceSearchRequest testObj; |
| testObj.setSearchTerm(QStringLiteral("testValue")); |
| QPlaceSearchRequest testObj2; |
| testObj2 = testObj; |
| QVERIFY2(testObj == testObj2, "Not copied correctly"); |
| testObj2.setSearchTerm(QStringLiteral("abc")); |
| QVERIFY2(testObj != testObj2, "Object should be different"); |
| testObj2.setSearchTerm(QStringLiteral("testValue")); |
| QVERIFY(testObj == testObj2); |
| |
| QGeoRectangle b1(QGeoCoordinate(20,20), QGeoCoordinate(10,30)); |
| QGeoRectangle b2(QGeoCoordinate(20,20), QGeoCoordinate(10,30)); |
| QGeoRectangle b3(QGeoCoordinate(40,40), QGeoCoordinate(10,40)); |
| |
| //testing that identical boxes match |
| testObj.setSearchArea(b1); |
| testObj2.setSearchArea(b2); |
| QVERIFY2(testObj == testObj2, "Identical box areas are not identified as matching"); |
| |
| //test that different boxes do not match |
| testObj2.setSearchArea(b3); |
| QVERIFY2(testObj != testObj2, "Different box areas identified as matching"); |
| |
| QGeoCircle c1(QGeoCoordinate(5,5),500); |
| QGeoCircle c2(QGeoCoordinate(5,5),500); |
| QGeoCircle c3(QGeoCoordinate(9,9),600); |
| |
| //test that identical cirlces match |
| testObj.setSearchArea(c1); |
| testObj2.setSearchArea(c2); |
| QVERIFY2(testObj == testObj2, "Identical circle areas are not identified as matching"); |
| |
| //test that different circle don't match |
| testObj2.setSearchArea(c3); |
| QVERIFY2(testObj != testObj2, "Different circle areas identified as matching"); |
| |
| //test that circles and boxes do not match |
| QGeoRectangle b4(QGeoCoordinate(20,20),QGeoCoordinate(10,30)); |
| QGeoCircle c4(QGeoCoordinate(20,20),500); |
| testObj.setSearchArea(b4); |
| testObj2.setSearchArea(c4); |
| QVERIFY2(testObj != testObj2, "Circle and box identified as matching"); |
| |
| //test that identical visibility scopes match |
| testObj.clear(); |
| testObj2.clear(); |
| testObj.setVisibilityScope(QLocation::PublicVisibility); |
| testObj2.setVisibilityScope(QLocation::PublicVisibility); |
| QVERIFY2(testObj == testObj2, "Identical scopes not identified as matching"); |
| |
| //test that different scopes do not match |
| testObj2.setVisibilityScope(QLocation::PrivateVisibility); |
| QVERIFY2(testObj != testObj2, "Different scopes identified as matching"); |
| |
| //test that different search contexts do not match |
| testObj.clear(); |
| testObj2.clear(); |
| testObj2.setSearchContext(QUrl(QStringLiteral("http://www.example.com/"))); |
| QVERIFY(testObj != testObj2); |
| } |
| |
| void tst_QPlaceSearchRequest::clearTest() |
| { |
| QPlaceSearchRequest req; |
| req.setSearchTerm("pizza"); |
| req.setSearchArea(QGeoCircle(QGeoCoordinate(1,1), 5000)); |
| QPlaceCategory category; |
| category.setName("Fast Food"); |
| req.setCategory(category); |
| req.setLimit(100); |
| |
| req.clear(); |
| QVERIFY(req.searchTerm().isEmpty()); |
| QVERIFY(req.searchArea() == QGeoShape()); |
| QVERIFY(req.categories().isEmpty()); |
| QVERIFY(req.limit() == -1); |
| } |
| |
| QTEST_APPLESS_MAIN(tst_QPlaceSearchRequest) |
| |
| #include "tst_qplacesearchrequest.moc" |