~chris.gagnon/+junk/qtpim-coverage

« back to all changes in this revision

Viewing changes to tests/auto/contacts/qcontactdetails/tst_qcontactdetails.cpp

  • Committer: chris.gagnon
  • Date: 2013-12-10 23:09:37 UTC
  • Revision ID: chris.gagnon@canonical.com-20131210230937-2akf1ft1edcttk87
first post

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/****************************************************************************
 
2
**
 
3
** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
 
4
** Contact: http://www.qt-project.org/legal
 
5
**
 
6
** This file is part of the test suite of the Qt Toolkit.
 
7
**
 
8
** $QT_BEGIN_LICENSE:LGPL$
 
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 Digia.  For licensing terms and
 
14
** conditions see http://qt.digia.com/licensing.  For further information
 
15
** use the contact form at http://qt.digia.com/contact-us.
 
16
**
 
17
** GNU Lesser General Public License Usage
 
18
** Alternatively, this file may be used under the terms of the GNU Lesser
 
19
** General Public License version 2.1 as published by the Free Software
 
20
** Foundation and appearing in the file LICENSE.LGPL included in the
 
21
** packaging of this file.  Please review the following information to
 
22
** ensure the GNU Lesser General Public License version 2.1 requirements
 
23
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
 
24
**
 
25
** In addition, as a special exception, Digia gives you certain additional
 
26
** rights.  These rights are described in the Digia Qt LGPL Exception
 
27
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
 
28
**
 
29
** GNU General Public License Usage
 
30
** Alternatively, this file may be used under the terms of the GNU
 
31
** General Public License version 3.0 as published by the Free Software
 
32
** Foundation and appearing in the file LICENSE.GPL included in the
 
33
** packaging of this file.  Please review the following information to
 
34
** ensure the GNU General Public License version 3.0 requirements will be
 
35
** met: http://www.gnu.org/copyleft/gpl.html.
 
36
**
 
37
**
 
38
** $QT_END_LICENSE$
 
39
**
 
40
****************************************************************************/
 
41
 
 
42
#include <QtTest/QtTest>
 
43
 
 
44
#include <qcontacts.h>
 
45
#include <QContactDetail>
 
46
 
 
47
//TESTED_COMPONENT=src/contacts
 
48
 
 
49
QTCONTACTS_USE_NAMESPACE
 
50
class tst_QContactDetails : public QObject
 
51
{
 
52
Q_OBJECT
 
53
 
 
54
public:
 
55
    tst_QContactDetails();
 
56
    virtual ~tst_QContactDetails();
 
57
 
 
58
public slots:
 
59
    void init();
 
60
    void cleanup();
 
61
 
 
62
private slots:
 
63
    // leaf class testing
 
64
    void address();
 
65
    void anniversary();
 
66
    void avatar();
 
67
    void birthday();
 
68
    void displayLabel();
 
69
    void emailAddress();
 
70
    void extendedDetail();
 
71
    void family();
 
72
    void favorite();
 
73
    void gender();
 
74
    void geolocation();
 
75
    void globalPresence();
 
76
    void guid();
 
77
    void hobby();
 
78
    void name();
 
79
    void nickname();
 
80
    void note();
 
81
    void onlineAccount();
 
82
    void organization();
 
83
    void phoneNumber();
 
84
    void presence();
 
85
    void ringtone();
 
86
    void syncTarget();
 
87
    void tag();
 
88
    void timestamp();
 
89
    void type();
 
90
    void url();
 
91
    void version();
 
92
};
 
93
 
 
94
tst_QContactDetails::tst_QContactDetails()
 
95
{
 
96
}
 
97
 
 
98
tst_QContactDetails::~tst_QContactDetails()
 
99
{
 
100
}
 
101
 
 
102
void tst_QContactDetails::init()
 
103
{
 
104
}
 
105
 
 
106
void tst_QContactDetails::cleanup()
 
107
{
 
108
}
 
109
 
 
110
void tst_QContactDetails::address()
 
111
{
 
112
    QContact c;
 
113
    QContactAddress a1, a2;
 
114
 
 
115
    QVERIFY(a1.isEmpty());
 
116
    QVERIFY(a2.isEmpty());
 
117
 
 
118
    // test property set
 
119
    QCOMPARE(a1.street(), QString());
 
120
    a1.setStreet("68 Imaginary Avenue");
 
121
    a1.setCountry("Australia");
 
122
    QCOMPARE(a1.street(), QString("68 Imaginary Avenue"));
 
123
    QCOMPARE(a1.country(), QString("Australia"));
 
124
    a1.setStreet("1234");
 
125
    QCOMPARE(a1.street(), QString("1234"));
 
126
    a1.setPostOfficeBox("PO Box 5678");
 
127
    QCOMPARE(a1.postOfficeBox(), QString("PO Box 5678"));
 
128
 
 
129
 
 
130
    // Sub types
 
131
    a1.setSubTypes(QList<int>() << QContactAddress::SubTypeDomestic);
 
132
    QCOMPARE(a1.subTypes(), QList<int>() << QContactAddress::SubTypeDomestic);
 
133
 
 
134
    QList<int> sl;
 
135
    sl << QContactAddress::SubTypeParcel << QContactAddress::SubTypePostal;
 
136
    a1.setSubTypes(sl);
 
137
    QCOMPARE(a1.subTypes(), sl);
 
138
 
 
139
    // test property add
 
140
    QVERIFY(c.saveDetail(&a1));
 
141
    QCOMPARE(c.details(QContactAddress::Type).count(), 1);
 
142
    QCOMPARE(QContactAddress(c.details(QContactAddress::Type).value(0)).street(), a1.street());
 
143
    a2.setStreet("Test");
 
144
    QVERIFY(c.saveDetail(&a2));
 
145
    QCOMPARE(c.details(QContactAddress::Type).count(), 2);
 
146
 
 
147
    // test property update
 
148
    a1.setValue(QContactAddress::FieldContext, "label1");
 
149
    a1.setStreet("12345");
 
150
    QVERIFY(c.saveDetail(&a1));
 
151
 
 
152
    // test property remove
 
153
    QVERIFY(c.removeDetail(&a1));
 
154
    QCOMPARE(c.details(QContactAddress::Type).count(), 1);
 
155
    QVERIFY(c.removeDetail(&a2));
 
156
    QVERIFY(!c.removeDetail(&a2)); // cannot remove twice
 
157
    QCOMPARE(c.details(QContactAddress::Type).count(), 0);
 
158
 
 
159
    QContactAddress a3;
 
160
 
 
161
    // set street
 
162
    a3.setStreet("Test");
 
163
    QCOMPARE(a3.street(), QString("Test"));
 
164
    a3.setStreet("");
 
165
 
 
166
    // set locality
 
167
    a3.setLocality("Test");
 
168
    QCOMPARE(a3.locality(), QString("Test"));
 
169
    a3.setLocality("");
 
170
 
 
171
    // set region
 
172
    a3.setRegion("Test");
 
173
    QCOMPARE(a3.region(), QString("Test"));
 
174
    a3.setRegion("");
 
175
 
 
176
    // set postcode
 
177
    a3.setPostcode("Test");
 
178
    QCOMPARE(a3.postcode(), QString("Test"));
 
179
    a3.setPostcode("");
 
180
 
 
181
    // set country
 
182
    a3.setCountry("Test");
 
183
    QCOMPARE(a3.country(), QString("Test"));
 
184
    a3.setCountry("");
 
185
 
 
186
    // subtypes
 
187
    a3.setSubTypes(QList<int>() << QContactAddress::SubTypeDomestic);
 
188
    QCOMPARE(a3.subTypes(), QList<int>() << QContactAddress::SubTypeDomestic);
 
189
    a3.setSubTypes(QList<int>() << QContactAddress::SubTypeInternational << QContactAddress::SubTypePostal);
 
190
    QCOMPARE(a3.subTypes(), QList<int>() << QContactAddress::SubTypeInternational << QContactAddress::SubTypePostal);
 
191
}
 
192
 
 
193
void tst_QContactDetails::anniversary()
 
194
{
 
195
    QContact c;
 
196
    QContactAnniversary a1, a2;
 
197
    QDateTime currDateTime = QDateTime::currentDateTime();
 
198
    QDate currDate = currDateTime.date();
 
199
    QDateTime snippedDateTime = QDateTime(currDate);
 
200
 
 
201
    // test property set
 
202
    a1.setCalendarId("1234");
 
203
    QCOMPARE(a1.calendarId(), QString("1234"));
 
204
    QCOMPARE(a1.value(QContactAnniversary::FieldCalendarId).toString(), QString("1234"));
 
205
    a1.setEvent("4321");
 
206
    QCOMPARE(a1.event(), QString("4321"));
 
207
    QCOMPARE(a1.value(QContactAnniversary::FieldEvent).toString(), QString("4321"));
 
208
    a1.setSubType(QContactAnniversary::SubTypeWedding);
 
209
    QCOMPARE(a1.subType(), QContactAnniversary::SubTypeWedding);
 
210
    QCOMPARE(static_cast<QContactAnniversary::SubType>(a1.value<int>(QContactAnniversary::FieldSubType)), QContactAnniversary::SubTypeWedding);
 
211
 
 
212
    a1.setOriginalDate(currDate);
 
213
    QCOMPARE(a1.originalDate(), currDate);
 
214
    QCOMPARE(a1.originalDateTime(), snippedDateTime);
 
215
    QCOMPARE(a1.value<QDate>(QContactAnniversary::FieldOriginalDate), currDate);
 
216
    QCOMPARE(a1.value<QDateTime>(QContactAnniversary::FieldOriginalDate), snippedDateTime);
 
217
 
 
218
    a1.setOriginalDateTime(currDateTime);
 
219
    QCOMPARE(a1.originalDate(), currDate);
 
220
    QCOMPARE(a1.originalDateTime(), currDateTime);
 
221
    QCOMPARE(a1.value<QDate>(QContactAnniversary::FieldOriginalDate), currDate);
 
222
    QCOMPARE(a1.value<QDateTime>(QContactAnniversary::FieldOriginalDate), currDateTime);
 
223
 
 
224
    // test property add
 
225
    QVERIFY(c.saveDetail(&a1));
 
226
    QCOMPARE(c.details(QContactAnniversary::Type).count(), 1);
 
227
    QCOMPARE(QContactAnniversary(c.details(QContactAnniversary::Type).value(0)).event(), a1.event());
 
228
 
 
229
    // test property update
 
230
    a1.setValue(QContactAnniversary::FieldContext, "label1");
 
231
    a1.setCalendarId("12345");
 
232
    QVERIFY(c.saveDetail(&a1));
 
233
    QCOMPARE(c.details(QContactAnniversary::Type).value(0).value(QContactAnniversary::FieldContext).toString(), QString("label1"));
 
234
    QCOMPARE(c.details(QContactAnniversary::Type).value(0).value(QContactAnniversary::FieldCalendarId).toString(), QString("12345"));
 
235
 
 
236
    // test property remove
 
237
    QVERIFY(c.removeDetail(&a1));
 
238
    QCOMPARE(c.details(QContactAnniversary::Type).count(), 0);
 
239
    QVERIFY(c.saveDetail(&a2));
 
240
    QCOMPARE(c.details(QContactAnniversary::Type).count(), 1);
 
241
    QVERIFY(c.removeDetail(&a2));
 
242
    QCOMPARE(c.details(QContactAnniversary::Type).count(), 0);
 
243
    QVERIFY(c.removeDetail(&a2) == false);
 
244
    QCOMPARE(c.details(QContactAnniversary::Type).count(), 0);
 
245
}
 
