1
/****************************************************************************
3
** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
4
** Contact: http://www.qt-project.org/legal
6
** This file is part of the test suite of the Qt Toolkit.
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.
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.
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.
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.
40
****************************************************************************/
42
#include <QtTest/QtTest>
44
#include <qcontacts.h>
45
#include <QContactDetail>
47
//TESTED_COMPONENT=src/contacts
49
QTCONTACTS_USE_NAMESPACE
50
class tst_QContactDetails : public QObject
55
tst_QContactDetails();
56
virtual ~tst_QContactDetails();
70
void extendedDetail();
75
void globalPresence();
94
tst_QContactDetails::tst_QContactDetails()
98
tst_QContactDetails::~tst_QContactDetails()
102
void tst_QContactDetails::init()
106
void tst_QContactDetails::cleanup()
110
void tst_QContactDetails::address()
113
QContactAddress a1, a2;
115
QVERIFY(a1.isEmpty());
116
QVERIFY(a2.isEmpty());
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"));
131
a1.setSubTypes(QList<int>() << QContactAddress::SubTypeDomestic);
132
QCOMPARE(a1.subTypes(), QList<int>() << QContactAddress::SubTypeDomestic);
135
sl << QContactAddress::SubTypeParcel << QContactAddress::SubTypePostal;
137
QCOMPARE(a1.subTypes(), sl);
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);
147
// test property update
148
a1.setValue(QContactAddress::FieldContext, "label1");
149
a1.setStreet("12345");
150
QVERIFY(c.saveDetail(&a1));
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);
162
a3.setStreet("Test");
163
QCOMPARE(a3.street(), QString("Test"));
167
a3.setLocality("Test");
168
QCOMPARE(a3.locality(), QString("Test"));
172
a3.setRegion("Test");
173
QCOMPARE(a3.region(), QString("Test"));
177
a3.setPostcode("Test");
178
QCOMPARE(a3.postcode(), QString("Test"));
182
a3.setCountry("Test");
183
QCOMPARE(a3.country(), QString("Test"));
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);
193
void tst_QContactDetails::anniversary()
196
QContactAnniversary a1, a2;
197
QDateTime currDateTime = QDateTime::currentDateTime();
198
QDate currDate = currDateTime.date();
199
QDateTime snippedDateTime = QDateTime(currDate);
202
a1.setCalendarId("1234");
203
QCOMPARE(a1.calendarId(), QString("1234"));
204
QCOMPARE(a1.value(QContactAnniversary::FieldCalendarId).toString(), QString("1234"));
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);
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);
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);
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());
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"));
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);
247
void tst_QContactDetails::avatar()
250
QContactAvatar a1, a2;
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"));
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());
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"));
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);
286
void tst_QContactDetails::birthday()
289
QContactBirthday b1, b2;
290
QDateTime currDateTime = QDateTime::currentDateTime();
291
QDate currDate = currDateTime.date();
292
QDateTime snippedDateTime = QDateTime(currDate);
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);
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);
307
b1.setCalendarId("1234");
308
QCOMPARE(b1.calendarId(), QString("1234"));
309
QCOMPARE(b1.value(QContactBirthday::FieldCalendarId).toString(), QString("1234"));
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());
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"));
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);
336
void tst_QContactDetails::displayLabel()
339
QContactDisplayLabel d1, d2;
343
QCOMPARE(d1.label(), QString("1234"));
344
QCOMPARE(d1.value(QContactDisplayLabel::FieldLabel).toString(), QString("1234"));
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());
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"));
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);
369
void tst_QContactDetails::emailAddress()
372
QContactEmailAddress e1, e2;
375
e1.setEmailAddress("1234");
376
QCOMPARE(e1.emailAddress(), QString("1234"));
377
QCOMPARE(e1.value(QContactEmailAddress::FieldEmailAddress).toString(), QString("1234"));
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());
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"));
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);
402
void tst_QContactDetails::extendedDetail()
405
QContactExtendedDetail extD1, extD2;
409
extD1.setName("detail1");
410
extD1.setValue(QContactExtendedDetail::FieldData, v1);
412
QCOMPARE(extD1.name(), QString("detail1"));
413
QCOMPARE(extD1.data(), v1);
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());
420
// test property update
421
extD1.setValue(QContactExtendedDetail::FieldContext, "label1");
422
extD1.setName("newDetail1");
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"));
429
// test property remove
430
QVERIFY(c.removeDetail(&extD1));
431
QCOMPARE(c.details(QContactExtendedDetail::Type).count(), 0);
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);
442
void tst_QContactDetails::family()
445
QContactFamily f1, f2;
448
f1.setSpouse("1234");
449
QCOMPARE(f1.spouse(), QString("1234"));
450
QCOMPARE(f1.value(QContactFamily::FieldSpouse).toString(), QString("1234"));
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());
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"));
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);
478
void tst_QContactDetails::favorite()
481
QContactFavorite f1, f2;
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());
489
f1.setFavorite(true);
490
QCOMPARE(f1.isFavorite(), true);
491
QCOMPARE(f1.value<bool>(QContactFavorite::FieldFavorite), true);
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());
498
// test property update
499
f1.setValue(QContactFavorite::FieldContext, "label1");
500
f1.setFavorite(false);
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);
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);
520
void tst_QContactDetails::gender()
523
QContactGender g1, g2;
526
g1.setGender(QContactGender::GenderFemale);
527
QCOMPARE(g1.gender(), QContactGender::GenderFemale);
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());
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);
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);
552
void tst_QContactDetails::geolocation()
555
QContactGeoLocation g1, g2;
559
QCOMPARE(g1.label(), QString("1234"));
560
QCOMPARE(g1.value(QContactGeoLocation::FieldLabel).toString(), QString("1234"));
562
QCOMPARE(g1.accuracy(), 3.2);
563
QCOMPARE(g1.value(QContactGeoLocation::FieldAccuracy), QVariant(3.2));
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));
571
QCOMPARE(g1.heading(), 3.5);
572
QCOMPARE(g1.value(QContactGeoLocation::FieldHeading), QVariant(3.5));
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));
584
QCOMPARE(g1.speed(), 3.8);
585
QCOMPARE(g1.value(QContactGeoLocation::FieldSpeed), QVariant(3.8));
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());
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"));
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);
608
void tst_QContactDetails::globalPresence()
611
QContactGlobalPresence p1, p2;
614
QDateTime ts = QDateTime::currentDateTime();
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!"));
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());
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"));
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!");
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);
657
p3.setPresenceStateImageUrl(imgUrl);
658
QCOMPARE(p3.presenceStateImageUrl(), imgUrl);
659
QCOMPARE(p3.presenceStateImageUrl().toString(), imgUrlStr);
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);
672
void tst_QContactDetails::guid()
679
QCOMPARE(g1.guid(), QString("1234"));
680
QCOMPARE(g1.value(QContactGuid::FieldGuid).toString(), QString("1234"));
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());
687
// test property update
688
g1.setValue(QContactGuid::FieldContext, "label1");
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"));
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);
705
void tst_QContactDetails::hobby()
708
QContactHobby h1, h2;
712
QCOMPARE(h1.hobby(), QString("1234"));
713
QCOMPARE(h1.value(QContactHobby::FieldHobby).toString(), QString("1234"));
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());
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"));
727
// test property remove
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);
739
void tst_QContactDetails::name()
744
QVERIFY(n1.isEmpty());
745
QVERIFY(n2.isEmpty());
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"));
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"));
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);
774
// test property update
775
n1.setValue(QContactName::FieldContext, "label1");
776
QVERIFY(c.saveDetail(&n1));
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);
790
void tst_QContactDetails::nickname()
793
QContactNickname n1, n2;
796
n1.setNickname("1234");
797
QCOMPARE(n1.nickname(), QString("1234"));
798
QCOMPARE(n1.value(QContactNickname::FieldNickname).toString(), QString("1234"));
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());
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"));
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);
823
void tst_QContactDetails::note()
829
n1.setNote("lorem ipsum");
830
QCOMPARE(n1.note(), QString("lorem ipsum"));
831
QCOMPARE(n1.value(QContactNote::FieldNote).toString(), QString("lorem ipsum"));
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());
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"));
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);
856
void tst_QContactDetails::onlineAccount()
859
QContactOnlineAccount o1, o2;
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);
869
o1.setSubTypes(QList<int>() << QContactOnlineAccount::SubTypeSip);
870
QCOMPARE(o1.subTypes(), QList<int>() << QContactOnlineAccount::SubTypeSip);
873
sl << QContactOnlineAccount::SubTypeImpp << QContactOnlineAccount::SubTypeVideoShare;
875
QCOMPARE(o1.subTypes(), sl);
877
o1 = QContactOnlineAccount();
878
o1.setAccountUri("test@nokia.com");
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());
886
// test property update
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"));
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);
912
void tst_QContactDetails::organization()
915
QContactOrganization o1, o2;
918
o1.setName("organization one");
919
QCOMPARE(o1.name(), QString("organization one"));
920
QCOMPARE(o1.value(QContactOrganization::FieldName).toString(), QString("organization one"));
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")));
926
o1.setLocation("location one");
927
QCOMPARE(o1.location(), QString("location one"));
928
QCOMPARE(o1.value(QContactOrganization::FieldLocation).toString(), QString("location one"));
930
o1.setLogoUrl(QUrl("logo one"));
931
QCOMPARE(o1.logoUrl(), QUrl("logo one"));
932
QCOMPARE(o1.value<QUrl>(QContactOrganization::FieldLogoUrl), QUrl("logo one"));
934
o1.setTitle("title one");
935
QCOMPARE(o1.title(), QString("title one"));
936
QCOMPARE(o1.value(QContactOrganization::FieldTitle).toString(), QString("title one"));
938
o1.setAssistantName("assistant one");
939
QCOMPARE(o1.assistantName(), QString("assistant one"));
940
QCOMPARE(o1.value(QContactOrganization::FieldAssistantName).toString(), QString("assistant one"));
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());
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"));
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);
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");
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"));
976
void tst_QContactDetails::phoneNumber()
979
QContactPhoneNumber p1, p2;
982
p1.setNumber("1234");
983
QCOMPARE(p1.number(), QString("1234"));
984
QCOMPARE(p1.value(QContactPhoneNumber::FieldNumber).toString(), QString("1234"));
987
p1.setSubTypes(QList<int>() << QContactPhoneNumber::SubTypeCar);
988
QCOMPARE(p1.subTypes(), QList<int>() << QContactPhoneNumber::SubTypeCar);
991
sl << QContactPhoneNumber::SubTypeMobile << QContactPhoneNumber::SubTypeFax;
993
QCOMPARE(p1.subTypes(), sl);
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());
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"));
1007
p1.setSubTypes(QList<int>() << QContactPhoneNumber::SubTypeDtmfMenu);
1010
QCOMPARE(c.detail(QContactPhoneNumber::Type).value<QList<int> >(QContactPhoneNumber::FieldSubTypes), QList<int>() << QContactPhoneNumber::SubTypeDtmfMenu);
1011
p1.setSubTypes(QList<int>() << QContactPhoneNumber::SubTypeModem << QContactPhoneNumber::SubTypeFax);
1013
QVERIFY(c.detail(QContactPhoneNumber::Type).value<QList<int> >(QContactPhoneNumber::FieldSubTypes) == p1.subTypes());
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);
1026
void tst_QContactDetails::presence()
1029
QContactPresence p1, p2;
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!"));
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());
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"));
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!");
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);
1082
void tst_QContactDetails::ringtone()
1085
QContactRingtone r1, r2;
1087
// test property set
1088
r1.setAudioRingtoneUrl(QUrl("audioUrl"));
1089
QCOMPARE(r1.audioRingtoneUrl(), QUrl("audioUrl"));
1090
QCOMPARE(r1.value<QUrl>(QContactRingtone::FieldAudioRingtoneUrl), QUrl("audioUrl"));
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"));
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());
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"));
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);
1123
void tst_QContactDetails::syncTarget()
1126
QContactSyncTarget s1, s2;
1128
// test property set
1129
s1.setSyncTarget("1234");
1130
QCOMPARE(s1.syncTarget(), QString("1234"));
1131
QCOMPARE(s1.value(QContactSyncTarget::FieldSyncTarget).toString(), QString("1234"));
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());
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"));
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);
1156
void tst_QContactDetails::tag()
1161
// test property set
1163
QCOMPARE(t1.tag(), QString("red"));
1164
QCOMPARE(t1.value(QContactTag::FieldTag).toString(), QString("red"));
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);
1173
// test property update
1174
t1.setValue(QContactTag::FieldContext, "label1");
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"));
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);
1189
void tst_QContactDetails::timestamp()
1192
QContactTimestamp t1, t2;
1193
QDateTime modified = QDateTime::currentDateTime();
1194
QDateTime created = modified.addSecs(-43);
1196
// test property set
1197
t1.setCreated(created);
1198
QCOMPARE(t1.created(), created);
1199
QCOMPARE(t1.value(QContactTimestamp::FieldCreationTimestamp).toDateTime(), created);
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());
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);
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);
1226
void tst_QContactDetails::type()
1229
QContactType t1, t2;
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);
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());
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);
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);
1258
void tst_QContactDetails::url()
1263
// test property set
1265
QCOMPARE(u1.url(), QString("1234"));
1266
QCOMPARE(u1.value(QContactUrl::FieldUrl).toString(), QString("1234"));
1268
u1.setSubType(QContactUrl::SubTypeHomePage);
1269
QCOMPARE(u1.subType(), QContactUrl::SubTypeHomePage);
1270
QCOMPARE(static_cast<QContactUrl::SubType>(u1.value<int>(QContactUrl::FieldSubType)), QContactUrl::SubTypeHomePage);
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());
1277
// test property update
1278
u1.setValue(QContactUrl::FieldContext, "label1");
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"));
1284
// now as above, but with the QUrl setter.
1285
QUrl urlValue("http://www.example.com");
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));
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);
1307
void tst_QContactDetails::version()
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);
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);
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);
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);
1346
QTEST_MAIN(tst_QContactDetails)
1347
#include "tst_qcontactdetails.moc"