1 /****************************************************************************
2 **
3 ** Copyright (C) 2016 Aaron McCarthy <mccarthy.aaron@gmail.com>
4 ** Contact: https://www.qt.io/licensing/
5 **
6 ** This file is part of the test suite module of the Qt Toolkit.
7 **
8 ** $QT_BEGIN_LICENSE:GPL-EXCEPT$
9 ** Commercial License Usage
10 ** Licensees holding valid commercial Qt licenses may use this file in
11 ** accordance with the commercial license agreement provided with the
12 ** Software or, alternatively, in accordance with the terms contained in
13 ** a written agreement between you and The Qt Company. For licensing terms
14 ** and conditions see https://www.qt.io/terms-conditions. For further
15 ** information use the contact form at https://www.qt.io/contact-us.
16 **
17 ** GNU General Public License Usage
18 ** Alternatively, this file may be used under the terms of the GNU
19 ** General Public License version 3 as published by the Free Software
20 ** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
21 ** included in the packaging of this file. Please review the following
22 ** information to ensure the GNU General Public License requirements will
23 ** be met: https://www.gnu.org/licenses/gpl-3.0.html.
24 **
25 ** $QT_END_LICENSE$
26 **
27 ****************************************************************************/
28 
29 #include <QtCore/QString>
30 #include <QtLocation/QPlaceProposedSearchResult>
31 #include <QtLocation/QPlaceIcon>
32 #include <QtLocation/QPlaceSearchRequest>
33 #include <QtTest/QtTest>
34 
35 #include "../utils/qlocationtestutils_p.h"
36 
37 QT_USE_NAMESPACE
38 
39 class tst_QPlaceProposedSearchResult : public QObject
40 {
41     Q_OBJECT
42 
43 public:
44     QPlaceProposedSearchResult initialSubObject();
45     bool checkType(const QPlaceSearchResult &result);
46     void detach(QPlaceSearchResult *result);
47     void setSubClassProperty(QPlaceProposedSearchResult *result);
48 
49 private Q_SLOTS:
50     void constructorTest();
51     void title();
52     void icon();
53     void searchRequest();
54     void conversion();
55 };
56 
initialSubObject()57 QPlaceProposedSearchResult tst_QPlaceProposedSearchResult::initialSubObject()
58 {
59     QPlaceProposedSearchResult proposedSearchResult;
60     proposedSearchResult.setTitle(QStringLiteral("title"));
61 
62     QPlaceIcon icon;
63     QVariantMap parameters;
64     parameters.insert(QPlaceIcon::SingleUrl,
65                       QUrl(QStringLiteral("file:///opt/icons/icon.png")));
66     icon.setParameters(parameters);
67     proposedSearchResult.setIcon(icon);
68 
69     QPlaceSearchRequest searchRequest;
70     searchRequest.setSearchContext(QUrl(QStringLiteral("http://www.example.com/")));
71     proposedSearchResult.setSearchRequest(searchRequest);
72 
73     return proposedSearchResult;
74 }
75 
checkType(const QPlaceSearchResult & result)76 bool tst_QPlaceProposedSearchResult::checkType(const QPlaceSearchResult &result)
77 {
78     return result.type() == QPlaceSearchResult::ProposedSearchResult;
79 }
80 
detach(QPlaceSearchResult * result)81 void tst_QPlaceProposedSearchResult::detach(QPlaceSearchResult *result)
82 {
83     result->setTitle(QStringLiteral("title"));
84 }
85 
setSubClassProperty(QPlaceProposedSearchResult * result)86 void tst_QPlaceProposedSearchResult::setSubClassProperty(QPlaceProposedSearchResult *result)
87 {
88     QPlaceSearchRequest request;
89     request.setSearchContext(QUrl(QStringLiteral("http://www.example.com/place-search")));
90     result->setSearchRequest(request);
91 }
92 
constructorTest()93 void tst_QPlaceProposedSearchResult::constructorTest()
94 {
95     QPlaceProposedSearchResult result;
96     QCOMPARE(result.type(), QPlaceSearchResult::ProposedSearchResult);
97 
98     result.setTitle(QStringLiteral("title"));
99 
100     QPlaceIcon icon;
101     QVariantMap parameters;
102     parameters.insert(QStringLiteral("paramKey"), QStringLiteral("paramValue"));
103     icon.setParameters(parameters);
104     result.setIcon(icon);
105 
106     QPlaceSearchRequest searchRequest;
107     searchRequest.setSearchContext(QUrl(QStringLiteral("http://www.example.com/place-search")));
108     result.setSearchRequest(searchRequest);
109 
110     //check copy constructor
111     QPlaceProposedSearchResult result2(result);
112     QCOMPARE(result2.title(), QStringLiteral("title"));
113     QCOMPARE(result2.icon(), icon);
114     QCOMPARE(result2.searchRequest(), searchRequest);
115 
116     QVERIFY(QLocationTestUtils::compareEquality(result, result2));
117 
118     //check results are the same after detachment of underlying shared data pointer
119     result2.setTitle(QStringLiteral("title"));
120     QVERIFY(QLocationTestUtils::compareEquality(result, result2));
121 
122     //check construction of SearchResult using a ProposedSearchResult
123     QPlaceSearchResult searchResult(result);
124     QCOMPARE(searchResult.title(), QStringLiteral("title"));
125     QCOMPARE(searchResult.icon(), icon);
126     QVERIFY(QLocationTestUtils::compareEquality(searchResult, result));
127     QVERIFY(searchResult.type() == QPlaceSearchResult::ProposedSearchResult);
128     result2 = searchResult;
129     QVERIFY(QLocationTestUtils::compareEquality(result, result2));
130 
131     //check construction of a SearchResult using a SearchResult
132     //that is actually a PlaceResult underneath
133     QPlaceSearchResult searchResult2(searchResult);
134     QCOMPARE(searchResult2.title(), QStringLiteral("title"));
135     QCOMPARE(searchResult2.icon(), icon);
136     QVERIFY(QLocationTestUtils::compareEquality(searchResult2, result));
137     QVERIFY(QLocationTestUtils::compareEquality(searchResult, searchResult2));
138     QVERIFY(searchResult2.type() == QPlaceSearchResult::ProposedSearchResult);
139     result2 = searchResult2;
140     QVERIFY(QLocationTestUtils::compareEquality(result, result2));
141 }
142 
title()143 void tst_QPlaceProposedSearchResult::title()
144 {
145     QPlaceProposedSearchResult result;
146     QVERIFY(result.title().isEmpty());
147 
148     result.setTitle(QStringLiteral("title"));
149     QCOMPARE(result.title(), QStringLiteral("title"));
150 
151     result.setTitle(QString());
152     QVERIFY(result.title().isEmpty());
153 
154     QPlaceProposedSearchResult result2;
155     QVERIFY(QLocationTestUtils::compareEquality(result, result2));
156 
157     result2.setTitle("title");
158     QVERIFY(QLocationTestUtils::compareInequality(result, result2));
159 
160     result.setTitle("title");
161     QVERIFY(QLocationTestUtils::compareEquality(result, result2));
162 }
163 
icon()164 void tst_QPlaceProposedSearchResult::icon()
165 {
166     QPlaceProposedSearchResult result;
167     QVERIFY(result.icon().isEmpty());
168 
169     QPlaceIcon icon;
170     QVariantMap iconParams;
171     iconParams.insert(QStringLiteral("paramKey"), QStringLiteral("paramValue"));
172     icon.setParameters(iconParams);
173     result.setIcon(icon);
174     QCOMPARE(result.icon(), icon);
175 
176     result.setIcon(QPlaceIcon());
177     QVERIFY(result.icon().isEmpty());
178 
179     QPlaceProposedSearchResult result2;
180     QVERIFY(QLocationTestUtils::compareEquality(result, result2));
181 
182     result2.setIcon(icon);
183     QVERIFY(QLocationTestUtils::compareInequality(result, result2));
184 
185     result.setIcon(icon);
186     QVERIFY(QLocationTestUtils::compareEquality(result, result2));
187 }
188 
searchRequest()189 void tst_QPlaceProposedSearchResult::searchRequest()
190 {
191     QPlaceProposedSearchResult result;
192     QCOMPARE(result.searchRequest(), QPlaceSearchRequest());
193 
194     QPlaceSearchRequest placeSearchRequest;
195     placeSearchRequest.setSearchContext(QUrl(QStringLiteral("http://www.example.com/")));
196     result.setSearchRequest(placeSearchRequest);
197     QCOMPARE(result.searchRequest(), placeSearchRequest);
198 
199     result.setSearchRequest(QPlaceSearchRequest());
200     QCOMPARE(result.searchRequest(), QPlaceSearchRequest());
201 
202     QPlaceProposedSearchResult result2;
203     QVERIFY(QLocationTestUtils::compareEquality(result, result2));
204 
205     result2.setSearchRequest(placeSearchRequest);
206     QVERIFY(QLocationTestUtils::compareInequality(result, result2));
207 
208     result.setSearchRequest(placeSearchRequest);
209     QVERIFY(QLocationTestUtils::compareEquality(result, result2));
210 }
211 
conversion()212 void tst_QPlaceProposedSearchResult::conversion()
213 {
214     QLocationTestUtils::testConversion<tst_QPlaceProposedSearchResult,
215                                        QPlaceSearchResult,
216                                        QPlaceProposedSearchResult>(this);
217 }
218 
219 QTEST_APPLESS_MAIN(tst_QPlaceProposedSearchResult)
220 
221 #include "tst_qproposedsearchresult.moc"
222