246
 
 
247
void tst_QContactDetails::avatar()
 
248
{
 
249
    QContact c;
 
250
    QContactAvatar a1, a2;
 
251
 
 
252
    // test property set
 
253
    a1.setImageUrl(QUrl("1234"));
 
254
    QCOMPARE(a1.imageUrl(), QUrl("1234"));
 
255
    QCOMPARE(a1.value<QUrl>(QContactAvatar::FieldImageUrl), QUrl("1234"));
 
256
    a2.setVideoUrl(QUrl("videoUrl"));
 
257
    a2.setImageUrl(QUrl("imageUrl"));
 
258
    QCOMPARE(a2.videoUrl(), QUrl("videoUrl"));
 
259
    QCOMPARE(a2.value<QUrl>(QContactAvatar::FieldVideoUrl), QUrl("videoUrl"));
 
260
    QCOMPARE(a2.imageUrl(), QUrl("imageUrl"));
 
261
    QCOMPARE(a2.value<QUrl>(QContactAvatar::FieldImageUrl), QUrl("imageUrl"));
 
262
 
 
263
    // test property add
 
264
    QVERIFY(c.saveDetail(&a1));
 
265
    QCOMPARE(c.details(QContactAvatar::Type).count(), 1);
 
266
    QCOMPARE(QContactAvatar(c.details(QContactAvatar::Type).value(0)).imageUrl(), a1.imageUrl());
 
267
 
 
268
    // test property update
 
269
    a1.setValue(QContactAvatar::FieldContext, "label1");
 
270
    a1.setImageUrl(QUrl("12345"));
 
271
    QVERIFY(c.saveDetail(&a1));
 
272
    QCOMPARE(c.details(QContactAvatar::Type).value(0).value(QContactAvatar::FieldContext).toString(), QString("label1"));
 
273
    QCOMPARE(c.details(QContactAvatar::Type).value(0).value<QUrl>(QContactAvatar::FieldImageUrl), QUrl("12345"));
 
274
 
 
275
    // test property remove
 
276
    QVERIFY(c.removeDetail(&a1));
 
277
    QCOMPARE(c.details(QContactAvatar::Type).count(), 0);
 
278
    QVERIFY(c.saveDetail(&a2));
 
279
    QCOMPARE(c.details(QContactAvatar::Type).count(), 1);
 
280
    QVERIFY(c.removeDetail(&a2));
 
281
    QCOMPARE(c.details(QContactAvatar::Type).count(), 0);
 
282
    QVERIFY(c.removeDetail(&a2) == false);
 
283
    QCOMPARE(c.details(QContactAvatar::Type).count(), 0);
 
284
}
 
285
 
 
286
void tst_QContactDetails::birthday()
 
287
{
 
288
    QContact c;
 
289
    QContactBirthday b1, b2;
 
290
    QDateTime currDateTime = QDateTime::currentDateTime();
 
291
    QDate currDate = currDateTime.date();
 
292
    QDateTime snippedDateTime = QDateTime(currDate);
 
293
 
 
294
    // test property set
 
295
    b1.setDate(currDate);
 
296
    QCOMPARE(b1.date(), currDate);
 
297
    QCOMPARE(b1.dateTime(), snippedDateTime);
 
298
    QCOMPARE(b1.value<QDate>(QContactBirthday::FieldBirthday), currDate);
 
299
    QCOMPARE(b1.value<QDateTime>(QContactBirthday::FieldBirthday), snippedDateTime);
 
300
 
 
301
    b1.setDateTime(currDateTime);
 
302
    QCOMPARE(b1.date(), currDate);
 
303
    QCOMPARE(b1.dateTime(), currDateTime);
 
304
    QCOMPARE(b1.value<QDate>(QContactBirthday::FieldBirthday), currDate);
 
305
    QCOMPARE(b1.value<QDateTime>(QContactBirthday::FieldBirthday), currDateTime);
 
306
 
 
307
    b1.setCalendarId("1234");
 
308
    QCOMPARE(b1.calendarId(), QString("1234"));
 
309
    QCOMPARE(b1.value(QContactBirthday::FieldCalendarId).toString(), QString("1234"));
 
310
 
 
311
    // test property add
 
312
    QVERIFY(c.saveDetail(&b1));
 
313
    QCOMPARE(c.details(QContactBirthday::Type).count(), 1);
 
314
    QCOMPARE(QContactBirthday(c.details(QContactBirthday::Type).value(0)).date(), b1.date());
 
315
 
 
316
    // test property update
 
317
    b1.setValue(QContactBirthday::FieldContext, "label1");
 
318
    b1.setDate(currDate.addDays(3));
 
319
    b1.setCalendarId("12345");
 
320
    QVERIFY(c.saveDetail(&b1));
 
321
    QCOMPARE(c.details(QContactBirthday::Type).value(0).value(QContactBirthday::FieldContext).toString(), QString("label1"));
 
322
    QCOMPARE(c.details(QContactBirthday::Type).value(0).value<QDate>(QContactBirthday::FieldBirthday), currDate.addDays(3));
 
323
    QCOMPARE(c.details(QContactBirthday::Type).value(0).value(QContactBirthday::FieldCalendarId).toString(), QString("12345"));
 
324
 
 
325
    // test property remove
 
326
    QVERIFY(c.removeDetail(&b1));
 
327
    QCOMPARE(c.details(QContactBirthday::Type).count(), 0);
 
328
    QVERIFY(c.saveDetail(&b2));
 
329
    QCOMPARE(c.details(QContactBirthday::Type).count(), 1);
 
330
    QVERIFY(c.removeDetail(&b2));
 
331
    QCOMPARE(c.details(QContactBirthday::Type).count(), 0);
 
332
    QVERIFY(c.removeDetail(&b2) == false);
 
333
    QCOMPARE(c.details(QContactBirthday::Type).count(), 0);
 
334
}
 
335
 
 
336
void tst_QContactDetails::displayLabel()
 
337
{
 
338
    QContact c;
 
339
    QContactDisplayLabel d1, d2;
 
340
 
 
341
    // test property set
 
342
    d1.setLabel("1234");
 
343
    QCOMPARE(d1.label(), QString("1234"));
 
344
    QCOMPARE(d1.value(QContactDisplayLabel::FieldLabel).toString(), QString("1234"));
 
345
 
 
346
    // test property add
 
347
    QVERIFY(c.saveDetail(&d1));
 
348
    QCOMPARE(c.details(QContactDisplayLabel::Type).count(), 1);
 
349
    QCOMPARE(QContactDisplayLabel(c.details(QContactDisplayLabel::Type).value(0)).label(), d1.label());
 
350
 
 
351
    // test property update
 
352
    d1.setValue(QContactDisplayLabel::FieldContext, "label1");
 
353
    d1.setLabel("12345");
 
354
    QVERIFY(c.saveDetail(&d1));
 
355
    QCOMPARE(c.details(QContactDisplayLabel::Type).value(0).value(QContactDisplayLabel::FieldContext).toString(), QString("label1"));
 
356
    QCOMPARE(c.details(QContactDisplayLabel::Type).value(0).value(QContactDisplayLabel::FieldLabel).toString(), QString("12345"));
 
357
 
 
358
    // test property remove
 
359
    QVERIFY(c.removeDetail(&d1));
 
360
    QCOMPARE(c.details(QContactDisplayLabel::Type).count(), 0);
 
361
    QVERIFY(c.saveDetail(&d2));
 
362
    QCOMPARE(c.details(QContactDisplayLabel::Type).count(), 1);
 
363
    QVERIFY(c.removeDetail(&d2));
 
364
    QCOMPARE(c.details(QContactDisplayLabel::Type).count(), 0);
 
365
    QVERIFY(c.removeDetail(&d2) == false);
 
366
    QCOMPARE(c.details(QContactDisplayLabel::Type).count(), 0);
 
367
}
 
368
 
 
369
void tst_QContactDetails::emailAddress()
 
