1 /****************************************************************************
2 **
3 ** Copyright (C) 2016 The Qt Company Ltd.
4 ** Contact: https://www.qt.io/licensing/
5 **
6 ** This file is part of the test suite 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 #ifndef PLACEMANAGER_UTILS_H
30 #define PLACEMANAGER_UTILS_H
31 
32 #include <QtCore/QString>
33 #include <QtLocation/QPlaceReply>
34 #include <QtLocation/QLocation>
35 #include <QtLocation/QPlaceContent>
36 
37 #ifndef WAIT_UNTIL
38 #define WAIT_UNTIL(__expr) \
39         do { \
40         const int __step = 50; \
41         const int __timeout = 25000; \
42         if (!(__expr)) { \
43             QTest::qWait(0); \
44         } \
45         for (int __i = 0; __i < __timeout && !(__expr); __i+=__step) { \
46             QTest::qWait(__step); \
47         } \
48     } while (0)
49 #endif
50 
51 QT_BEGIN_NAMESPACE
52 
53 class QPlaceManager;
54 class QPlace;
55 class QPlaceSearchResult;
56 class QPlaceSearchRequest;
57 class QPlaceCategory;
58 class QPlaceContentRequest;
59 class QPlaceMatchRequest;
60 
61 QT_END_NAMESPACE
62 
63 class PlaceManagerUtils : public QObject
64 {
65     Q_OBJECT
66 public:
67     PlaceManagerUtils(QObject *parent = 0);
68 
69     static bool doSavePlace(QPlaceManager *manager,
70                      const QPlace &place,
71                      QPlaceReply::Error expectedError = QPlaceReply::NoError,
72                      QString *placeId = 0);
73 
74     static void doSavePlaces(QPlaceManager *manager, QList<QPlace> &places);
75 
76     //sets the id for saved places
77     static void doSavePlaces(QPlaceManager *manager, const QList<QPlace *> &places);
78 
79     static bool doSearch(QPlaceManager *manager, const QPlaceSearchRequest &request,
80                   QList<QPlaceSearchResult> *results,
81              QPlaceReply::Error expectedError = QPlaceReply::NoError);
82 
83     static bool doSearch(QPlaceManager *manager, const QPlaceSearchRequest &request,
84                   QList<QPlace> *results,
85              QPlaceReply::Error expectedError = QPlaceReply::NoError);
86 
87     static bool doSearchSuggestions(QPlaceManager *manager,
88                                     const QPlaceSearchRequest &request,
89                                     QStringList *results,
90                                     QPlaceReply::Error expectedError = QPlaceReply::NoError);
91 
92     static bool doRemovePlace(QPlaceManager *manager, const QPlace &place,
93                        QPlaceReply::Error expectedError = QPlaceReply::NoError);
94 
95     static bool doFetchDetails(QPlaceManager *manager,
96                         QString placeId,
97                         QPlace *place,
98                         QPlaceReply::Error expectedError = QPlaceReply::NoError);
99 
100     static bool doInitializeCategories(QPlaceManager *manager,
101                                 QPlaceReply::Error expectedError = QPlaceReply::NoError);
102 
103     static bool doSaveCategory(QPlaceManager *manager,
104                         const QPlaceCategory &category,
105                         const QString &parentId,
106                         QPlaceReply::Error expectedError = QPlaceReply::NoError,
107                         QString *categoryId = 0);
108 
109     static bool doRemoveCategory(QPlaceManager *manager, const QPlaceCategory &category,
110                           QPlaceReply::Error expectedError = QPlaceReply::NoError);
111 
112     static bool doFetchCategory(QPlaceManager *manager,
113                          const QString &categoryId,
114                          QPlaceCategory *category,
115                          QPlaceReply::Error expectedError = QPlaceReply::NoError);
116 
117     static bool doFetchContent(QPlaceManager *manager,
118                                const QPlaceContentRequest &request,
119                                QPlaceContent::Collection *results,
120                                QPlaceReply::Error expectedError = QPlaceReply::NoError);
121 
122     static bool doMatch(QPlaceManager *manager,
123                  const QPlaceMatchRequest &request,
124                  QList<QPlace> *places,
125                  QPlaceReply::Error expectedError = QPlaceReply::NoError);
126 
127     static bool checkSignals(QPlaceReply *reply, QPlaceReply::Error expectedError,
128                       QPlaceManager *manager);
129 
130     static bool compare(const QList<QPlace> &actualResults,
131                         const QList<QPlace> &expectedResults);
132 
133     static void setVisibility(QList<QPlace *>places, QLocation::Visibility visibility);
134 
135     static const int Timeout;
136 
137 protected:
138     bool doSavePlace(const QPlace &place,
139                 QPlaceReply::Error expectedError = QPlaceReply::NoError,
140                 QString *placeId = 0) {
141         return doSavePlace(placeManager, place, expectedError, placeId);
142     }
143 
doSavePlaces(QList<QPlace> & places)144     void doSavePlaces(QList<QPlace> &places) {
145         return doSavePlaces(placeManager, places);
146     }
147 
doSavePlaces(const QList<QPlace * > & places)148     void doSavePlaces(const QList<QPlace *> &places) {
149         return doSavePlaces(placeManager, places);
150     }
151 
152     bool doRemovePlace(const QPlace &place,
153                        QPlaceReply::Error expectedError = QPlaceReply::NoError)
154     {
155         return doRemovePlace(placeManager, place, expectedError);
156     }
157 
158     bool doSearch(const QPlaceSearchRequest &request,
159                   QList<QPlace> *results,
160                   QPlaceReply::Error expectedError = QPlaceReply::NoError) {
161         return doSearch(placeManager, request, results,expectedError);
162     }
163 
doSearchSuggestions(const QPlaceSearchRequest & request,QStringList * results,QPlaceReply::Error expectedError)164     bool doSearchSuggestions(const QPlaceSearchRequest &request,
165                              QStringList *results,
166                              QPlaceReply::Error expectedError) {
167         return doSearchSuggestions(placeManager, request, results, expectedError);
168     }
169 
170     bool doFetchDetails(QString placeId,
171                         QPlace *place,
172                         QPlaceReply::Error expectedError = QPlaceReply::NoError) {
173         return doFetchDetails(placeManager, placeId, place, expectedError);
174     }
175 
176     bool doInitializeCategories(QPlaceReply::Error expectedError = QPlaceReply::NoError) {
177         return doInitializeCategories(placeManager, expectedError);
178     }
179 
180     bool doSaveCategory(const QPlaceCategory &category,
181                         QPlaceReply::Error expectedError = QPlaceReply::NoError,
182                         QString *categoryId = 0) {
183         return doSaveCategory(placeManager, category, QString(),
184                                             expectedError,categoryId);
185     }
186 
187     bool doSaveCategory(const QPlaceCategory &category,
188                         const QString &parentId,
189                         QPlaceReply::Error expectedError = QPlaceReply::NoError,
190                         QString *categoryId = 0) {
191         return doSaveCategory(placeManager, category, parentId,
192                                             expectedError, categoryId);
193     }
194 
195     bool doRemoveCategory(const QPlaceCategory &category,
196                           QPlaceReply::Error expectedError = QPlaceReply::NoError)
197     {
198         return doRemoveCategory(placeManager, category, expectedError);
199     }
200 
201     bool doFetchCategory(const QString &categoryId,
202                          QPlaceCategory *category,
203                          QPlaceReply::Error expectedError = QPlaceReply::NoError) {
204         return doFetchCategory(placeManager, categoryId,
205                                              category, expectedError);
206     }
207 
208     bool doFetchContent(const QPlaceContentRequest &request,
209                         QPlaceContent::Collection *results,
210                         QPlaceReply::Error expectedError = QPlaceReply::NoError)
211     {
212         return doFetchContent(placeManager, request, results, expectedError);
213     }
214 
215     bool doMatch(const QPlaceMatchRequest &request,
216                  QList<QPlace> *places,
217                  QPlaceReply::Error expectedError = QPlaceReply::NoError) {
218         return doMatch(placeManager, request,
219                                      places, expectedError);
220     }
221 
checkSignals(QPlaceReply * reply,QPlaceReply::Error expectedError)222     bool checkSignals(QPlaceReply *reply, QPlaceReply::Error expectedError) {
223         return checkSignals(reply, expectedError, placeManager);
224     }
225 
226     QPlaceManager *placeManager;
227 };
228 
229 #endif
230 
231