235 { |
238 { |
236 QContact c; |
239 QContact c; |
237 QContactAvatar a1, a2; |
240 QContactAvatar a1, a2; |
238 |
241 |
239 // test property set |
242 // test property set |
240 a1.setAvatar("1234"); |
243 a1.setImageUrl(QUrl("1234")); |
241 QCOMPARE(a1.avatar(), QString("1234")); |
244 QCOMPARE(a1.imageUrl(), QUrl("1234")); |
242 QCOMPARE(a1.value(QContactAvatar::FieldAvatar), QString("1234")); |
245 QCOMPARE(a1.value<QUrl>(QContactAvatar::FieldImageUrl), QUrl("1234")); |
243 a1.setSubType(QContactAvatar::SubTypeAudioRingtone); |
246 a2.setVideoUrl(QUrl("videoUrl")); |
244 QCOMPARE(a1.subType(), QString(QLatin1String(QContactAvatar::SubTypeAudioRingtone))); |
247 a2.setImageUrl(QUrl("imageUrl")); |
245 QCOMPARE(a1.value(QContactAvatar::FieldSubType), QString(QLatin1String(QContactAvatar::SubTypeAudioRingtone))); |
248 QCOMPARE(a2.videoUrl(), QUrl("videoUrl")); |
246 |
249 QCOMPARE(a2.value<QUrl>(QContactAvatar::FieldVideoUrl), QUrl("videoUrl")); |
247 a1.setSubType(QContactAvatar::SubTypeImage); |
250 QCOMPARE(a2.imageUrl(), QUrl("imageUrl")); |
248 |
251 QCOMPARE(a2.value<QUrl>(QContactAvatar::FieldImageUrl), QUrl("imageUrl")); |
249 //pixmap |
|
250 uchar pixDataRGB[] = {255, 0, 0, 0, 0, 255, 0, 0, 255, 255, 0, 0}; // Red, Blue, Red, Blue |
|
251 QImage img(pixDataRGB, 2, 2, 6, QImage::Format_RGB888); // 2 pixels width, 2 pixels height, 6 bytes per line, RGB888 format |
|
252 QImage scaled = img.scaled(100, 100); // Scale image to show results better |
|
253 QPixmap pix = QPixmap::fromImage(scaled); // Create pixmap from image |
|
254 a1.setPixmap(pix); |
|
255 |
252 |
256 // test property add |
253 // test property add |
257 QVERIFY(c.saveDetail(&a1)); |
254 QVERIFY(c.saveDetail(&a1)); |
258 QCOMPARE(c.details(QContactAvatar::DefinitionName).count(), 1); |
255 QCOMPARE(c.details(QContactAvatar::DefinitionName).count(), 1); |
259 QCOMPARE(QContactAvatar(c.details(QContactAvatar::DefinitionName).value(0)).avatar(), a1.avatar()); |
256 QCOMPARE(QContactAvatar(c.details(QContactAvatar::DefinitionName).value(0)).imageUrl(), a1.imageUrl()); |
260 QCOMPARE(a1.pixmap(), pix); |
|
261 |
257 |
262 // test property update |
258 // test property update |
263 a1.setValue("label","label1"); |
259 a1.setValue("label","label1"); |
264 a1.setAvatar("12345"); |
260 a1.setImageUrl(QUrl("12345")); |
265 QVERIFY(c.saveDetail(&a1)); |
261 QVERIFY(c.saveDetail(&a1)); |
266 QCOMPARE(c.details(QContactAvatar::DefinitionName).value(0).value("label"), QString("label1")); |
262 QCOMPARE(c.details(QContactAvatar::DefinitionName).value(0).value("label"), QString("label1")); |
267 QCOMPARE(c.details(QContactAvatar::DefinitionName).value(0).value(QContactAvatar::FieldAvatar), QString("12345")); |
263 QCOMPARE(c.details(QContactAvatar::DefinitionName).value(0).value<QUrl>(QContactAvatar::FieldImageUrl), QUrl("12345")); |
268 |
264 |
269 // test property remove |
265 // test property remove |
270 QVERIFY(c.removeDetail(&a1)); |
266 QVERIFY(c.removeDetail(&a1)); |
271 QCOMPARE(c.details(QContactAvatar::DefinitionName).count(), 0); |
267 QCOMPARE(c.details(QContactAvatar::DefinitionName).count(), 0); |
272 QVERIFY(c.saveDetail(&a2)); |
268 QVERIFY(c.saveDetail(&a2)); |
606 QCOMPARE(c.details(QContactNickname::DefinitionName).count(), 0); |
602 QCOMPARE(c.details(QContactNickname::DefinitionName).count(), 0); |
607 QVERIFY(c.removeDetail(&n2) == false); |
603 QVERIFY(c.removeDetail(&n2) == false); |
608 QCOMPARE(c.details(QContactNickname::DefinitionName).count(), 0); |
604 QCOMPARE(c.details(QContactNickname::DefinitionName).count(), 0); |
609 } |
605 } |
610 |
606 |
|
607 void tst_QContactDetails::note() |
|
608 { |
|
609 QContact c; |
|
610 QContactNote n1, n2; |
|
611 |
|
612 // test property set |
|
613 n1.setNote("lorem ipsum"); |
|
614 QCOMPARE(n1.note(), QString("lorem ipsum")); |
|
615 QCOMPARE(n1.value(QContactNote::FieldNote), QString("lorem ipsum")); |
|
616 |
|
617 // test property add |
|
618 QVERIFY(c.saveDetail(&n1)); |
|
619 QCOMPARE(c.details(QContactNote::DefinitionName).count(), 1); |
|
620 QCOMPARE(QContactNote(c.details(QContactNote::DefinitionName).value(0)).note(), n1.note()); |
|
621 |
|
622 // test property update |
|
623 n1.setValue("label","label1"); |
|
624 n1.setNote("orange gypsum"); |
|
625 QVERIFY(c.saveDetail(&n1)); |
|
626 QCOMPARE(c.details(QContactNote::DefinitionName).value(0).value("label"), QString("label1")); |
|
627 QCOMPARE(c.details(QContactNote::DefinitionName).value(0).value(QContactNote::FieldNote), QString("orange gypsum")); |
|
628 |
|
629 // test property remove |
|
630 QVERIFY(c.removeDetail(&n1)); |
|
631 QCOMPARE(c.details(QContactNote::DefinitionName).count(), 0); |
|
632 QVERIFY(c.saveDetail(&n2)); |
|
633 QCOMPARE(c.details(QContactNote::DefinitionName).count(), 1); |
|
634 QVERIFY(c.removeDetail(&n2)); |
|
635 QCOMPARE(c.details(QContactNote::DefinitionName).count(), 0); |
|
636 QVERIFY(c.removeDetail(&n2) == false); |
|
637 QCOMPARE(c.details(QContactNote::DefinitionName).count(), 0); |
|
638 } |
|
639 |
611 void tst_QContactDetails::onlineAccount() |
640 void tst_QContactDetails::onlineAccount() |
612 { |
641 { |
613 QContact c; |
642 QContact c; |
614 QContactOnlineAccount o1, o2; |
643 QContactOnlineAccount o1, o2; |
615 |
644 |
616 // test property set |
645 // test property set |
617 o1.setAccountUri("test@nokia.com"); |
646 o1.setAccountUri("test@nokia.com"); |
618 QCOMPARE(o1.accountUri(), QString("test@nokia.com")); |
647 QCOMPARE(o1.accountUri(), QString("test@nokia.com")); |
619 QCOMPARE(o1.value(QContactOnlineAccount::FieldAccountUri), QString("test@nokia.com")); |
648 QCOMPARE(o1.value(QContactOnlineAccount::FieldAccountUri), QString("test@nokia.com")); |
620 o1.setNickname("test"); |
|
621 QCOMPARE(o1.nickname(), QString("test")); |
|
622 QCOMPARE(o1.value(QContactOnlineAccount::FieldNickname), QString("test")); |
|
623 o1.setStatusMessage("Gone Fishing"); |
|
624 QCOMPARE(o1.statusMessage(), QString("Gone Fishing")); |
|
625 QCOMPARE(o1.value(QContactOnlineAccount::FieldStatusMessage), QString("Gone Fishing")); |
|
626 o1.setPresence("Extended Away"); |
|
627 QCOMPARE(o1.presence(), QString("Extended Away")); |
|
628 QCOMPARE(o1.value(QContactOnlineAccount::FieldPresence), QString("Extended Away")); |
|
629 |
649 |
630 // Sub types |
650 // Sub types |
631 o1.setSubTypes(QContactOnlineAccount::SubTypeSip); |
651 o1.setSubTypes(QContactOnlineAccount::SubTypeSip); |
632 QCOMPARE(o1.subTypes(), QStringList() << QLatin1String(QContactOnlineAccount::SubTypeSip)); |
652 QCOMPARE(o1.subTypes(), QStringList() << QLatin1String(QContactOnlineAccount::SubTypeSip)); |
633 |
653 |
641 |
661 |
642 // test property add |
662 // test property add |
643 QVERIFY(c.saveDetail(&o1)); |
663 QVERIFY(c.saveDetail(&o1)); |
644 QCOMPARE(c.details(QContactOnlineAccount::DefinitionName).count(), 1); |
664 QCOMPARE(c.details(QContactOnlineAccount::DefinitionName).count(), 1); |
645 QCOMPARE(QContactOnlineAccount(c.details(QContactOnlineAccount::DefinitionName).value(0)).accountUri(), o1.accountUri()); |
665 QCOMPARE(QContactOnlineAccount(c.details(QContactOnlineAccount::DefinitionName).value(0)).accountUri(), o1.accountUri()); |
646 QCOMPARE(QContactOnlineAccount(c.details(QContactOnlineAccount::DefinitionName).value(0)).presence(), o1.presence()); |
|
647 QCOMPARE(QContactOnlineAccount(c.details(QContactOnlineAccount::DefinitionName).value(0)).nickname(), o1.nickname()); |
|
648 QCOMPARE(QContactOnlineAccount(c.details(QContactOnlineAccount::DefinitionName).value(0)).statusMessage(), o1.statusMessage()); |
|
649 QCOMPARE(QContactOnlineAccount(c.details(QContactOnlineAccount::DefinitionName).value(0)).accountUri(), o1.accountUri()); |
666 QCOMPARE(QContactOnlineAccount(c.details(QContactOnlineAccount::DefinitionName).value(0)).accountUri(), o1.accountUri()); |
650 |
667 |
651 // test property update |
668 // test property update |
652 o1.setValue("label","label1"); |
669 o1.setValue("label","label1"); |
653 o1.setAccountUri("test2@nokia.com"); |
670 o1.setAccountUri("test2@nokia.com"); |
682 |
699 |
683 o1.setLocation("location one"); |
700 o1.setLocation("location one"); |
684 QCOMPARE(o1.location(), QString("location one")); |
701 QCOMPARE(o1.location(), QString("location one")); |
685 QCOMPARE(o1.value(QContactOrganization::FieldLocation), QString("location one")); |
702 QCOMPARE(o1.value(QContactOrganization::FieldLocation), QString("location one")); |
686 |
703 |
687 o1.setLogo("logo one"); |
704 o1.setLogoUrl(QUrl("logo one")); |
688 QCOMPARE(o1.logo(), QString("logo one")); |
705 QCOMPARE(o1.logoUrl(), QUrl("logo one")); |
689 QCOMPARE(o1.value(QContactOrganization::FieldLogo), QString("logo one")); |
706 QCOMPARE(o1.value<QUrl>(QContactOrganization::FieldLogoUrl), QUrl("logo one")); |
690 |
707 |
691 o1.setTitle("title one"); |
708 o1.setTitle("title one"); |
692 QCOMPARE(o1.title(), QString("title one")); |
709 QCOMPARE(o1.title(), QString("title one")); |
693 QCOMPARE(o1.value(QContactOrganization::FieldTitle), QString("title one")); |
710 QCOMPARE(o1.value(QContactOrganization::FieldTitle), QString("title one")); |
694 |
711 |
717 QCOMPARE(c.details(QContactOrganization::DefinitionName).count(), 0); |
734 QCOMPARE(c.details(QContactOrganization::DefinitionName).count(), 0); |
718 |
735 |
719 // organization-specific API testing |
736 // organization-specific API testing |
720 o1.setDepartment(QStringList(QString("Imaginary Dept"))); |
737 o1.setDepartment(QStringList(QString("Imaginary Dept"))); |
721 o1.setLocation("Utopia"); |
738 o1.setLocation("Utopia"); |
722 o1.setLogo("logo.png"); |
739 o1.setLogoUrl(QUrl("logo.png")); |
723 o1.setName("Utopian Megacorporation"); |
740 o1.setName("Utopian Megacorporation"); |
724 o1.setTitle("Generic Employee"); |
741 o1.setTitle("Generic Employee"); |
725 c.saveDetail(&o1); |
742 c.saveDetail(&o1); |
726 QVERIFY(c.detail(QContactOrganization::DefinitionName).value<QStringList>(QContactOrganization::FieldDepartment) == QStringList(QString("Imaginary Dept"))); |
743 QVERIFY(c.detail(QContactOrganization::DefinitionName).value<QStringList>(QContactOrganization::FieldDepartment) == QStringList(QString("Imaginary Dept"))); |
727 QVERIFY(c.detail(QContactOrganization::DefinitionName).value(QContactOrganization::FieldLocation) == QString("Utopia")); |
744 QVERIFY(c.detail(QContactOrganization::DefinitionName).value(QContactOrganization::FieldLocation) == QString("Utopia")); |
728 QVERIFY(c.detail(QContactOrganization::DefinitionName).value(QContactOrganization::FieldLogo) == QString("logo.png")); |
745 QVERIFY(c.detail(QContactOrganization::DefinitionName).value<QUrl>(QContactOrganization::FieldLogoUrl) == QUrl("logo.png")); |
729 QVERIFY(c.detail(QContactOrganization::DefinitionName).value(QContactOrganization::FieldName) == QString("Utopian Megacorporation")); |
746 QVERIFY(c.detail(QContactOrganization::DefinitionName).value(QContactOrganization::FieldName) == QString("Utopian Megacorporation")); |
730 QVERIFY(c.detail(QContactOrganization::DefinitionName).value(QContactOrganization::FieldTitle) == QString("Generic Employee")); |
747 QVERIFY(c.detail(QContactOrganization::DefinitionName).value(QContactOrganization::FieldTitle) == QString("Generic Employee")); |
731 } |
748 } |
732 |
749 |
733 void tst_QContactDetails::phoneNumber() |
750 void tst_QContactDetails::phoneNumber() |
777 QCOMPARE(c.details(QContactPhoneNumber::DefinitionName).count(), 0); |
794 QCOMPARE(c.details(QContactPhoneNumber::DefinitionName).count(), 0); |
778 QVERIFY(c.removeDetail(&p2) == false); |
795 QVERIFY(c.removeDetail(&p2) == false); |
779 QCOMPARE(c.details(QContactPhoneNumber::DefinitionName).count(), 0); |
796 QCOMPARE(c.details(QContactPhoneNumber::DefinitionName).count(), 0); |
780 } |
797 } |
781 |
798 |
|
799 void tst_QContactDetails::ringtone() |
|
800 { |
|
801 QContact c; |
|
802 QContactRingtone r1, r2; |
|
803 |
|
804 // test property set |
|
805 r1.setAudioRingtoneUrl(QUrl("audioUrl")); |
|
806 QCOMPARE(r1.audioRingtoneUrl(), QUrl("audioUrl")); |
|
807 QCOMPARE(r1.value<QUrl>(QContactRingtone::FieldAudioRingtoneUrl), QUrl("audioUrl")); |
|
808 |
|
809 // and the other fields |
|
810 r2.setVideoRingtoneUrl(QUrl("videoUrl")); |
|
811 QCOMPARE(r2.videoRingtoneUrl(), QUrl("videoUrl")); |
|
812 QCOMPARE(r2.value<QUrl>(QContactRingtone::FieldVideoRingtoneUrl), QUrl("videoUrl")); |
|
813 r2.setVibrationRingtoneUrl(QUrl("vibrationUrl")); |
|
814 QCOMPARE(r2.vibrationRingtoneUrl(), QUrl("vibrationUrl")); |
|
815 QCOMPARE(r2.value<QUrl>(QContactRingtone::FieldVibrationRingtoneUrl), QUrl("vibrationUrl")); |
|
816 |
|
817 // test property add |
|
818 QVERIFY(c.saveDetail(&r1)); |
|
819 QCOMPARE(c.details(QContactRingtone::DefinitionName).count(), 1); |
|
820 QCOMPARE(QContactRingtone(c.details(QContactRingtone::DefinitionName).value(0)).audioRingtoneUrl(), r1.audioRingtoneUrl()); |
|
821 |
|
822 // test property update |
|
823 r1.setValue("label","label1"); |
|
824 r1.setAudioRingtoneUrl(QUrl("audioUrl2")); |
|
825 QVERIFY(c.saveDetail(&r1)); |
|
826 QCOMPARE(c.details(QContactRingtone::DefinitionName).value(0).value("label"), QString("label1")); |
|
827 QCOMPARE(c.details(QContactRingtone::DefinitionName).value(0).value<QUrl>(QContactRingtone::FieldAudioRingtoneUrl), QUrl("audioUrl2")); |
|
828 |
|
829 // test property remove |
|
830 QVERIFY(c.removeDetail(&r1)); |
|
831 QCOMPARE(c.details(QContactRingtone::DefinitionName).count(), 0); |
|
832 QVERIFY(c.saveDetail(&r2)); |
|
833 QCOMPARE(c.details(QContactRingtone::DefinitionName).count(), 1); |
|
834 QVERIFY(c.removeDetail(&r2)); |
|
835 QCOMPARE(c.details(QContactRingtone::DefinitionName).count(), 0); |
|
836 QVERIFY(c.removeDetail(&r2) == false); |
|
837 QCOMPARE(c.details(QContactRingtone::DefinitionName).count(), 0); |
|
838 } |
|
839 |
782 void tst_QContactDetails::syncTarget() |
840 void tst_QContactDetails::syncTarget() |
783 { |
841 { |
784 QContact c; |
842 QContact c; |
785 QContactSyncTarget s1, s2; |
843 QContactSyncTarget s1, s2; |
786 |
844 |
808 QCOMPARE(c.details(QContactSyncTarget::DefinitionName).count(), 1); |
866 QCOMPARE(c.details(QContactSyncTarget::DefinitionName).count(), 1); |
809 QVERIFY(c.removeDetail(&s2)); |
867 QVERIFY(c.removeDetail(&s2)); |
810 QCOMPARE(c.details(QContactSyncTarget::DefinitionName).count(), 0); |
868 QCOMPARE(c.details(QContactSyncTarget::DefinitionName).count(), 0); |
811 QVERIFY(c.removeDetail(&s2) == false); |
869 QVERIFY(c.removeDetail(&s2) == false); |
812 QCOMPARE(c.details(QContactSyncTarget::DefinitionName).count(), 0); |
870 QCOMPARE(c.details(QContactSyncTarget::DefinitionName).count(), 0); |
|
871 } |
|
872 |
|
873 void tst_QContactDetails::tag() |
|
874 { |
|
875 QContact c; |
|
876 QContactTag t1, t2; |
|
877 |
|
878 // test property set |
|
879 t1.setTag("red"); |
|
880 QCOMPARE(t1.tag(), QString("red")); |
|
881 QCOMPARE(t1.value(QContactTag::FieldTag), QString("red")); |
|
882 |
|
883 // test property add |
|
884 QVERIFY(c.saveDetail(&t1)); |
|
885 QCOMPARE(c.details(QContactTag::DefinitionName).count(), 1); |
|
886 QCOMPARE(QContactTag(c.details(QContactTag::DefinitionName).value(0)).tag(), t1.tag()); |
|
887 QVERIFY(c.saveDetail(&t2)); |
|
888 QCOMPARE(c.details(QContactTag::DefinitionName).count(), 2); |
|
889 |
|
890 // test property update |
|
891 t1.setValue("label","label1"); |
|
892 t1.setTag("green"); |
|
893 QVERIFY(c.saveDetail(&t1)); |
|
894 QCOMPARE(c.details(QContactTag::DefinitionName).value(0).value("label"), QString("label1")); |
|
895 QCOMPARE(c.details(QContactTag::DefinitionName).value(0).value(QContactTag::FieldTag), QString("green")); |
|
896 |
|
897 // test property remove |
|
898 QVERIFY(c.removeDetail(&t1)); |
|
899 QCOMPARE(c.details(QContactTag::DefinitionName).count(), 1); |
|
900 QVERIFY(c.removeDetail(&t2)); |
|
901 QCOMPARE(c.details(QContactTag::DefinitionName).count(), 0); |
|
902 QVERIFY(c.removeDetail(&t2) == false); |
|
903 QCOMPARE(c.details(QContactTag::DefinitionName).count(), 0); |
|
904 } |
|
905 |
|
906 void tst_QContactDetails::thumbnail() |
|
907 { |
|
908 QContact c; |
|
909 QContactThumbnail t1, t2; |
|
910 QImage i1, i2; // XXX TODO: FIXME load an image from bytearray |
|
911 |
|
912 // test property set |
|
913 t1.setThumbnail(i1); |
|
914 QCOMPARE(t1.thumbnail(), i1); |
|
915 QCOMPARE(t1.value<QImage>(QContactThumbnail::FieldThumbnail), i1); |
|
916 |
|
917 // Make sure we have none to start with |
|
918 QCOMPARE(c.details(QContactThumbnail::DefinitionName).count(), 0); |
|
919 |
|
920 // test property add |
|
921 QVERIFY(c.saveDetail(&t1)); |
|
922 QCOMPARE(c.details(QContactThumbnail::DefinitionName).count(), 1); |
|
923 QCOMPARE(QContactThumbnail(c.details(QContactThumbnail::DefinitionName).value(0)).thumbnail(), t1.thumbnail()); |
|
924 |
|
925 // test property update |
|
926 t1.setValue("label","label1"); |
|
927 t1.setThumbnail(i2); |
|
928 QVERIFY(c.saveDetail(&t1)); |
|
929 QCOMPARE(c.details(QContactThumbnail::DefinitionName).value(0).value("label"), QString("label1")); |
|
930 QCOMPARE(c.details(QContactThumbnail::DefinitionName).value(0).value<QImage>(QContactThumbnail::FieldThumbnail), i2); |
|
931 |
|
932 // Uniqueness is not currently enforced |
|
933 QCOMPARE(c.details(QContactThumbnail::DefinitionName).count(), 1); |
|
934 t2.setThumbnail(i1); |
|
935 QVERIFY(c.saveDetail(&t2)); |
|
936 QCOMPARE(c.details(QContactThumbnail::DefinitionName).count(), 2); // save should overwrite! |
|
937 QCOMPARE(QContactThumbnail(c.details(QContactThumbnail::DefinitionName).value(0)).thumbnail(), i1); |
|
938 QCOMPARE(QContactThumbnail(c.details(QContactThumbnail::DefinitionName).value(0)).thumbnail(), t2.thumbnail()); |
|
939 |
|
940 QVERIFY(c.removeDetail(&t1)); |
|
941 QCOMPARE(c.details(QContactThumbnail::DefinitionName).count(), 1); |
813 } |
942 } |
814 |
943 |
815 void tst_QContactDetails::timestamp() |
944 void tst_QContactDetails::timestamp() |
816 { |
945 { |
817 QContact c; |
946 QContact c; |
916 QCOMPARE(c.details(QContactUrl::DefinitionName).count(), 0); |
1045 QCOMPARE(c.details(QContactUrl::DefinitionName).count(), 0); |
917 QVERIFY(c.removeDetail(&u2) == false); |
1046 QVERIFY(c.removeDetail(&u2) == false); |
918 QCOMPARE(c.details(QContactUrl::DefinitionName).count(), 0); |
1047 QCOMPARE(c.details(QContactUrl::DefinitionName).count(), 0); |
919 } |
1048 } |
920 |
1049 |
|
1050 |
|
1051 |
|
1052 |
|
1053 |
|
1054 |
|
1055 |
|
1056 |
|
1057 |
|
1058 |
|
1059 |
|
1060 |
|
1061 // define a custom detail to test inheritance/slicing |
|
1062 class CustomTestDetail : public QContactDetail |
|
1063 { |
|
1064 public: |
|
1065 Q_DECLARE_CUSTOM_CONTACT_DETAIL(CustomTestDetail, "CustomTestDetail") |
|
1066 Q_DECLARE_LATIN1_CONSTANT(FieldTestLabel, "TestLabel"); |
|
1067 |
|
1068 ~CustomTestDetail() |
|
1069 { |
|
1070 // we define a dtor which does some random stuff |
|
1071 // to test that the virtual dtor works as expected. |
|
1072 |
|
1073 int *temp = 0; |
|
1074 int random = qrand(); |
|
1075 random += 1; |
|
1076 if (random > 0) { |
|
1077 temp = new int; |
|
1078 *temp = 5; |
|
1079 } |
|
1080 |
|
1081 if (temp) { |
|
1082 delete temp; |
|
1083 } |
|
1084 } |
|
1085 |
|
1086 void setTestLabel(const QString& testLabel) { setValue(FieldTestLabel, testLabel); } |
|
1087 QString testLabel() const { return value(FieldTestLabel); } |
|
1088 }; |
|
1089 Q_DEFINE_LATIN1_CONSTANT(CustomTestDetail::FieldTestLabel, "TestLabel"); |
|
1090 Q_DEFINE_LATIN1_CONSTANT(CustomTestDetail::DefinitionName, "CustomTestDetail"); |
|
1091 |
921 void tst_QContactDetails::custom() |
1092 void tst_QContactDetails::custom() |
922 { |
1093 { |
923 QContact c; |
1094 QContact c; |
|
1095 |
|
1096 // first, test a custom definition detail |
924 QContactDetail c1("mycustom"), c2("mycustom"); |
1097 QContactDetail c1("mycustom"), c2("mycustom"); |
925 |
1098 |
926 // test property set |
1099 // test property set |
927 c1.setValue("custom", "1234"); |
1100 c1.setValue("custom", "1234"); |
928 QCOMPARE(c1.value("custom"), QString("1234")); |
1101 QCOMPARE(c1.value("custom"), QString("1234")); |
944 QCOMPARE(c.details("mycustom").count(), 1); |
1117 QCOMPARE(c.details("mycustom").count(), 1); |
945 QVERIFY(c.removeDetail(&c2)); |
1118 QVERIFY(c.removeDetail(&c2)); |
946 QCOMPARE(c.details("mycustom").count(), 0); |
1119 QCOMPARE(c.details("mycustom").count(), 0); |
947 QVERIFY(c.removeDetail(&c2) == false); |
1120 QVERIFY(c.removeDetail(&c2) == false); |
948 QCOMPARE(c.details("mycustom").count(), 0); |
1121 QCOMPARE(c.details("mycustom").count(), 0); |
949 } |
1122 |
950 |
1123 |
951 void tst_QContactDetails::note() |
1124 // then, test a custom subclass (we don't test registration of the custom definition, however) |
952 { |
1125 CustomTestDetail ctd1, ctd2; |
953 QContact c; |
1126 ctd1.setTestLabel("this is a test"); |
954 QContactNote n1, n2; |
1127 ctd2.setTestLabel("test 2"); |
955 |
1128 QCOMPARE(ctd1.testLabel(), QString("this is a test")); |
956 // test property set |
1129 |
957 n1.setNote("lorem ipsum"); |
1130 // prior to add |
958 QCOMPARE(n1.note(), QString("lorem ipsum")); |
1131 QCOMPARE(c.details("CustomTestDetail").count(), 0); |
959 QCOMPARE(n1.value(QContactNote::FieldNote), QString("lorem ipsum")); |
1132 QCOMPARE(c.details<CustomTestDetail>().count(), 0); |
960 |
1133 |
961 // test property add |
1134 // test detail add |
962 QVERIFY(c.saveDetail(&n1)); |
1135 QVERIFY(c.saveDetail(&ctd1)); |
963 QCOMPARE(c.details(QContactNote::DefinitionName).count(), 1); |
1136 QCOMPARE(c.details("CustomTestDetail").count(), 1); |
964 QCOMPARE(QContactNote(c.details(QContactNote::DefinitionName).value(0)).note(), n1.note()); |
1137 QCOMPARE(c.details<CustomTestDetail>().count(), 1); |
965 |
1138 QCOMPARE(c.details<CustomTestDetail>().first().testLabel(), QString("this is a test")); |
966 // test property update |
1139 |
967 n1.setValue("label","label1"); |
1140 // test detail update |
968 n1.setNote("orange gypsum"); |
1141 ctd1.setTestLabel("this is a modified test"); |
969 QVERIFY(c.saveDetail(&n1)); |
1142 QVERIFY(c.saveDetail(&ctd1)); // should merely update |
970 QCOMPARE(c.details(QContactNote::DefinitionName).value(0).value("label"), QString("label1")); |
1143 QCOMPARE(c.details("CustomTestDetail").count(), 1); |
971 QCOMPARE(c.details(QContactNote::DefinitionName).value(0).value(QContactNote::FieldNote), QString("orange gypsum")); |
1144 QCOMPARE(c.details<CustomTestDetail>().count(), 1); |
972 |
1145 QCOMPARE(c.details<CustomTestDetail>().first().testLabel(), QString("this is a modified test")); |
973 // test property remove |
1146 |
974 QVERIFY(c.removeDetail(&n1)); |
1147 // test detail remove |
975 QCOMPARE(c.details(QContactNote::DefinitionName).count(), 0); |
1148 QVERIFY(c.removeDetail(&ctd1)); |
976 QVERIFY(c.saveDetail(&n2)); |
1149 QCOMPARE(c.details("CustomTestDetail").count(), 0); |
977 QCOMPARE(c.details(QContactNote::DefinitionName).count(), 1); |
1150 QCOMPARE(c.details<CustomTestDetail>().count(), 0); |
978 QVERIFY(c.removeDetail(&n2)); |
1151 |
979 QCOMPARE(c.details(QContactNote::DefinitionName).count(), 0); |
1152 // now test how custom details interact with foreach loops. |
980 QVERIFY(c.removeDetail(&n2) == false); |
1153 QVERIFY(c.saveDetail(&ctd1)); |
981 QCOMPARE(c.details(QContactNote::DefinitionName).count(), 0); |
1154 QVERIFY(c.saveDetail(&ctd2)); |
|
1155 QVERIFY(c.saveDetail(&c1)); |
|
1156 |
|
1157 // first, definition agnostic foreach. |
|
1158 foreach (const QContactDetail& det, c.details()) { |
|
1159 QCOMPARE(det.definitionName().isEmpty(), false); |
|
1160 } |
|
1161 |
|
1162 // second, definition parameter foreach, with assignment. |
|
1163 foreach (const QContactDetail& det, c.details("CustomTestDetail")) { |
|
1164 CustomTestDetail customDet = det; |
|
1165 QCOMPARE(det.definitionName(), QString("CustomTestDetail")); |
|
1166 QCOMPARE(customDet.testLabel().isEmpty(), false); |
|
1167 } |
|
1168 |
|
1169 // third, definition parameter foreach, with cast. |
|
1170 foreach (const QContactDetail& det, c.details("CustomTestDetail")) { |
|
1171 QCOMPARE(static_cast<CustomTestDetail>(det).definitionName(), QString("CustomTestDetail")); |
|
1172 QCOMPARE(static_cast<CustomTestDetail>(det).testLabel().isEmpty(), false); |
|
1173 } |
|
1174 |
|
1175 // fourth, parametrized foreach. |
|
1176 foreach (const CustomTestDetail& det, c.details<CustomTestDetail>()) { |
|
1177 QCOMPARE(det.definitionName(), QString("CustomTestDetail")); |
|
1178 } |
982 } |
1179 } |
983 |
1180 |
984 |
1181 |
985 QTEST_MAIN(tst_QContactDetails) |
1182 QTEST_MAIN(tst_QContactDetails) |
986 #include "tst_qcontactdetails.moc" |
1183 #include "tst_qcontactdetails.moc" |