370
{
 
371
    QContact c;
 
372
    QContactEmailAddress e1, e2;
 
373
 
 
374
    // test property set
 
375
    e1.setEmailAddress("1234");
 
376
    QCOMPARE(e1.emailAddress(), QString("1234"));
 
377
    QCOMPARE(e1.value(QContactEmailAddress::FieldEmailAddress).toString(), QString("1234"));
 
378
 
 
379
    // test property add
 
380
    QVERIFY(c.saveDetail(&e1));
 
381
    QCOMPARE(c.details(QContactEmailAddress::Type).count(), 1);
 
382
    QCOMPARE(QContactEmailAddress(c.details(QContactEmailAddress::Type).value(0)).emailAddress(), e1.emailAddress());
 
383
 
 
384
    // test property update
 
385
    e1.setValue(QContactEmailAddress::FieldContext, "label1");
 
386
    e1.setEmailAddress("12345");
 
387
    QVERIFY(c.saveDetail(&e1));
 
388
    QCOMPARE(c.details(QContactEmailAddress::Type).value(0).value(QContactEmailAddress::FieldContext).toString(), QString("label1"));
 
389
    QCOMPARE(c.details(QContactEmailAddress::Type).value(0).value(QContactEmailAddress::FieldEmailAddress).toString(), QString("12345"));
 
390
 
 
391
    // test property remove
 
392
    QVERIFY(c.removeDetail(&e1));
 
393
    QCOMPARE(c.details(QContactEmailAddress::Type).count(), 0);
 
394
    QVERIFY(c.saveDetail(&e2));
 
395
    QCOMPARE(c.details(QContactEmailAddress::Type).count(), 1);
 
396
    QVERIFY(c.removeDetail(&e2));
 
397
    QCOMPARE(c.details(QContactEmailAddress::Type).count(), 0);
 
398
    QVERIFY(c.removeDetail(&e2) == false);
 
399
    QCOMPARE(c.details(QContactEmailAddress::Type).count(), 0);
 
400
}
 
401
 
 
402
void tst_QContactDetails::extendedDetail()
 
403
{
 
404
    QContact c;
 
405
    QContactExtendedDetail extD1, extD2;
 
406
    QVariant v1;
 
407
    // test property set
 
408
    v1.setValue(1);
 
409
    extD1.setName("detail1");
 
410
    extD1.setValue(QContactExtendedDetail::FieldData, v1);
 
411
 
 
412
    QCOMPARE(extD1.name(), QString("detail1"));
 
413
    QCOMPARE(extD1.data(), v1);
 
414
 
 
415
    // test property add
 
416
    QVERIFY(c.saveDetail(&extD1));
 
417
    QCOMPARE(c.details(QContactExtendedDetail::Type).count(), 1);
 
418
    QCOMPARE(QContactExtendedDetail(c.details(QContactExtendedDetail::Type).value(0)).name(), extD1.name());
 
419
 
 
420
    // test property update
 
421
    extD1.setValue(QContactExtendedDetail::FieldContext, "label1");
 
422
    extD1.setName("newDetail1");
 
423
    extD1.setData(v1);
 
424
    QVERIFY(c.saveDetail(&extD1));
 
425
    QCOMPARE(c.details(QContactExtendedDetail::Type).value(0).value(QContactExtendedDetail::FieldContext).toString(), QString("label1"));
 
426
    QCOMPARE(c.details(QContactExtendedDetail::Type).value(0).value(QContactExtendedDetail::FieldData).toInt(), v1.toInt());
 
427
    QCOMPARE(c.details(QContactExtendedDetail::Type).value(0).value(QContactExtendedDetail::FieldName).toString(), QString("newDetail1"));
 
428
 
 
429
    // test property remove
 
430
    QVERIFY(c.removeDetail(&extD1));
 
431
    QCOMPARE(c.details(QContactExtendedDetail::Type).count(), 0);
 
432
    extD2 = extD1;
 
433
 
 
434
    QVERIFY(c.saveDetail(&extD2));
 
435
    QCOMPARE(c.details(QContactExtendedDetail::Type).count(), 1);
 
436
    QVERIFY(c.removeDetail(&extD2));
 
437
    QCOMPARE(c.details(QContactExtendedDetail::Type).count(), 0);
 
438
    QVERIFY(c.removeDetail(&extD2) == false);
 
439
    QCOMPARE(c.details(QContactExtendedDetail::Type).count(), 0);
 
440
}
 
441
 
 
442
void tst_QContactDetails::family()
 
443
{
 
444
    QContact c;
 
445
    QContactFamily f1, f2;
 
446
 
 
447
    // test property set
 
448
    f1.setSpouse("1234");
 
449
    QCOMPARE(f1.spouse(), QString("1234"));
 
450
    QCOMPARE(f1.value(QContactFamily::FieldSpouse).toString(), QString("1234"));
 
451
 
 
452
    // test property add
 
453
    QVERIFY(c.saveDetail(&f1));
 
454
    QCOMPARE(c.details(QContactFamily::Type).count(), 1);
 
455
    QCOMPARE(QContactFamily(c.details(QContactFamily::Type).value(0)).spouse(), f1.spouse());
 
456
 
 
457
    // test property update
 
458
    f1.setValue(QContactFamily::FieldContext, "label1");
 
459
    f1.setSpouse("12345");
 
460
    f1.setChildren(QStringList("54321"));
 
461
    QVERIFY(c.saveDetail(&f1));
 
462
    QCOMPARE(c.details(QContactFamily::Type).value(0).value(QContactFamily::FieldContext).toString(), QString("label1"));
 
463
    QCOMPARE(c.details(QContactFamily::Type).value(0).value(QContactFamily::FieldSpouse).toString(), QString("12345"));
 
464
    QCOMPARE(c.details(QContactFamily::Type).value(0).value<QStringList>(QContactFamily::FieldChildren), QStringList("54321"));
 
465
 
 
466
    // test property remove
 
467
    f2.setSpouse("1111");
 
468
    QVERIFY(c.removeDetail(&f1));
 
469
    QCOMPARE(c.details(QContactFamily::Type).count(), 0);
 
470
    QVERIFY(c.saveDetail(&f2));
 
471
    QCOMPARE(c.details(QContactFamily::Type).count(), 1);
 
472
    QVERIFY(c.removeDetail(&f2));
 
473
    QCOMPARE(c.details(QContactFamily::Type).count(), 0);
 
474
    QVERIFY(c.removeDetail(&f2) == false);
 
475
    QCOMPARE(c.details(QContactFamily::Type).count(), 0);
 
476
}
 
477
 
 
478
void tst_QContactDetails::favorite()
 
479
{
 
480
    QContact c;
 
481
    QContactFavorite f1, f2;
 
482
 
 
483
    // first, ensure that the default value is "false"
 
484
    QCOMPARE(c.detail<QContactFavorite>().isFavorite(), false);
 
485
    QCOMPARE(c.detail<QContactFavorite>().index(), 0); // 0 being "no index" :-/  -1 would be better, but not default...
 
486
    QVERIFY(!f1.isFavorite());
 
487
 
 
488
    // test property set
 
489
    f1.setFavorite(true);
 
490
    QCOMPARE(f1.isFavorite(), true);
 
491
    QCOMPARE(f1.value<bool>(QContactFavorite::FieldFavorite), true);
 
492
 
 
493
    // test property add
 
494
    QVERIFY(c.saveDetail(&f1));
 
495
    QCOMPARE(c.details(QContactFavorite::Type).count(), 1);
 
496
    QCOMPARE(QContactFavorite(c.details(QContactFavorite::Type).value(0)).isFavorite(), f1.isFavorite());
 
497
 
 
498
    // test property update
 
499
    f1.setValue(QContactFavorite::FieldContext, "label1");
 
500
    f1.setFavorite(false);
 
501
    f1.setIndex(5);
 
502
    QVERIFY(c.saveDetail(&f1));
 
503
    QCOMPARE(c.details(QContactFavorite::Type).value(0).value(QContactFavorite::FieldContext).toString(), QString("label1"));
 
504
    QCOMPARE(c.details(QContactFavorite::Type).value(0).value<bool>(QContactFavorite::FieldFavorite), false);
 
505
    QCOMPARE(c.details(QContactFavorite::Type).value(0).value<int>(QContactFavorite::FieldIndex), 5);
 
506
    QCOMPARE(c.details<QContactFavorite>().value(0).index(), 5);
 
507
 
 
508
    // test property remove
 
509
    f2.setFavorite(true);
 
510
    QVERIFY(c.removeDetail(&f1));
 
511
    QCOMPARE(c.details(QContactFavorite::Type).count(), 0);
 
512
    QVERIFY(c.saveDetail(&f2));
 
513
    QCOMPARE(c.details(QContactFavorite::Type).count(), 1);
 
514
    QVERIFY(c.removeDetail(&f2));
 
515
    QCOMPARE(c.details(QContactFavorite::Type).count(), 0);
 
516
    QVERIFY(c.removeDetail(&f2) == false);
 
517
    QCOMPARE(c.details(QContactFavorite::Type).count(), 0);
 
518
}
 
519
 
 
520
void tst_QContactDetails::gender()
 
521
{
 
522
    QContact c;
 
523
    QContactGender g1, g2;
 
524
 
 
525
    // test property set
 
526
    g1.setGender(QContactGender::GenderFemale);
 
527
    QCOMPARE(g1.gender(), QContactGender::GenderFemale);
 
528
 
 
529
    // test property add
 
530
    QVERIFY(c.saveDetail(&g1));
 
531
    QCOMPARE(c.details(QContactGender::Type).count(), 1);
 
532
    QCOMPARE(QContactGender(c.details(QContactGender::Type).value(0)).gender(), g1.gender());
 
533
 
 
534
    // test property update
 
535
    g1.setValue(QContactGender::FieldContext, "label1");
 
536
    g1.setGender(QContactGender::GenderMale);
 
537
    QVERIFY(c.saveDetail(&g1));
 
538
    QCOMPARE(c.details(QContactGender::Type).value(0).value(QContactGender::FieldContext).toString(), QString("label1"));
 
539
    QCOMPARE(c.details(QContactGender::Type).value(0).value(QContactGender::FieldGender).toInt(), (int)QContactGender::GenderMale);
 
540
 
 
541
    // test property remove
 
542
    QVERIFY(c.removeDetail(&g1));
 
543
    QCOMPARE(c.details(QContactGender::Type).count(), 0);
 
544
    QVERIFY(c.saveDetail(&g2));
 
545
    QCOMPARE(c.details(QContactGender::Type).count(), 1);
 
546
    QVERIFY(c.removeDetail(&g2));
 
547
    QCOMPARE(c.details(QContactGender::Type).count(), 0);
 
548
    QVERIFY(c.removeDetail(&g2) == false);
 
549
    QCOMPARE(c.details(QContactGender::Type).count(), 0);
 
550
}
 
551
 
 
552
void tst_QContactDetails::geolocation()
 
553
{
 
554
    QContact c;
 
555
    QContactGeoLocation g1, g2;
 
556
 
 
557
    // test property set
 
558
    g1.setLabel("1234");
 
559
    QCOMPARE(g1.label(), QString("1234"));
 
560
    QCOMPARE(g1.value(QContactGeoLocation::FieldLabel).toString(), QString("1234"));
 
561
    g1.setAccuracy(3.2);
 
562
    QCOMPARE(g1.accuracy(), 3.2);
 
563
    QCOMPARE(g1.value(QContactGeoLocation::FieldAccuracy), QVariant(3.2));
 
564
    g1.setAltitude(3.3);
 
565
    QCOMPARE(g1.altitude(), 3.3);
 
566
    QCOMPARE(g1.value(QContactGeoLocation::FieldAltitude), QVariant(3.3));
 
567
    g1.setAltitudeAccuracy(3.4);
 
568
    QCOMPARE(g1.altitudeAccuracy(), 3.4);
 
569
    QCOMPARE(g1.value(QContactGeoLocation::FieldAltitudeAccuracy), QVariant(3.4));
 
570
    g1.setHeading(3.5);
 
571
    QCOMPARE(g1.heading(), 3.5);
 
572
    QCOMPARE(g1.value(QContactGeoLocation::FieldHeading), QVariant(3.5));
 
573
    g1.setLatitude(3.6);
 
574
    QCOMPARE(g1.latitude(), 3.6);
 
575
    QCOMPARE(g1.value(QContactGeoLocation::FieldLatitude), QVariant(3.6));
 
576
    g1.setLongitude(3.7);
 
577
    QCOMPARE(g1.longitude(), 3.7);
 
578
    QCOMPARE(g1.value(QContactGeoLocation::FieldLongitude), QVariant(3.7));
 
579
    QDateTime current = QDateTime::currentDateTime();
 
580
    g1.setTimestamp(current);
 
581
    QCOMPARE(g1.timestamp(), current);
 
582
    QCOMPARE(g1.value(QContactGeoLocation::FieldTimestamp), QVariant(current));
 
583
    g1.setSpeed(3.8);
 
584
    QCOMPARE(g1.speed(), 3.8);
 
585
    QCOMPARE(g1.value(QContactGeoLocation::FieldSpeed), QVariant(3.8));
 
586
 
 
587
    // test property add
 
588
    QVERIFY(c.saveDetail(&g1));
 
589
    QCOMPARE(c.details(QContactGeoLocation::Type).count(), 1);
 
590
    QCOMPARE(QContactGeoLocation(c.details(QContactGeoLocation::Type).value(0)).label(), g1.label());
 
591
 
 
592
    // test property update
 
593
    g1.setLabel("12345");
 
594
    QVERIFY(c.saveDetail(&g1));
 
595
    QCOMPARE(c.details(QContactGeoLocation::Type).value(0).value(QContactGeoLocation::FieldLabel).toString(), QString("12345"));
 
596
 
 
597
    // test property remove
 
598
    QVERIFY(c.removeDetail(&g1));
 
599
    QCOMPARE(c.details(QContactGeoLocation::Type).count(), 0);
 
600
    QVERIFY(c.saveDetail(&g2));
 
601
    QCOMPARE(c.details(QContactGeoLocation::Type).count(), 1);
 
602
    QVERIFY(c.removeDetail(&g2));
 
603
    QCOMPARE(c.details(QContactGeoLocation::Type).count(), 0);
 
604
    QVERIFY(c.removeDetail(&g2) == false);
 
605
    QCOMPARE(c.details(QContactGeoLocation::Type).count(), 0);
 
606
}
 
607
 
 
608
void tst_QContactDetails::globalPresence()
 
609
{
 
610
    QContact c;
 
611
    QContactGlobalPresence p1, p2;
 
612
 
 
613
    // test property set
 
614
    QDateTime ts = QDateTime::currentDateTime();
 
615
    p1.setTimestamp(ts);
 
616
    p1.setNickname(QString("nick"));
 
617
    p1.setPresenceState(QContactPresence::PresenceExtendedAway);
 
618
    p1.setPresenceStateText("1234");
 
619
    p1.setPresenceStateImageUrl(QUrl("http://example.com/someimage.png"));
 
620
    p1.setCustomMessage("gone fishing!");
 
621
    QCOMPARE(p1.timestamp(), ts);
 
622
    QCOMPARE(p1.value<QDateTime>(QContactGlobalPresence::FieldTimestamp), ts);
 
623
    QCOMPARE(p1.nickname(), QString("nick"));
 
624
    QCOMPARE(p1.value(QContactGlobalPresence::FieldNickname).toString(), QString("nick"));
 
625
    QCOMPARE(p1.presenceState(), QContactPresence::PresenceExtendedAway);
 
626
    QCOMPARE(p1.value<int>(QContactGlobalPresence::FieldPresenceState), static_cast<int>(QContactPresence::PresenceExtendedAway));
 
627
    QCOMPARE(p1.presenceStateText(), QString("1234"));
 
628
    QCOMPARE(p1.value(QContactGlobalPresence::FieldPresenceStateText).toString(), QString("1234"));
 
629
    QCOMPARE(p1.presenceStateImageUrl(), QUrl("http://example.com/someimage.png"));
 
630
    QCOMPARE(p1.value<QUrl>(QContactGlobalPresence::FieldPresenceStateImageUrl), QUrl("http://example.com/someimage.png"));
 
631
    QCOMPARE(p1.customMessage(), QString("gone fishing!"));
 
632
    QCOMPARE(p1.value(QContactGlobalPresence::FieldCustomMessage).toString(), QString("gone fishing!"));
 
633
 
 
634
    // test property add
 
635
    QVERIFY(c.saveDetail(&p1));
 
636
    QCOMPARE(c.details(QContactGlobalPresence::Type).count(), 1);
 
637
    QCOMPARE(QContactGlobalPresence(c.details(QContactGlobalPresence::Type).value(0)).presenceStateText(), p1.presenceStateText());
 
638
 
 
639
    // test property update
 
640
    p1.setValue(QContactGlobalPresence::FieldContext, "label1");
 
641
    p1.setPresenceStateText("12345");
 
642
    QVERIFY(c.saveDetail(&p1));
 
643
    QCOMPARE(c.details(QContactGlobalPresence::Type).value(0).value(QContactGlobalPresence::FieldContext).toString(), QString("label1"));
 
644
    QCOMPARE(c.details(QContactGlobalPresence::Type).value(0).value(QContactGlobalPresence::FieldPresenceStateText).toString(), QString("12345"));
 
645
 
 
646
    p2.setTimestamp(ts);
 
647
    p2.setNickname(QString("test"));
 
648
    p2.setPresenceState(QContactPresence::PresenceAvailable);
 
649
    p2.setPresenceStateText("online");
 
650
    p2.setPresenceStateImageUrl(QUrl("http://example.com/someimage.png"));
 
651
    p2.setCustomMessage("C is for generic biscuit-type pastry product!");
 
652
 
 
653
    // now test that the setPresenceStateImageUrl function doesn't escape spaces and so forth.
 
654
    QString imgUrlStr(QStringLiteral("http://example.com/some image.png"));
 
655
    QUrl imgUrl(imgUrlStr);
 
656
    QContactPresence p3;
 
657
    p3.setPresenceStateImageUrl(imgUrl);
 
658
    QCOMPARE(p3.presenceStateImageUrl(), imgUrl);
 
659
    QCOMPARE(p3.presenceStateImageUrl().toString(), imgUrlStr);
 
660
 
 
661
    // test property remove
 
662
    QVERIFY(c.removeDetail(&p1));
 
663
    QCOMPARE(c.details(QContactGlobalPresence::Type).count(), 0);
 
664
    QVERIFY(c.saveDetail(&p2));
 
665
    QCOMPARE(c.details(QContactGlobalPresence::Type).count(), 1);
 
666
    QVERIFY(c.removeDetail(&p2));
 
667
    QCOMPARE(c.details(QContactGlobalPresence::Type).count(), 0);
 
668
    QVERIFY(c.removeDetail(&p2) == false);
 
669
    QCOMPARE(c.details(QContactGlobalPresence::Type).count(), 0);
 
670
}
 
671
 
 
672
void tst_QContactDetails::guid()
 
673
{
 
674
    QContact c;
 
675
    QContactGuid g1, g2;
 
676
 
 
677
    // test property set
 
678
    g1.setGuid("1234");
 
679
    QCOMPARE(g1.guid(), QString("1234"));
 
680
    QCOMPARE(g1.value(QContactGuid::FieldGuid).toString(), QString("1234"));
 
681
 
 
682
    // test property add
 
683
    QVERIFY(c.saveDetail(&g1));
 
684
    QCOMPARE(c.details(QContactGuid::Type).count(), 1);
 
685
    QCOMPARE(QContactGuid(c.details(QContactGuid::Type).value(0)).guid(), g1.guid());
 
686
 
 
687
    // test property update
 
688
    g1.setValue(QContactGuid::FieldContext, "label1");
 
689
    g1.setGuid("12345");
 
690
    QVERIFY(c.saveDetail(&g1));
 
691
    QCOMPARE(c.details(QContactGuid::Type).value(0).value(QContactGuid::FieldContext).toString(), QString("label1"));
 
692
    QCOMPARE(c.details(QContactGuid::Type).value(0).value(QContactGuid::FieldGuid).toString(), QString("12345"));
 
693
 
 
694
    // test property remove
 
695
    QVERIFY(c.removeDetail(&g1));
 
696
    QCOMPARE(c.details(QContactGuid::Type).count(), 0);
 
697
    QVERIFY(c.saveDetail(&g2));
 
698
    QCOMPARE(c.details(QContactGuid::Type).count(), 1);
 
699
    QVERIFY(c.removeDetail(&g2));
 
700
    QCOMPARE(c.details(QContactGuid::Type).count(), 0);
 
701
    QVERIFY(c.removeDetail(&g2) == false);
 
702
    QCOMPARE(c.details(QContactGuid::Type).count(), 0);
 
703
}
 
704
 
 
705
void tst_QContactDetails::hobby()
 
706
{
 
707
    QContact c;
 
708
    QContactHobby h1, h2;
 
709
 
 
710
    // test property set
 
711
    h1.setHobby("1234");
 
712
    QCOMPARE(h1.hobby(), QString("1234"));
 
713
    QCOMPARE(h1.value(QContactHobby::FieldHobby).toString(), QString("1234"));
 
714
 
 
715
    // test property add
 
716
    QVERIFY(c.saveDetail(&h1));
 
717
    QCOMPARE(c.details(QContactHobby::Type).count(), 1);
 
718
    QCOMPARE(QContactHobby(c.details(QContactHobby::Type).value(0)).hobby(), h1.hobby());
 
719
 
 
720
    // test property update
 
721
    h1.setValue(QContactHobby::FieldContext, "label1");
 
722
    h1.setHobby("12345");
 
723
    QVERIFY(c.saveDetail(&h1));
 
724
    QCOMPARE(c.details(QContactHobby::Type).value(0).value(QContactHobby::FieldContext).toString(), QString("label1"));
 
725
    QCOMPARE(c.details(QContactHobby::Type).value(0).value(QContactHobby::FieldHobby).toString(), QString("12345"));
 
726
 
 
727
    // test property remove
 
728
    h2.setHobby("1111");
 
729
    QVERIFY(c.removeDetail(&h1));
 
730
    QCOMPARE(c.details(QContactHobby::Type).count(), 0);
 
731
    QVERIFY(c.saveDetail(&h2));
 
732
    QCOMPARE(c.details(QContactHobby::Type).count(), 1);
 
733
    QVERIFY(c.removeDetail(&h2));
 
734
    QCOMPARE(c.details(QContactHobby::Type).count(), 0);
 
735
    QVERIFY(c.removeDetail(&h2) == false);
 
736
    QCOMPARE(c.details(QContactHobby::Type).count(), 0);
 
737
}
 
738
 
 
739
void tst_QContactDetails::name()
 
740
{
 
741
    QContact c;
 
742
    QContactName n1, n2;
 
743
 
 
744
    QVERIFY(n1.isEmpty());
 
745
    QVERIFY(n2.isEmpty());
 
746
 
 
747
    // test property set
 
748
    n1.setPrefix("Dr");
 
749
    n1.setFirstName("Freddy");
 
750
    n1.setMiddleName("William Preston");
 
751
    n1.setLastName("Gumboots");
 
752
    n1.setSuffix("Esquire");
 
753
    QCOMPARE(n1.prefix(), QString("Dr"));
 
754
    QCOMPARE(n1.firstName(), QString("Freddy"));
 
755
    QCOMPARE(n1.middleName(), QString("William Preston"));
 
756
    QCOMPARE(n1.lastName(), QString("Gumboots"));
 
757
    QCOMPARE(n1.suffix(), QString("Esquire"));
 
758
 
 
759
    // Values based (QString)
 
760
    QCOMPARE(n1.value(QContactName::FieldPrefix).toString(), QString("Dr"));
 
761
    QCOMPARE(n1.value(QContactName::FieldFirstName).toString(), QString("Freddy"));
 
762
    QCOMPARE(n1.value(QContactName::FieldMiddleName).toString(), QString("William Preston"));
 
763
    QCOMPARE(n1.value(QContactName::FieldLastName).toString(), QString("Gumboots"));
 
764
    QCOMPARE(n1.value(QContactName::FieldSuffix).toString(), QString("Esquire"));
 
765
 
 
766
    // test property add
 
767
    QVERIFY(c.saveDetail(&n1));
 
768
    QCOMPARE(c.details(QContactName::Type).count(), 1);
 
769
    n2.setFirstName("Billy");
 
770
    n2.setLastName("Galoshes");
 
771
    QVERIFY(c.saveDetail(&n2));
 
772
    QCOMPARE(c.details(QContactName::Type).count(), 2);
 
773
 
 
774
    // test property update
 
775
    n1.setValue(QContactName::FieldContext, "label1");
 
776
    QVERIFY(c.saveDetail(&n1));
 
777
 
 
778
    // test property remove
 
779
    QVERIFY(c.removeDetail(&n1)); // remove
 
780
    QCOMPARE(c.details(QContactName::Type).count(), 1);
 
781
    QVERIFY(c.saveDetail(&n2));   // save but already added; count remains the same.
 
782
    QCOMPARE(c.details(QContactName::Type).count(), 1);
 
783
    QVERIFY(c.removeDetail(&n2)); // remove it
 
784
    QCOMPARE(c.details(QContactName::Type).count(), 0);
 
785
    QVERIFY(!c.removeDetail(&n2));// remove now fails
 
786
    QVERIFY(c.saveDetail(&n1));   // save the original name
 
787
    QCOMPARE(c.details(QContactName::Type).count(), 1);
 
788
}
 
789
 
 
790
void tst_QContactDetails::nickname()
 
791
{
 
792
    QContact c;
 
793
    QContactNickname n1, n2;
 
794
 
 
795
    // test property set
 
796
    n1.setNickname("1234");
 
797
    QCOMPARE(n1.nickname(), QString("1234"));
 
798
    QCOMPARE(n1.value(QContactNickname::FieldNickname).toString(), QString("1234"));
 
799
 
 
800
    // test property add
 
801
    QVERIFY(c.saveDetail(&n1));
 
802
    QCOMPARE(c.details(QContactNickname::Type).count(), 1);
 
803
    QCOMPARE(QContactNickname(c.details(QContactNickname::Type).value(0)).nickname(), n1.nickname());
 
804
 
 
805
    // test property update
 
806
    n1.setValue(QContactNickname::FieldContext, "label1");
 
807
    n1.setNickname("12345");
 
808
    QVERIFY(c.saveDetail(&n1));
 
809
    QCOMPARE(c.details(QContactNickname::Type).value(0).value(QContactNickname::FieldContext).toString(), QString("label1"));
 
810
    QCOMPARE(c.details(QContactNickname::Type).value(0).value(QContactNickname::FieldNickname).toString(), QString("12345"));
 
811
 
 
812
    // test property remove
 
813
    QVERIFY(c.removeDetail(&n1));
 
814
    QCOMPARE(c.details(QContactNickname::Type).count(), 0);
 
815
    QVERIFY(c.saveDetail(&n2));
 
816
    QCOMPARE(c.details(QContactNickname::Type).count(), 1);
 
817
    QVERIFY(c.removeDetail(&n2));
 
818
    QCOMPARE(c.details(QContactNickname::Type).count(), 0);
 
819
    QVERIFY(c.removeDetail(&n2) == false);
 
820
    QCOMPARE(c.details(QContactNickname::Type).count(), 0);
 
821
}
 
822
 
 
823
void tst_QContactDetails::note()
 
824
{
 
825
    QContact c;
 
826
    QContactNote n1, n2;
 
827
 
 
828
    // test property set
 
829
    n1.setNote("lorem ipsum");
 
830
    QCOMPARE(n1.note(), QString("lorem ipsum"));
 
831
    QCOMPARE(n1.value(QContactNote::FieldNote).toString(), QString("lorem ipsum"));
 
832
 
 
833
    // test property add
 
834
    QVERIFY(c.saveDetail(&n1));
 
835
    QCOMPARE(c.details(QContactNote::Type).count(), 1);
 
836
    QCOMPARE(QContactNote(c.details(QContactNote::Type).value(0)).note(), n1.note());
 
837
 
 
838
    // test property update
 
839
    n1.setValue(QContactNote::FieldContext, "label1");
 
840
    n1.setNote("orange gypsum");
 
841
    QVERIFY(c.saveDetail(&n1));
 
842
    QCOMPARE(c.details(QContactNote::Type).value(0).value(QContactNote::FieldContext).toString(), QString("label1"));
 
843
    QCOMPARE(c.details(QContactNote::Type).value(0).value(QContactNote::FieldNote).toString(), QString("orange gypsum"));
 
844
 
 
845
    // test property remove
 
846
    QVERIFY(c.removeDetail(&n1));
 
847
    QCOMPARE(c.details(QContactNote::Type).count(), 0);
 
848
    QVERIFY(c.saveDetail(&n2));
 
849
    QCOMPARE(c.details(QContactNote::Type).count(), 1);
 
850
    QVERIFY(c.removeDetail(&n2));
 
851
    QCOMPARE(c.details(QContactNote::Type).count(), 0);
 
852
    QVERIFY(c.removeDetail(&n2) == false);
 
853
    QCOMPARE(c.details(QContactNote::Type).count(), 0);
 
854
}
 
855
 
 
856
void tst_QContactDetails::onlineAccount()
 
857
{
 
858
    QContact c;
 
859
    QContactOnlineAccount o1, o2;
 
860
 
 
861
    // test property set
 
862
    o1.setAccountUri("test@nokia.com");
 
863
    QCOMPARE(o1.accountUri(), QString("test@nokia.com"));
 
864
    QCOMPARE(o1.value(QContactOnlineAccount::FieldAccountUri).toString(), QString("test@nokia.com"));
 
865
    o1.setProtocol(QContactOnlineAccount::ProtocolJabber);
 
866
    QCOMPARE(o1.protocol(), QContactOnlineAccount::ProtocolJabber);
 
867
 
 
868
    // Sub types
 
869
    o1.setSubTypes(QList<int>() << QContactOnlineAccount::SubTypeSip);
 
870
    QCOMPARE(o1.subTypes(), QList<int>() << QContactOnlineAccount::SubTypeSip);
 
871
 
 
872
    QList<int> sl;
 
873
    sl << QContactOnlineAccount::SubTypeImpp << QContactOnlineAccount::SubTypeVideoShare;
 
874
    o1.setSubTypes(sl);
 
875
    QCOMPARE(o1.subTypes(), sl);
 
876
 
 
877
    o1 = QContactOnlineAccount();
 
878
    o1.setAccountUri("test@nokia.com");
 
879
 
 
880
    // test property add
 
881
    QVERIFY(c.saveDetail(&o1));
 
882
    QCOMPARE(c.details(QContactOnlineAccount::Type).count(), 1);
 
883
    QCOMPARE(QContactOnlineAccount(c.details(QContactOnlineAccount::Type).value(0)).accountUri(), o1.accountUri());
 
884
    QCOMPARE(QContactOnlineAccount(c.details(QContactOnlineAccount::Type).value(0)).accountUri(), o1.accountUri());
 
885
 
 
886
    // test property update
 
887
    QStringList caps;
 
888
    caps << "cap1" << "cap3" << "cap4";
 
889
    o1.setValue(QContactOnlineAccount::FieldContext, "label1");
 
890
    o1.setAccountUri("test2@nokia.com");
 
891
    o1.setServiceProvider("some provider");
 
892
    o1.setCapabilities(caps);
 
893
    QVERIFY(c.saveDetail(&o1));
 
894
    QCOMPARE(c.details(QContactOnlineAccount::Type).value(0).value(QContactOnlineAccount::FieldContext).toString(), QString("label1"));
 
895
    QCOMPARE(c.details(QContactOnlineAccount::Type).value(0).value(QContactOnlineAccount::FieldAccountUri).toString(), QString("test2@nokia.com"));
 
896
    QCOMPARE(c.details(QContactOnlineAccount::Type).value(0).value<QStringList>(QContactOnlineAccount::FieldCapabilities), caps);
 
897
    QCOMPARE(c.details<QContactOnlineAccount>().value(0).capabilities(), caps);
 
898
    QCOMPARE(c.details(QContactOnlineAccount::Type).value(0).value(QContactOnlineAccount::FieldServiceProvider).toString(), QString("some provider"));
 
899
    QCOMPARE(c.details<QContactOnlineAccount>().value(0).serviceProvider(), QString("some provider"));
 
900
 
 
901
    // test property remove
 
902
    QVERIFY(c.removeDetail(&o1));
 
903
    QCOMPARE(c.details(QContactOnlineAccount::Type).count(), 0);
 
904
    QVERIFY(c.saveDetail(&o2));
 
905
    QCOMPARE(c.details(QContactOnlineAccount::Type).count(), 1);
 
906
    QVERIFY(c.removeDetail(&o2));
 
907
    QCOMPARE(c.details(QContactOnlineAccount::Type).count(), 0);
 
908
    QVERIFY(c.removeDetail(&o2) == false);
 
909
    QCOMPARE(c.details(QContactOnlineAccount::Type).count(), 0);
 
910
}
 
911
 
 
912
void tst_QContactDetails::organization()
 
913
{
 
914
    QContact c;
 
915
    QContactOrganization o1, o2;
 
916
 
 
917
    // test property set
 
918
    o1.setName("organization one");
 
919
    QCOMPARE(o1.name(), QString("organization one"));
 
920
    QCOMPARE(o1.value(QContactOrganization::FieldName).toString(), QString("organization one"));
 
921
 
 
922
    o1.setDepartment(QStringList(QString("department one")));
 
923
    QCOMPARE(o1.department(), QStringList(QString("department one")));
 
924
    QCOMPARE(o1.value<QStringList>(QContactOrganization::FieldDepartment), QStringList(QString("department one")));
 
925
 
 
926
    o1.setLocation("location one");
 
927
    QCOMPARE(o1.location(), QString("location one"));
 
928
    QCOMPARE(o1.value(QContactOrganization::FieldLocation).toString(), QString("location one"));
 
929
 
 
930
    o1.setLogoUrl(QUrl("logo one"));
 
931
    QCOMPARE(o1.logoUrl(), QUrl("logo one"));
 
932
    QCOMPARE(o1.value<QUrl>(QContactOrganization::FieldLogoUrl), QUrl("logo one"));
 
933
 
 
934
    o1.setTitle("title one");
 
935
    QCOMPARE(o1.title(), QString("title one"));
 
936
    QCOMPARE(o1.value(QContactOrganization::FieldTitle).toString(), QString("title one"));
 
937
 
 
938
    o1.setAssistantName("assistant one");
 
939
    QCOMPARE(o1.assistantName(), QString("assistant one"));
 
940
    QCOMPARE(o1.value(QContactOrganization::FieldAssistantName).toString(), QString("assistant one"));
 
941
 
 
942
    // test property add
 
943
    QVERIFY(c.saveDetail(&o1));
 
944
    QCOMPARE(c.details(QContactOrganization::Type).count(), 1);
 
945
    QCOMPARE(QContactOrganization(c.details(QContactOrganization::Type).value(0)).name(), o1.name());
 
946
 
 
947
    // test property update
 
948
    o1.setName("organization two");
 
949
    QVERIFY(c.saveDetail(&o1));
 
950
    QCOMPARE(c.details(QContactOrganization::Type).value(0).value(QContactOrganization::FieldName).toString(), QString("organization two"));
 
951
 
 
952
    // test property remove
 
953
    QVERIFY(c.removeDetail(&o1));
 
954
    QCOMPARE(c.details(QContactOrganization::Type).count(), 0);
 
955
    QVERIFY(c.saveDetail(&o2));
 
956
    QCOMPARE(c.details(QContactOrganization::Type).count(), 1);
 
957
    QVERIFY(c.removeDetail(&o2));
 
958
    QCOMPARE(c.details(QContactOrganization::Type).count(), 0);
 
959
    QVERIFY(c.removeDetail(&o2) == false);
 
960
    QCOMPARE(c.details(QContactOrganization::Type).count(), 0);
 
961
 
 
962
    // organization-specific API testing
 
963
    o1.setDepartment(QStringList(QString("Imaginary Dept")));
 
964
    o1.setLocation("Utopia");
 
965
    o1.setLogoUrl(QUrl("logo.png"));
 
966
    o1.setName("Utopian Megacorporation");
 
967
    o1.setTitle("Generic Employee");
 
968
    c.saveDetail(&o1);
 
969
    QVERIFY(c.detail(QContactOrganization::Type).value<QStringList>(QContactOrganization::FieldDepartment) == QStringList(QString("Imaginary Dept")));
 
970
    QVERIFY(c.detail(QContactOrganization::Type).value(QContactOrganization::FieldLocation).toString() == QString("Utopia"));
 
971
    QVERIFY(c.detail(QContactOrganization::Type).value<QUrl>(QContactOrganization::FieldLogoUrl) == QUrl("logo.png"));
 
972
    QVERIFY(c.detail(QContactOrganization::Type).value(QContactOrganization::FieldName).toString() == QString("Utopian Megacorporation"));
 
973
    QVERIFY(c.detail(QContactOrganization::Type).value(QContactOrganization::FieldTitle).toString() == QString("Generic Employee"));
 
974
}
 
975
 
 
976
void tst_QContactDetails::phoneNumber()
 
977
{
 
978
    QContact c;
 
979
    QContactPhoneNumber p1, p2;
 
980
 
 
981
    // test property set
 
982
    p1.setNumber("1234");
 
983
    QCOMPARE(p1.number(), QString("1234"));
 
984
    QCOMPARE(p1.value(QContactPhoneNumber::FieldNumber).toString(), QString("1234"));
 
985
 
 
986
    // Sub types
 
987
    p1.setSubTypes(QList<int>() << QContactPhoneNumber::SubTypeCar);
 
988
    QCOMPARE(p1.subTypes(), QList<int>() << QContactPhoneNumber::SubTypeCar);
 
989
 
 
990
    QList<int> sl;
 
991
    sl << QContactPhoneNumber::SubTypeMobile << QContactPhoneNumber::SubTypeFax;
 
992
    p1.setSubTypes(sl);
 
993
    QCOMPARE(p1.subTypes(), sl);
 
994
 
 
995
    // test property add
 
996
    QVERIFY(c.saveDetail(&p1));
 
997
    QCOMPARE(c.details(QContactPhoneNumber::Type).count(), 1);
 
998
    QCOMPARE(QContactPhoneNumber(c.details(QContactPhoneNumber::Type).value(0)).number(), p1.number());
 
999
 
 
1000
    // test property update
 
1001
    p1.setValue(QContactPhoneNumber::FieldContext, "label1");
 
1002
    p1.setNumber("12345");
 
1003
    QVERIFY(c.saveDetail(&p1));
 
1004
    QCOMPARE(c.details(QContactPhoneNumber::Type).value(0).value(QContactPhoneNumber::FieldContext).toString(), QString("label1"));
 
1005
    QCOMPARE(c.details(QContactPhoneNumber::Type).value(0).value(QContactPhoneNumber::FieldNumber).toString(), QString("12345"));
 
1006
 
 
1007
    p1.setSubTypes(QList<int>() << QContactPhoneNumber::SubTypeDtmfMenu);
 
1008
    c.saveDetail(&p1);
 
1009
 
 
1010
    QCOMPARE(c.detail(QContactPhoneNumber::Type).value<QList<int> >(QContactPhoneNumber::FieldSubTypes), QList<int>() << QContactPhoneNumber::SubTypeDtmfMenu);
 
1011
    p1.setSubTypes(QList<int>() << QContactPhoneNumber::SubTypeModem << QContactPhoneNumber::SubTypeFax);
 
1012
    c.saveDetail(&p1);
 
1013
    QVERIFY(c.detail(QContactPhoneNumber::Type).value<QList<int> >(QContactPhoneNumber::FieldSubTypes) == p1.subTypes());
 
1014
 
 
1015
    // test property remove
 
1016
    QVERIFY(c.removeDetail(&p1));
 
1017
    QCOMPARE(c.details(QContactPhoneNumber::Type).count(), 0);
 
1018
    QVERIFY(c.saveDetail(&p2));
 
1019
    QCOMPARE(c.details(QContactPhoneNumber::Type).count(), 1);
 
1020
    QVERIFY(c.removeDetail(&p2));
 
1021
    QCOMPARE(c.details(QContactPhoneNumber::Type).count(), 0);
 
1022
    QVERIFY(c.removeDetail(&p2) == false);
 
1023
    QCOMPARE(c.details(QContactPhoneNumber::Type).count(), 0);
 
1024
}
 
1025
 
 
1026
void tst_QContactDetails::presence()
 
1027
{
 
1028
    QContact c;
 
1029
    QContactPresence p1, p2;
 
1030
 
 
1031
    // test property set
 
1032
    QDateTime ts = QDateTime::currentDateTime();
 
1033
    p1.setTimestamp(ts);
 
1034
    p1.setNickname(QString("nick"));
 
1035
    p1.setPresenceState(QContactPresence::PresenceExtendedAway);
 
1036
    p1.setPresenceStateText("1234");
 
1037
    p1.setPresenceStateImageUrl(QUrl("http://example.com/someimage.png"));
 
1038
    p1.setCustomMessage("gone fishing!");
 
1039
    QCOMPARE(p1.timestamp(), ts);
 
1040
    QCOMPARE(p1.value<QDateTime>(QContactPresence::FieldTimestamp), ts);
 
1041
    QCOMPARE(p1.nickname(), QString("nick"));
 
1042
    QCOMPARE(p1.value(QContactPresence::FieldNickname).toString(), QString("nick"));
 
1043
    QCOMPARE(p1.presenceState(), QContactPresence::PresenceExtendedAway);
 
1044
    QCOMPARE(p1.value<int>(QContactPresence::FieldPresenceState), static_cast<int>(QContactPresence::PresenceExtendedAway));
 
1045
    QCOMPARE(p1.presenceStateText(), QString("1234"));
 
1046
    QCOMPARE(p1.value(QContactPresence::FieldPresenceStateText).toString(), QString("1234"));
 
1047
    QCOMPARE(p1.presenceStateImageUrl(), QUrl("http://example.com/someimage.png"));
 
1048
    QCOMPARE(p1.value<QUrl>(QContactPresence::FieldPresenceStateImageUrl), QUrl("http://example.com/someimage.png"));
 
1049
    QCOMPARE(p1.customMessage(), QString("gone fishing!"));
 
1050
    QCOMPARE(p1.value(QContactPresence::FieldCustomMessage).toString(), QString("gone fishing!"));
 
1051
 
 
1052
    // test property add
 
1053
    QVERIFY(c.saveDetail(&p1));
 
1054
    QCOMPARE(c.details(QContactPresence::Type).count(), 1);
 
1055
    QCOMPARE(QContactPresence(c.details(QContactPresence::Type).value(0)).presenceStateText(), p1.presenceStateText());
 
1056
 
 
1057
    // test property update
 
1058
    p1.setValue(QContactPresence::FieldContext, "label1");
 
1059
    p1.setPresenceStateText("12345");
 
1060
    QVERIFY(c.saveDetail(&p1));
 
1061
    QCOMPARE(c.details(QContactPresence::Type).value(0).value(QContactPresence::FieldContext).toString(), QString("label1"));
 
1062
    QCOMPARE(c.details(QContactPresence::Type).value(0).value(QContactPresence::FieldPresenceStateText).toString(), QString("12345"));
 
1063
 
 
1064
    p2.setTimestamp(ts);
 
1065
    p2.setNickname(QString("test"));
 
1066
    p2.setPresenceState(QContactPresence::PresenceAvailable);
 
1067
    p2.setPresenceStateText("online");
 
1068
    p2.setPresenceStateImageUrl(QUrl("http://example.com/someimage.png"));
 
1069
    p2.setCustomMessage("C is for generic biscuit-type pastry product!");
 
1070
 
 
1071
    // test property remove
 
1072
    QVERIFY(c.removeDetail(&p1));
 
1073
    QCOMPARE(c.details(QContactPresence::Type).count(), 0);
 
1074
    QVERIFY(c.saveDetail(&p2));
 
1075
    QCOMPARE(c.details(QContactPresence::Type).count(), 1);
 
1076
    QVERIFY(c.removeDetail(&p2));
 
1077
    QCOMPARE(c.details(QContactPresence::Type).count(), 0);
 
1078
    QVERIFY(c.removeDetail(&p2) == false);
 
1079
    QCOMPARE(c.details(QContactPresence::Type).count(), 0);
 
1080
}
 
1081
 
 
1082
void tst_QContactDetails::ringtone()
 
1083
{
 
1084
    QContact c;
 
1085
    QContactRingtone r1, r2;
 
1086
 
 
1087
    // test property set
 
1088
    r1.setAudioRingtoneUrl(QUrl("audioUrl"));
 
1089
    QCOMPARE(r1.audioRingtoneUrl(), QUrl("audioUrl"));
 
1090
    QCOMPARE(r1.value<QUrl>(QContactRingtone::FieldAudioRingtoneUrl), QUrl("audioUrl"));
 
1091
 
 
1092
    // and the other fields
 
1093
    r2.setVideoRingtoneUrl(QUrl("videoUrl"));
 
1094
    QCOMPARE(r2.videoRingtoneUrl(), QUrl("videoUrl"));
 
1095
    QCOMPARE(r2.value<QUrl>(QContactRingtone::FieldVideoRingtoneUrl), QUrl("videoUrl"));
 
1096
    r2.setVibrationRingtoneUrl(QUrl("vibrationUrl"));
 
1097
    QCOMPARE(r2.vibrationRingtoneUrl(), QUrl("vibrationUrl"));
 
1098
    QCOMPARE(r2.value<QUrl>(QContactRingtone::FieldVibrationRingtoneUrl), QUrl("vibrationUrl"));
 
1099
 
 
1100
    // test property add
 
1101
    QVERIFY(c.saveDetail(&r1));
 
1102
    QCOMPARE(c.details(QContactRingtone::Type).count(), 1);
 
1103
    QCOMPARE(QContactRingtone(c.details(QContactRingtone::Type).value(0)).audioRingtoneUrl(), r1.audioRingtoneUrl());
 
1104
 
 
1105
    // test property update
 
1106
    r1.setValue(QContactRingtone::FieldContext, "label1");
 
1107
    r1.setAudioRingtoneUrl(QUrl("audioUrl2"));
 
1108
    QVERIFY(c.saveDetail(&r1));
 
1109
    QCOMPARE(c.details(QContactRingtone::Type).value(0).value(QContactRingtone::FieldContext).toString(), QString("label1"));
 
1110
    QCOMPARE(c.details(QContactRingtone::Type).value(0).value<QUrl>(QContactRingtone::FieldAudioRingtoneUrl), QUrl("audioUrl2"));
 
1111
 
 
1112
    // test property remove
 
1113
    QVERIFY(c.removeDetail(&r1));
 
1114
    QCOMPARE(c.details(QContactRingtone::Type).count(), 0);
 
1115
    QVERIFY(c.saveDetail(&r2));
 
1116
    QCOMPARE(c.details(QContactRingtone::Type).count(), 1);
 
1117
    QVERIFY(c.removeDetail(&r2));
 
1118
    QCOMPARE(c.details(QContactRingtone::Type).count(), 0);
 
1119
    QVERIFY(c.removeDetail(&r2) == false);
 
1120
    QCOMPARE(c.details(QContactRingtone::Type).count(), 0);
 
1121
}
 
1122
 
 
1123
void tst_QContactDetails::syncTarget()
 
1124
{
 
1125
    QContact c;
 
1126
    QContactSyncTarget s1, s2;
 
1127
 
 
1128
    // test property set
 
1129
    s1.setSyncTarget("1234");
 
1130
    QCOMPARE(s1.syncTarget(), QString("1234"));
 
1131
    QCOMPARE(s1.value(QContactSyncTarget::FieldSyncTarget).toString(), QString("1234"));
 
1132
 
 
1133
    // test property add
 
1134
    QVERIFY(c.saveDetail(&s1));
 
1135
    QCOMPARE(c.details(QContactSyncTarget::Type).count(), 1);
 
1136
    QCOMPARE(QContactSyncTarget(c.details(QContactSyncTarget::Type).value(0)).syncTarget(), s1.syncTarget());
 
1137
 
 
1138
    // test property update
 
1139
    s1.setValue(QContactSyncTarget::FieldContext, "label1");
 
1140
    s1.setSyncTarget("12345");
 
1141
    QVERIFY(c.saveDetail(&s1));
 
1142
    QCOMPARE(c.details(QContactSyncTarget::Type).value(0).value(QContactSyncTarget::FieldContext).toString(), QString("label1"));
 
1143
    QCOMPARE(c.details(QContactSyncTarget::Type).value(0).value(QContactSyncTarget::FieldSyncTarget).toString(), QString("12345"));
 
1144
 
 
1145
    // test property remove
 
1146
    QVERIFY(c.removeDetail(&s1));
 
1147
    QCOMPARE(c.details(QContactSyncTarget::Type).count(), 0);
 
1148
    QVERIFY(c.saveDetail(&s2));
 
1149
    QCOMPARE(c.details(QContactSyncTarget::Type).count(), 1);
 
1150
    QVERIFY(c.removeDetail(&s2));
 
1151
    QCOMPARE(c.details(QContactSyncTarget::Type).count(), 0);
 
1152
    QVERIFY(c.removeDetail(&s2) == false);
 
1153
    QCOMPARE(c.details(QContactSyncTarget::Type).count(), 0);
 
1154
}
 
1155
 
 
1156
void tst_QContactDetails::tag()
 
1157
{
 
1158
    QContact c;
 
1159
    QContactTag t1, t2;
 
1160
 
 
1161
    // test property set
 
1162
    t1.setTag("red");
 
1163
    QCOMPARE(t1.tag(), QString("red"));
 
1164
    QCOMPARE(t1.value(QContactTag::FieldTag).toString(), QString("red"));
 
1165
 
 
1166
    // test property add
 
1167
    QVERIFY(c.saveDetail(&t1));
 
1168
    QCOMPARE(c.details(QContactTag::Type).count(), 1);
 
1169
    QCOMPARE(QContactTag(c.details(QContactTag::Type).value(0)).tag(), t1.tag());
 
1170
    QVERIFY(c.saveDetail(&t2));
 
1171
    QCOMPARE(c.details(QContactTag::Type).count(), 2);
 
1172
 
 
1173
    // test property update
 
1174
    t1.setValue(QContactTag::FieldContext, "label1");
 
1175
    t1.setTag("green");
 
1176
    QVERIFY(c.saveDetail(&t1));
 
1177
    QCOMPARE(c.details(QContactTag::Type).value(0).value(QContactTag::FieldContext).toString(), QString("label1"));
 
1178
    QCOMPARE(c.details(QContactTag::Type).value(0).value(QContactTag::FieldTag).toString(), QString("green"));
 
1179
 
 
1180
    // test property remove
 
1181
    QVERIFY(c.removeDetail(&t1));
 
1182
    QCOMPARE(c.details(QContactTag::Type).count(), 1);
 
1183
    QVERIFY(c.removeDetail(&t2));
 
1184
    QCOMPARE(c.details(QContactTag::Type).count(), 0);
 
1185
    QVERIFY(c.removeDetail(&t2) == false);
 
1186
    QCOMPARE(c.details(QContactTag::Type).count(), 0);
 
1187
}
 
1188
 
 
1189
void tst_QContactDetails::timestamp()
 
1190
{
 
1191
    QContact c;
 
1192
    QContactTimestamp t1, t2;
 
1193
    QDateTime modified = QDateTime::currentDateTime();
 
1194
    QDateTime created = modified.addSecs(-43);
 
1195
 
 
1196
    // test property set
 
1197
    t1.setCreated(created);
 
1198
    QCOMPARE(t1.created(), created);
 
1199
    QCOMPARE(t1.value(QContactTimestamp::FieldCreationTimestamp).toDateTime(), created);
 
1200
 
 
1201
    // test property add
 
1202
    QVERIFY(c.saveDetail(&t1));
 
1203
    QCOMPARE(c.details(QContactTimestamp::Type).count(), 1);
 
1204
    QCOMPARE(QContactTimestamp(c.details(QContactTimestamp::Type).value(0)).created(), t1.created());
 
1205
 
 
1206
    // test property update
 
1207
    t1.setValue(QContactTimestamp::FieldContext, "label1");
 
1208
    t1.setLastModified(modified);
 
1209
    QVERIFY(c.saveDetail(&t1));
 
1210
    QCOMPARE(c.details(QContactTimestamp::Type).value(0).value(QContactTimestamp::FieldContext).toString(), QString("label1"));
 
1211
    QCOMPARE(c.details(QContactTimestamp::Type).value(0).value(QContactTimestamp::FieldCreationTimestamp).toDateTime(), created);
 
1212
    QCOMPARE(c.details(QContactTimestamp::Type).value(0).value(QContactTimestamp::FieldModificationTimestamp).toDateTime(), modified);
 
1213
 
 
1214
    // test property remove
 
1215
    QVERIFY(c.removeDetail(&t1));
 
1216
    QCOMPARE(c.details(QContactTimestamp::Type).count(), 0);
 
1217
    t2.setCreated(created.addSecs(15));
 
1218
    QVERIFY(c.saveDetail(&t2));
 
1219
    QCOMPARE(c.details(QContactTimestamp::Type).count(), 1);
 
1220
    QVERIFY(c.removeDetail(&t2));
 
1221
    QCOMPARE(c.details(QContactTimestamp::Type).count(), 0);
 
1222
    QVERIFY(c.removeDetail(&t2) == false);
 
1223
    QCOMPARE(c.details(QContactTimestamp::Type).count(), 0);
 
1224
}
 
1225
 
 
1226
void tst_QContactDetails::type()
 
1227
{
 
1228
    QContact c;
 
1229
    QContactType t1, t2;
 
1230
 
 
1231
    // test property set
 
1232
    t1.setType(QContactType::TypeGroup);
 
1233
    QCOMPARE(t1.type(), QContactType::TypeGroup);
 
1234
    QCOMPARE(static_cast<QContactType::TypeValues>(t1.value<int>(QContactType::FieldType)), QContactType::TypeGroup);
 
1235
 
 
1236
    // test property add
 
1237
    QVERIFY(c.saveDetail(&t1));
 
1238
    QCOMPARE(c.details(QContactType::Type).count(), 1);
 
1239
    QCOMPARE(QContactType(c.details(QContactType::Type).value(0)).type(), t1.type());
 
1240
 
 
1241
    // test property update
 
1242
    t1.setType(QContactType::TypeContact);
 
1243
    QVERIFY(c.saveDetail(&t1));
 
1244
    QCOMPARE(static_cast<QContactType::TypeValues>(c.details(QContactType::Type).value(0).value<int>(QContactType::FieldType)), QContactType::TypeContact);
 
1245
 
 
1246
    // test property remove
 
1247
    QVERIFY(!c.removeDetail(&t1)); // cannot remove type
 
1248
    QCOMPARE(c.details(QContactType::Type).count(), 1);
 
1249
    t2.setType(QContactType::TypeGroup);
 
1250
    QVERIFY(c.saveDetail(&t2)); // overwrites t1
 
1251
    QCOMPARE(c.details(QContactType::Type).count(), 1);
 
1252
    QVERIFY(!c.removeDetail(&t2)); // cannot remove type - "succeeds" but count remains unchanged
 
1253
    QCOMPARE(c.details(QContactType::Type).count(), 1);
 
1254
    QVERIFY(!c.removeDetail(&t2));
 
1255
    QCOMPARE(c.details(QContactType::Type).count(), 1);
 
1256
}
 
1257
 
 
1258
void tst_QContactDetails::url()
 
1259
{
 
1260
    QContact c;
 
1261
    QContactUrl u1, u2;
 
1262
 
 
1263
    // test property set
 
1264
    u1.setUrl("1234");
 
1265
    QCOMPARE(u1.url(), QString("1234"));
 
1266
    QCOMPARE(u1.value(QContactUrl::FieldUrl).toString(), QString("1234"));
 
1267
 
 
1268
    u1.setSubType(QContactUrl::SubTypeHomePage);
 
1269
    QCOMPARE(u1.subType(), QContactUrl::SubTypeHomePage);
 
1270
    QCOMPARE(static_cast<QContactUrl::SubType>(u1.value<int>(QContactUrl::FieldSubType)), QContactUrl::SubTypeHomePage);
 
1271
 
 
1272
    // test property add
 
1273
    QVERIFY(c.saveDetail(&u1));
 
1274
    QCOMPARE(c.details(QContactUrl::Type).count(), 1);
 
1275
    QCOMPARE(QContactUrl(c.details(QContactUrl::Type).value(0)).url(), u1.url());
 
1276
 
 
1277
    // test property update
 
1278
    u1.setValue(QContactUrl::FieldContext, "label1");
 
1279
    u1.setUrl("12345");
 
1280
    QVERIFY(c.saveDetail(&u1));
 
1281
    QCOMPARE(c.details(QContactUrl::Type).value(0).value(QContactUrl::FieldContext).toString(), QString("label1"));
 
1282
    QCOMPARE(c.details(QContactUrl::Type).value(0).value(QContactUrl::FieldUrl).toString(), QString("12345"));
 
1283
 
 
1284
    // now as above, but with the QUrl setter.
 
1285
    QUrl urlValue("http://www.example.com");
 
1286
    QContactUrl u3;
 
1287
    u3.setUrl(urlValue);
 
1288
    QCOMPARE(u3.url(), urlValue.toString());
 
1289
    QVERIFY(c.saveDetail(&u3));
 
1290
    QVERIFY(c.details(QContactUrl::Type).contains(u3));
 
1291
    u3.setUrl(QString(QStringLiteral("http://www.anotherexample.com")));
 
1292
    QCOMPARE(u3.url(), QString(QStringLiteral("http://www.anotherexample.com")));
 
1293
    QVERIFY(c.saveDetail(&u3));
 
1294
 
 
1295
    // test property remove
 
1296
    QVERIFY(c.removeDetail(&u3));
 
1297
    QVERIFY(c.removeDetail(&u1));
 
1298
    QCOMPARE(c.details(QContactUrl::Type).count(), 0);
 
1299
    QVERIFY(c.saveDetail(&u2));
 
1300
    QCOMPARE(c.details(QContactUrl::Type).count(), 1);
 
1301
    QVERIFY(c.removeDetail(&u2));
 
1302
    QCOMPARE(c.details(QContactUrl::Type).count(), 0);
 
1303
    QVERIFY(c.removeDetail(&u2) == false);
 
1304
    QCOMPARE(c.details(QContactUrl::Type).count(), 0);
 
1305
}
 
1306
 
 
1307
void tst_QContactDetails::version()
 
1308
{
 
1309
    QContact c;
 
1310
    QContactVersion v1, v2;
 
1311
    QByteArray extendedVersion("Qt rules!");
 
1312
    QByteArray anotherExtendedVersion("Qt rules again!");
 
1313
    // test property set
 
1314
    v1.setSequenceNumber(64);
 
1315
    QCOMPARE(v1.sequenceNumber(), 64);
 
1316
    QCOMPARE(v1.value(QContactVersion::FieldSequenceNumber).toInt(), 64);
 
1317
    v1.setExtendedVersion(extendedVersion);
 
1318
    QCOMPARE(v1.extendedVersion(), extendedVersion);
 
1319
    QCOMPARE(v1.value(QContactVersion::FieldExtendedVersion).toByteArray(), extendedVersion);
 
1320
 
 
1321
    // test property add
 
1322
    QVERIFY(c.saveDetail(&v1));
 
1323
    QCOMPARE(c.details(QContactVersion::Type).count(), 1);
 
1324
    QCOMPARE(QContactVersion(c.details(QContactVersion::Type).value(0)).sequenceNumber(), v1.sequenceNumber());
 
1325
    QCOMPARE(QContactVersion(c.details(QContactVersion::Type).value(0)).extendedVersion(), v1.extendedVersion());
 
1326
    QVERIFY(c.saveDetail(&v2));
 
1327
    QCOMPARE(c.details(QContactVersion::Type).count(), 2);
 
1328
 
 
1329
    // test property update
 
1330
    v1.setSequenceNumber(65);
 
1331
    v1.setExtendedVersion(anotherExtendedVersion);
 
1332
    QVERIFY(c.saveDetail(&v1));
 
1333
    QCOMPARE(c.details(QContactVersion::Type).value(0).value(QContactVersion::FieldSequenceNumber).toInt(), 65);
 
1334
    QCOMPARE(c.details(QContactVersion::Type).value(0).value(QContactVersion::FieldExtendedVersion).toByteArray(),
 
1335
             anotherExtendedVersion);
 
1336
 
 
1337
    // test property remove
 
1338
    QVERIFY(c.removeDetail(&v1));
 
1339
    QCOMPARE(c.details(QContactVersion::Type).count(), 1);
 
1340
    QVERIFY(c.removeDetail(&v2));
 
1341
    QCOMPARE(c.details(QContactVersion::Type).count(), 0);
 
1342
    QVERIFY(c.removeDetail(&v2) == false);
 
1343
    QCOMPARE(c.details(QContactVersion::Type).count(), 0);
 
1344
}
 
1345
 
 
1346
QTEST_MAIN(tst_QContactDetails)
 
1347
#include "tst_qcontactdetails.moc"