1 // xestiacalendar_icaltaskload.h - Xestia Calendar iCalendar Task Component Unit Tests
3 // (c) 2016-2017 Xestia Software Development.
5 // This file is part of Xestia Calendar.
7 // Xestia Calendar is free software: you can redistribute it and/or modify
8 // it under the terms of the GNU General Public License as published by the
9 // Free Software Foundation, version 3 of the license.
11 // Xestia Calendar is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 // GNU General Public License for more details.
16 // You should have received a copy of the GNU General Public License along
17 // with Xestia Calendar. If not, see <http://www.gnu.org/licenses/>
19 #include "CalendarTask.h"
20 #include <gtest/gtest.h>
22 class iCalendarTaskLoadTests : public ::testing::Test
29 virtual void TearDown()
34 TEST_F(iCalendarTaskLoadTests, DISABLED_BasicTests){
36 CalendarTaskObject testTask;
38 ASSERT_EQ(CALENDAROBJECTLOAD_MISSING, testTask.LoadFile("iCalendarTask-Missing.vcf"));
39 ASSERT_EQ(CALENDAROBJECTLOAD_CANNOTOPEN, testTask.LoadFile("iCalendarTask-InvalidPermissions.vcf"));
40 ASSERT_EQ(CALENDAROBJECTLOAD_OK, testTask.LoadFile("iCalendarTask-Load1.vcf"));
44 TEST_F(iCalendarTaskLoadTests, ObjectDataTests){
46 CalendarTaskObject testTask;
47 ASSERT_EQ(CALENDAROBJECTLOAD_OK, testTask.LoadFile("iCalendarTask-Load2.vcf"));
48 ASSERT_EQ(CALENDAROBJECTVALID_OK, testTask.ValidBaseObject());
52 ASSERT_EQ("20160131T104500Z", testTask.dateTimeStampData);
53 ASSERT_EQ("OTHER=PARAM", testTask.dateTimeStampTokens);
57 ASSERT_EQ("b3a16392-ad86-4061-be53-c215af2306e1", testTask.uniqueID);
58 ASSERT_EQ("UNIQUEPARAM=CERTAINLY;OKAY=MAYBENOT", testTask.uniqueIDTokens);
62 ASSERT_EQ("PUBLIC", testTask.classData);
63 ASSERT_EQ("CHOCOLATE=NONE", testTask.classDataTokens);
65 // Tests for COMPLETED.
67 ASSERT_EQ("20160131T110100Z", testTask.completedData);
68 ASSERT_EQ("LYING=NEVER", testTask.completedDataTokens);
72 ASSERT_EQ("20160131T080000Z", testTask.dateTimeCreatedData);
73 ASSERT_EQ("CARAMEL=PLEASE", testTask.dateTimeCreatedTokens);
75 // Tests for DESCRIPTION.
77 std::string descriptionData;
78 std::string descriptionAltRep;
79 std::string descriptionLanguage;
80 std::string descriptionTokens;
82 if (testTask.descriptionList.begin() != testTask.descriptionList.end()){
83 descriptionData = testTask.descriptionList[0];
86 if (testTask.descriptionListAltRep.begin() != testTask.descriptionListAltRep.end()){
87 descriptionAltRep = testTask.descriptionListAltRep[0];
90 if (testTask.descriptionListLanguage.begin() != testTask.descriptionListLanguage.end()){
91 descriptionLanguage = testTask.descriptionListLanguage[0];
94 if (testTask.descriptionListTokens.begin() != testTask.descriptionListTokens.end()){
95 descriptionTokens = testTask.descriptionListTokens[0];
98 ASSERT_EQ("This is a description of the todo.", descriptionData);
99 ASSERT_EQ("null:nodata", descriptionAltRep);
100 ASSERT_EQ("kw", descriptionLanguage);
101 ASSERT_EQ("EXAMPLE=TOKEN;MOREDATA=YES", descriptionTokens);
103 // Tests for DTSTART.
105 ASSERT_EQ("20160131T103000Z", testTask.dateTimeStartData);
106 ASSERT_EQ("DATE-TIME", testTask.dateTimeStartDataValue);
107 ASSERT_EQ("Europe/Truro", testTask.dateTimeStartDataTimeZoneID);
108 ASSERT_EQ("PARAMONE=YES;PARAMTWO=NO", testTask.dateTimeStartDataTokens);
112 ASSERT_EQ("20.0;20.0", testTask.geographicData);
113 ASSERT_EQ("EXAMPLE=MOOP", testTask.geographicTokens);
115 // Tests for LAST-MODIFIED.
117 ASSERT_EQ("20160131T114200Z", testTask.lastModifiedData);
118 ASSERT_EQ("FUTURE=EVEN", testTask.lastModifiedTokens);
120 // Tests for LOCATION.
122 ASSERT_EQ("The Crystal Ceiling, Truro", testTask.locationData);
123 ASSERT_EQ("null:nodata", testTask.locationDataAltRep);
124 ASSERT_EQ("kw", testTask.locationDataLanguage);
125 ASSERT_EQ("EXACT=YES", testTask.locationDataTokens);
127 // Tests for ORGANIZER.
129 ASSERT_EQ("mailto:organiser@example.com", testTask.organiserData);
130 ASSERT_EQ("ExampleOrganiser", testTask.organiserDataCommonName);
131 ASSERT_EQ("null:nodata", testTask.organiserDataDirectoryEntry);
132 ASSERT_EQ("mailto:organiser.noreply@example.com", testTask.organiserDataSentByParam);
133 ASSERT_EQ("kw", testTask.organiserDataLanguage);
134 ASSERT_EQ("HAPPY=WEEKS", testTask.organiserDataTokens);
136 // Tests for PERCENT-COMPLETE.
138 ASSERT_EQ("42", testTask.percentCompleteData);
139 ASSERT_EQ("DEEP=THOUGHT", testTask.percentCompleteTokens);
141 // Tests for PRIORITY.
143 ASSERT_EQ(5, testTask.priorityData);
144 ASSERT_EQ("STATUS=DEFAULT", testTask.priorityTokens);
146 // Tests for RECURRENCE-ID.
148 ASSERT_EQ("20160131", testTask.recurranceIDData);
149 ASSERT_EQ("Europe/Truro", testTask.recurranceIDDataTimeZoneParam);
150 ASSERT_EQ("THISANDFUTURE", testTask.recurranceIDDataRangeParam);
151 ASSERT_EQ("DATE", testTask.recurranceIDDataValue);
152 ASSERT_EQ("EXAMPLE=DATA", testTask.recurranceIDDataTokens);
154 // Tests for SEQUENCE.
156 ASSERT_EQ(3, testTask.sequenceData);
157 ASSERT_EQ("TEST=YAY", testTask.sequenceTokens);
161 ASSERT_EQ("2.0;Success", testTask.statusData);
162 ASSERT_EQ("kw", testTask.statusLanguage);
163 ASSERT_EQ("FAVOURITE=BEANS;NOTLIKE=UNKNOWN", testTask.statusTokens);
165 // Tests for SUMMARY.
167 ASSERT_EQ("A summary of the todo.", testTask.summaryData);
168 ASSERT_EQ("null:nodata", testTask.summaryDataAltRep);
169 ASSERT_EQ("kw", testTask.summaryDataLanguage);
170 ASSERT_EQ("FAVOURITE=TOFU;NOTLIKE=NONE", testTask.summaryDataTokens);
174 ASSERT_EQ("http://www.example.com/", testTask.urlData);
175 ASSERT_EQ("EXTERNAL=YES", testTask.urlDataTokens);
179 ASSERT_EQ("FREQ=DAILY;COUNT=10", testTask.recurranceRuleData);
180 ASSERT_EQ("TEST=DATA", testTask.recurranceRuleDataTokens);
184 ASSERT_EQ("20160131T150000Z", testTask.dueData);
185 ASSERT_EQ("Europe/Truro", testTask.dueDataTimeZoneID);
186 ASSERT_EQ("DATE-TIME", testTask.dueDataValue);
187 ASSERT_EQ("TEST=YES", testTask.dueDataTokens);
189 // Tests for DURATION.
191 CalendarTaskObject testTask2;
192 ASSERT_EQ(CALENDAROBJECTLOAD_OK, testTask2.LoadFile("iCalendarTask-Load3.vcf"));
193 ASSERT_EQ(CALENDAROBJECTVALID_OK, testTask2.ValidBaseObject());
195 ASSERT_EQ("PT15M", testTask2.durationData);
196 ASSERT_EQ("TEST=YES", testTask2.durationDataTokens);
198 // Tests for ATTACH. First ATTACH property.
200 std::string attachData;
201 std::string attachDataFormatType;
202 std::string attachDataValue;
203 std::string attachDataEncoding;
204 std::string attachDataTokens;
206 if (testTask.attachList.begin() != testTask.attachList.end()){
208 attachData = testTask.attachList[0];
212 if (testTask.attachListFormatType.begin() != testTask.attachListFormatType.end()){
214 attachDataFormatType = testTask.attachListFormatType[0];
218 ASSERT_EQ("http://www.example.com/", attachData);
219 ASSERT_EQ("application/internet-shortcut", attachDataFormatType);
221 // Second ATTACH property.
224 attachDataFormatType.clear();
225 attachDataValue.clear();
226 attachDataEncoding.clear();
228 if (testTask.attachList.size() > 1){
230 attachData = testTask.attachList[1];
234 if (testTask.attachListFormatType.size() > 1){
236 attachDataFormatType = testTask.attachListFormatType[1];
240 ASSERT_EQ("http://www.example.com/page2.html", attachData);
241 ASSERT_EQ("application/internet-shortcut", attachDataFormatType);
243 // Third ATTACH property.
246 attachDataFormatType.clear();
247 attachDataValue.clear();
248 attachDataEncoding.clear();
249 attachDataTokens.clear();
251 if (testTask.attachList.size() > 2){
253 attachData = testTask.attachList[2];
257 if (testTask.attachListFormatType.size() > 2){
259 attachDataFormatType = testTask.attachListFormatType[2];
263 if (testTask.attachListValue.size() > 2){
265 attachDataValue = testTask.attachListValue[2];
269 if (testTask.attachListFormatType.size() > 2){
271 attachDataEncoding = testTask.attachListEncoding[2];
275 if (testTask.attachListTokens.size() > 2){
277 attachDataTokens = testTask.attachListTokens[2];
281 ASSERT_EQ("VGhpcyBpcyBhbiBleGFtcGxlIGZpbGU=", attachData);
282 ASSERT_EQ("text/plain", attachDataFormatType);
283 ASSERT_EQ("BASE64", attachDataEncoding);
284 ASSERT_EQ("BINARY", attachDataValue);
285 ASSERT_EQ("STUPID=EXAMPLE", attachDataTokens);
287 // Tests for ATTENDEE. First ATTENDEE property.
289 std::string attendeeDataMember;
290 std::string attendeeDataDelegatedFrom;
291 std::string attendeeDataDelegatedTo;
292 std::string attendeeDataRole;
293 std::string attendeeDataRSVP;
294 std::string attendeeDataDirectoryEntry;
295 std::string attendeeDataSentBy;
296 std::string attendeeDataCommonName;
297 std::string attendeeDataCalendarUserType;
298 std::string attendeeDataParticipationStatus;
299 std::string attendeeDataLanguage;
300 std::string attendeeDataTokens;
301 std::string attendeeData;
303 if (testTask.attendeeList.begin() != testTask.attendeeList.end()){
305 attendeeData = testTask.attendeeList[0];
309 ASSERT_EQ("Attendee One", attendeeData);
311 // Second ATTENDEE property.
313 attendeeData.clear();
315 if (testTask.attendeeList.size() > 1){
317 attendeeData = testTask.attendeeList[1];
321 if (testTask.attendeeList.size() > 1){
323 attendeeDataDelegatedFrom = testTask.attendeeListDelegatedFrom[1];
327 if (testTask.attendeeList.size() > 1){
329 attendeeDataDelegatedTo = testTask.attendeeListDelegatedTo[1];
333 if (testTask.attendeeList.size() > 1){
335 attendeeDataRole = testTask.attendeeListRole[1];
339 if (testTask.attendeeList.size() > 1){
341 attendeeDataRSVP = testTask.attendeeListRSVP[1];
345 ASSERT_EQ("Attendee Two", attendeeData);
346 ASSERT_EQ("mailto:delegated.from@example.com", attendeeDataDelegatedFrom);
347 ASSERT_EQ("mailto:delegated.to@example.com", attendeeDataDelegatedTo);
348 ASSERT_EQ("CHAIR", attendeeDataRole);
349 ASSERT_EQ("TRUE", attendeeDataRSVP);
351 // Third ATTENDEE property.
353 attendeeData.clear();
355 if (testTask.attendeeList.size() > 2){
357 attendeeData = testTask.attendeeList[2];
361 if (testTask.attendeeList.size() > 2){
363 attendeeDataDirectoryEntry = testTask.attendeeListDirectoryEntry[2];
367 if (testTask.attendeeList.size() > 2){
369 attendeeDataSentBy = testTask.attendeeListSentBy[2];
373 if (testTask.attendeeList.size() > 2){
375 attendeeDataCommonName = testTask.attendeeListCommonName[2];
379 if (testTask.attendeeList.size() > 2){
381 attendeeDataCalendarUserType = testTask.attendeeListCalendarUserType[2];
385 if (testTask.attendeeList.size() > 2){
387 attendeeDataParticipationStatus = testTask.attendeeListParticipationStatus[2];
391 if (testTask.attendeeList.size() > 2){
393 attendeeDataLanguage = testTask.attendeeListLanguage[2];
397 if (testTask.attendeeList.size() > 2){
399 attendeeDataTokens = testTask.attendeeListTokens[2];
403 ASSERT_EQ("Attendee Three", attendeeData);
404 ASSERT_EQ("null:nodata", attendeeDataDirectoryEntry);
405 ASSERT_EQ("mailto:sent.by@example.com", attendeeDataSentBy);
406 ASSERT_EQ("Attendee The Third", attendeeDataCommonName);
407 ASSERT_EQ("INDIVIDUAL", attendeeDataCalendarUserType);
408 ASSERT_EQ("ACCEPTED", attendeeDataParticipationStatus);
409 ASSERT_EQ("kw", attendeeDataLanguage);
410 ASSERT_EQ("EXAMPLE=DATA", attendeeDataTokens);
412 // Get the first CATEGORIES.
414 std::string categoryData;
416 if (testTask.categoriesList.begin() != testTask.categoriesList.end()){
418 categoryData = testTask.categoriesList[0];
422 ASSERT_EQ("CATEGORY ONE, CATEGORY TWO", categoryData);
424 categoryData.clear();
426 std::string categoryLanguage;
428 // Get the second CATEGORIES.
430 if (testTask.categoriesList.size() > 1){
432 categoryData = testTask.categoriesList[1];
436 if (testTask.categoriesList.size() > 1){
438 categoryLanguage = testTask.categoriesListLanguage[1];
442 ASSERT_EQ("CATEGORY THREE, CATEGORY FOUR", categoryData);
443 ASSERT_EQ("en", categoryLanguage);
445 categoryData.clear();
446 categoryLanguage.clear();
448 // Get the third CATEGORIES.
450 std::string categoryTokens;
452 if (testTask.categoriesList.size() > 2){
454 categoryData = testTask.categoriesList[2];
458 if (testTask.categoriesList.size() > 2){
460 categoryLanguage = testTask.categoriesListLanguage[2];
464 if (testTask.categoriesList.size() > 2){
466 categoryTokens = testTask.categoriesListTokens[2];
470 ASSERT_EQ("CATEGORY FIVE, CATEGORY SIX, CATEGORY SEVEN", categoryData);
471 ASSERT_EQ("en-GB", categoryLanguage);
472 ASSERT_EQ("SAMPLE=TOKEN", categoryTokens);
474 // Get the first COMMENT.
476 std::string commentData;
478 if (testTask.commentList.begin() != testTask.commentList.end()){
480 commentData = testTask.commentList[0];
484 ASSERT_EQ("This is the first comment.", commentData);
486 // Get the second COMMENT.
490 std::string commentDataAltRep;
491 std::string commentDataLanguage;
493 if (testTask.commentList.size() > 1){
495 commentData = testTask.commentList[1];
499 if (testTask.commentList.size() > 1){
501 commentDataAltRep = testTask.commentListAltRep[1];
505 if (testTask.commentList.size() > 1){
507 commentDataLanguage = testTask.commentListLanguage[1];
511 ASSERT_EQ("This is the second comment.", commentData);
512 ASSERT_EQ("null:nodata", commentDataAltRep);
513 ASSERT_EQ("en", commentDataLanguage);
515 // Get the third COMMENT.
519 std::string commentDataTokens;
521 if (testTask.commentList.size() > 2){
523 commentData = testTask.commentList[2];
527 if (testTask.commentList.size() > 2){
529 commentDataTokens = testTask.commentListTokens[2];
533 ASSERT_EQ("This is the third comment.", commentData);
534 ASSERT_EQ("ZEBRAS=YES", commentDataTokens);
536 // Get the first CONTACT.
538 std::string contactData;
540 if (testTask.contactList.begin() != testTask.contactList.end()){
542 contactData = testTask.contactList[0];
546 ASSERT_EQ("First Contact", contactData);
548 // Get the second CONTACT.
552 std::string contactDataAltRep;
553 std::string contactDataLanguage;
555 if (testTask.contactList.size() > 1){
557 contactData = testTask.contactList[1];
561 if (testTask.contactList.size() > 1){
563 contactDataAltRep = testTask.contactListAltRep[1];
567 if (testTask.contactList.size() > 1){
569 contactDataLanguage = testTask.contactListLanguage[1];
573 ASSERT_EQ("Second Contact", contactData);
574 ASSERT_EQ("null:nodata", contactDataAltRep);
575 ASSERT_EQ("en-GB", contactDataLanguage);
577 // Get the third CONTACT.
581 std::string contactDataTokens;
583 if (testTask.contactList.size() > 2){
585 contactData = testTask.contactList[2];
589 if (testTask.contactList.size() > 2){
591 contactDataTokens = testTask.contactListTokens[2];
595 ASSERT_EQ("Third Contact", contactData);
596 ASSERT_EQ("ZEBRAS=NO", contactDataTokens);
598 // Get the first EXDATE.
600 std::string excludeDate;
602 if (testTask.excludeDateData.begin() != testTask.excludeDateData.end()){
604 excludeDate = testTask.excludeDateData[0];
608 ASSERT_EQ("20160125T120000Z", excludeDate);
610 // Get the second EXDATE.
614 std::string excludeDataTimeZoneParam;
615 std::string excludeDataValue;
617 if (testTask.contactList.size() > 1){
619 excludeDate = testTask.excludeDateData[1];
623 if (testTask.contactList.size() > 1){
625 excludeDataTimeZoneParam = testTask.excludeDateDataTimeZoneParam[1];
629 if (testTask.contactList.size() > 1){
631 excludeDataValue = testTask.excludeDateDataValue[1];
635 ASSERT_EQ("20160125T130000Z", excludeDate);
636 ASSERT_EQ("DATE-TIME", excludeDataValue);
637 ASSERT_EQ("Europe/Truro", excludeDataTimeZoneParam);
639 // Get the third EXDATE.
643 std::string excludeDataTokens;
645 if (testTask.contactList.size() > 2){
647 excludeDate = testTask.excludeDateData[2];
651 if (testTask.contactList.size() > 2){
653 excludeDataTokens = testTask.excludeDateDataTokens[2];
657 ASSERT_EQ("20160125T133000Z", excludeDate);
658 ASSERT_EQ("ZOOP=ZIPPO", excludeDataTokens);
660 // Get the first REQUEST-STATUS.
662 std::string requestStatus;
664 if (testTask.requestStatusData.begin() != testTask.requestStatusData.end()){
666 requestStatus = testTask.requestStatusData[0];
670 ASSERT_EQ("2.0;Success", requestStatus);
672 // Get the second REQUEST-STATUS.
674 requestStatus.clear();
676 std::string requestLanguage;
678 if (testTask.contactList.size() > 1){
680 requestStatus = testTask.requestStatusData[1];
684 if (testTask.contactList.size() > 1){
686 requestLanguage = testTask.requestStatusLanguage[1];
690 ASSERT_EQ("3.42;Really big irrecoverable error caused by the user", requestStatus);
691 ASSERT_EQ("en", requestLanguage);
693 // Get the third REQUEST-STATUS.
695 requestStatus.clear();
697 std::string requestTokens;
699 if (testTask.contactList.size() > 2){
701 requestStatus = testTask.requestStatusData[2];
705 if (testTask.contactList.size() > 2){
707 requestTokens = testTask.requestStatusTokens[2];
711 ASSERT_EQ("3.7;Invalid calendar user", requestStatus);
712 ASSERT_EQ("USER=MISSING", requestTokens);
714 // Get the first RELATED-TO.
716 std::string relatedTo;
718 if (testTask.relatedToData.begin() != testTask.relatedToData.end()){
720 relatedTo = testTask.relatedToData[0];
724 ASSERT_EQ("person.1@example.com", relatedTo);
726 // Get the second RELATED-TO.
730 std::string relatedToType;
732 if (testTask.relatedToData.size() > 1){
734 relatedTo = testTask.relatedToData[1];
738 if (testTask.relatedToData.size() > 1){
740 relatedToType = testTask.relatedToDataRelationType[1];
744 ASSERT_EQ("person.2@example.com", relatedTo);
745 ASSERT_EQ("PARENT", relatedToType);
747 // Get the third RELATED-TO.
751 std::string relatedToTokens;
753 if (testTask.relatedToData.size() > 2){
755 relatedTo = testTask.relatedToData[2];
759 if (testTask.relatedToData.size() > 2){
761 relatedToTokens = testTask.relatedToDataTokens[2];
765 ASSERT_EQ("person.3@example.com", relatedTo);
766 ASSERT_EQ("SCHOOL=MEETING", relatedToTokens);
768 // Get the first RESOURCES.
770 std::string resources;
772 if (testTask.resourcesData.begin() != testTask.resourcesData.end()){
774 resources = testTask.resourcesData[0];
778 ASSERT_EQ("DMAC RECEIVER", resources);
780 // Get the second RESOURCES.
784 std::string resourcesLanguage;
786 if (testTask.resourcesData.size() > 1){
788 resources = testTask.resourcesData[1];
792 if (testTask.resourcesData.size() > 1){
794 resourcesLanguage = testTask.resourcesDataLanguage[1];
798 ASSERT_EQ("PAL-I TELEVISION SET", resources);
799 ASSERT_EQ("en", resourcesLanguage);
801 // Get the third RESOURCES.
805 std::string resourcesAltRep;
806 std::string resourcesTokens;
808 if (testTask.resourcesData.size() > 2){
810 resources = testTask.resourcesData[2];
814 if (testTask.resourcesData.size() > 2){
816 resourcesAltRep = testTask.resourcesDataAltRep[2];
820 if (testTask.resourcesData.size() > 2){
822 resourcesTokens = testTask.resourcesDataTokens[2];
826 ASSERT_EQ("PAL/SECAM VCR", resources);
827 ASSERT_EQ("null:nodata", resourcesAltRep);
828 ASSERT_EQ("STATUS=BROKEN", resourcesTokens);
830 // Get the first RDATE.
832 std::string recurrenceDate;
834 if (testTask.recurranceDateData.begin() != testTask.recurranceDateData.end()){
836 recurrenceDate = testTask.recurranceDateData[0];
840 ASSERT_EQ("20160120", recurrenceDate);
842 // Get the second RDATE.
844 recurrenceDate.clear();
846 std::string recurrenceDateTimeZoneParam;
847 std::string recurrenceDateValue;
849 if (testTask.recurranceDateData.size() > 1){
851 recurrenceDate = testTask.recurranceDateData[1];
855 if (testTask.recurranceDateData.size() > 1){
857 recurrenceDateTimeZoneParam = testTask.recurranceDateDataTimeZoneParam[1];
861 if (testTask.recurranceDateData.size() > 1){
863 recurrenceDateValue = testTask.recurranceDateDataValue[1];
867 ASSERT_EQ("20160121", recurrenceDate);
868 ASSERT_EQ("DATE", recurrenceDateValue);
869 ASSERT_EQ("Europe/Truro", recurrenceDateTimeZoneParam);
871 // Get the third RDATE.
873 recurrenceDate.clear();
875 std::string recurrenceTokens;
877 if (testTask.recurranceDateData.size() > 2){
879 recurrenceDate = testTask.recurranceDateData[2];
883 if (testTask.recurranceDateData.size() > 2){
885 recurrenceTokens = testTask.recurranceDateDataTokens[2];
889 ASSERT_EQ("20160520", recurrenceDate);
890 ASSERT_EQ("ZILCH=DATA", recurrenceTokens);
892 // Get the first X-EXAMPLE1 token.
894 std::string xTokenName;
895 std::string xTokenData;
897 if (testTask.xTokensData.size() != 0 ){
899 xTokenData = testTask.xTokensData[0];
903 if (testTask.xTokensData.size() != 0){
905 xTokenName = testTask.xTokensDataTokens[0];
909 ASSERT_EQ("Moo", xTokenData);
910 ASSERT_EQ("X-EXAMPLE1", xTokenName);
912 // Get the second X-EXAMPLE1 token.
917 if (testTask.xTokensData.size() > 1){
919 xTokenData = testTask.xTokensData[1];
923 if (testTask.xTokensData.size() > 1){
925 xTokenName = testTask.xTokensDataTokens[1];
929 ASSERT_EQ("Meep", xTokenData);
930 ASSERT_EQ("X-EXAMPLE1;ANIMAL=NOPE", xTokenName);
932 // Get the third X-EXAMPLE1 token.
937 if (testTask.xTokensData.size() > 2){
939 xTokenData = testTask.xTokensData[2];
943 if (testTask.xTokensData.size() > 2){
945 xTokenName = testTask.xTokensDataTokens[2];
949 ASSERT_EQ("Meow", xTokenData);
950 ASSERT_EQ("X-EXAMPLE1;ANIMAL=CAT", xTokenName);
952 // Get the first X-EXAMPLE2 token.
957 if (testTask.xTokensData.size() > 3){
959 xTokenData = testTask.xTokensData[3];
963 if (testTask.xTokensData.size() > 3){
965 xTokenName = testTask.xTokensDataTokens[3];
969 ASSERT_EQ("Dish", xTokenData);
970 ASSERT_EQ("X-EXAMPLE2", xTokenName);
972 // Get the second X-EXAMPLE2 token.
977 if (testTask.xTokensData.size() > 4){
979 xTokenData = testTask.xTokensData[4];
983 if (testTask.xTokensData.size() > 4){
985 xTokenName = testTask.xTokensDataTokens[4];
989 ASSERT_EQ("Fork", xTokenData);
990 ASSERT_EQ("X-EXAMPLE2;OBJECT=KITCHEN", xTokenName);
992 // Get the third X-EXAMPLE2 token.
997 if (testTask.xTokensData.size() > 5){
999 xTokenData = testTask.xTokensData[5];
1003 if (testTask.xTokensData.size() > 5){
1005 xTokenName = testTask.xTokensDataTokens[5];
1009 ASSERT_EQ("Table", xTokenData);
1010 ASSERT_EQ("X-EXAMPLE2;OBJECT=LIVINGROOM", xTokenName);
1012 // Get the X-STATUS token.
1017 if (testTask.xTokensData.size() > 6){
1019 xTokenData = testTask.xTokensData[6];
1023 if (testTask.xTokensData.size() > 6){
1025 xTokenName = testTask.xTokensDataTokens[6];
1029 ASSERT_EQ("Idle", xTokenData);
1030 ASSERT_EQ("X-STATUS;HOLIDAY=YES", xTokenName);
1032 // Get the X-TRANSPORT token.
1037 if (testTask.xTokensData.size() > 7){
1039 xTokenData = testTask.xTokensData[7];
1043 if (testTask.xTokensData.size() > 7){
1045 xTokenName = testTask.xTokensDataTokens[7];
1049 ASSERT_EQ("Private Hire", xTokenData);
1050 ASSERT_EQ("X-TRANSPORT;PUBLIC=NO", xTokenName);
1052 // Get the X-PHANTOM-STATUS token.
1057 if (testTask.xTokensData.size() > 8){
1059 xTokenData = testTask.xTokensData[8];
1063 if (testTask.xTokensData.size() > 8){
1065 xTokenName = testTask.xTokensDataTokens[8];
1069 ASSERT_EQ("None", xTokenData);
1070 ASSERT_EQ("X-PHANTOM-STATUS;HELP=NONE", xTokenName);
1074 TEST_F(iCalendarTaskLoadTests, AlarmTests){
1076 CalendarTaskObject testTask;
1077 ASSERT_EQ(CALENDAROBJECTLOAD_OK, testTask.LoadFile("iCalendarTask-Load2.vcf"));
1078 ASSERT_EQ(CALENDAROBJECTVALID_OK, testTask.ValidBaseObject());
1080 // Tests for the first VALARM property.
1082 std::string actionData;
1083 std::string actionDataTokens;
1085 std::string triggerData;
1086 std::string triggerRelated;
1087 std::string triggerValue;
1088 std::string triggerTokens;
1090 std::string durationData;
1091 std::string durationTokens;
1093 std::string repeatData;
1094 std::string repeatTokens;
1096 std::string xTokenData;
1097 std::string xTokenName;
1099 if (testTask.calendarAlarmData.size() > 0){
1101 actionData = testTask.calendarAlarmData[0].alarmAction;
1102 actionDataTokens = testTask.calendarAlarmData[0].alarmActionTokens;
1104 triggerData = testTask.calendarAlarmData[0].triggerData;
1105 triggerRelated = testTask.calendarAlarmData[0].triggerRelated;
1106 triggerValue = testTask.calendarAlarmData[0].triggerValue;
1107 triggerTokens = testTask.calendarAlarmData[0].triggerTokens;
1109 durationData = testTask.calendarAlarmData[0].durationData;
1110 durationTokens = testTask.calendarAlarmData[0].durationTokens;
1112 repeatData = testTask.calendarAlarmData[0].repeatData;
1113 repeatTokens = testTask.calendarAlarmData[0].repeatTokens;
1117 ASSERT_EQ("AUDIO", actionData);
1118 ASSERT_EQ("FUNKY=SOUNDS", actionDataTokens);
1120 ASSERT_EQ("20160220T160000Z", triggerData);
1121 ASSERT_EQ("END", triggerRelated);
1122 ASSERT_EQ("DATE-TIME", triggerValue);
1123 ASSERT_EQ("PUSH=BUTTON", triggerTokens);
1125 ASSERT_EQ("PT5H", durationData);
1126 ASSERT_EQ("FLYING=NO", durationTokens);
1128 ASSERT_EQ("PT5M", repeatData);
1129 ASSERT_EQ("NEVER=SLEEP", repeatTokens);
1131 // Tests for ATTACH. First ATTACH property.
1133 std::string attachData;
1134 std::string attachDataFormatType;
1135 std::string attachDataValue;
1136 std::string attachDataEncoding;
1137 std::string attachDataTokens;
1139 if (testTask.calendarAlarmData[0].attachList.begin() != testTask.calendarAlarmData[0].attachList.end()){
1141 attachData = testTask.attachList[0];
1145 if (testTask.calendarAlarmData[0].attachListFormatType.begin() != testTask.calendarAlarmData[0].attachListFormatType.end()){
1147 attachDataFormatType = testTask.attachListFormatType[0];
1151 ASSERT_EQ("http://www.example.com/", attachData);
1152 ASSERT_EQ("application/internet-shortcut", attachDataFormatType);
1154 // Second ATTACH property.
1157 attachDataFormatType.clear();
1158 attachDataValue.clear();
1159 attachDataEncoding.clear();
1161 if (testTask.calendarAlarmData[0].attachList.size() > 1){
1163 attachData = testTask.calendarAlarmData[0].attachList[1];
1167 if (testTask.calendarAlarmData[0].attachListFormatType.size() > 1){
1169 attachDataFormatType = testTask.calendarAlarmData[0].attachListFormatType[1];
1173 ASSERT_EQ("http://www.example.com/page2.html", attachData);
1174 ASSERT_EQ("application/internet-shortcut", attachDataFormatType);
1176 // Third ATTACH property.
1179 attachDataFormatType.clear();
1180 attachDataValue.clear();
1181 attachDataEncoding.clear();
1182 attachDataTokens.clear();
1184 if (testTask.calendarAlarmData[0].attachList.size() > 2){
1186 attachData = testTask.calendarAlarmData[0].attachList[2];
1190 if (testTask.calendarAlarmData[0].attachListFormatType.size() > 2){
1192 attachDataFormatType = testTask.calendarAlarmData[0].attachListFormatType[2];
1196 if (testTask.calendarAlarmData[0].attachListValue.size() > 2){
1198 attachDataValue = testTask.calendarAlarmData[0].attachListValue[2];
1202 if (testTask.calendarAlarmData[0].attachListFormatType.size() > 2){
1204 attachDataEncoding = testTask.calendarAlarmData[0].attachListEncoding[2];
1208 if (testTask.calendarAlarmData[0].attachListTokens.size() > 2){
1210 attachDataTokens = testTask.calendarAlarmData[0].attachListTokens[2];
1214 ASSERT_EQ("VGhpcyBpcyBhbiBleGFtcGxlIGZpbGU=", attachData);
1215 ASSERT_EQ("text/plain", attachDataFormatType);
1216 ASSERT_EQ("BASE64", attachDataEncoding);
1217 ASSERT_EQ("BINARY", attachDataValue);
1218 ASSERT_EQ("STUPID=EXAMPLE", attachDataTokens);
1220 // Test the first X-Token.
1222 if (testTask.calendarAlarmData[0].xTokensData.size() > 0){
1224 xTokenData = testTask.calendarAlarmData[0].xTokensData[0];
1225 xTokenName = testTask.calendarAlarmData[0].xTokensDataTokens[0];
1229 ASSERT_EQ("Example Data 1", xTokenData);
1230 ASSERT_EQ("X-EXAMPLE1;YAY=YES", xTokenName);
1232 // Test the second X-Token.
1237 if (testTask.calendarAlarmData[0].xTokensData.size() > 1){
1239 xTokenData = testTask.calendarAlarmData[0].xTokensData[1];
1240 xTokenName = testTask.calendarAlarmData[0].xTokensDataTokens[1];
1244 ASSERT_EQ("Example Data 2", xTokenData);
1245 ASSERT_EQ("X-EXAMPLE2;NOPE=YEP", xTokenName);
1247 // Test the third X-Token.
1252 if (testTask.calendarAlarmData[0].xTokensData.size() > 2){
1254 xTokenData = testTask.calendarAlarmData[0].xTokensData[2];
1255 xTokenName = testTask.calendarAlarmData[0].xTokensDataTokens[2];
1259 ASSERT_EQ("Example Data 3", xTokenData);
1260 ASSERT_EQ("X-EXAMPLE3;WORLD=NO", xTokenName);
1262 // Tests for the second VALARM property.
1265 actionDataTokens.clear();
1267 triggerData.clear();
1268 triggerRelated.clear();
1269 triggerValue.clear();
1270 triggerTokens.clear();
1272 durationData.clear();
1273 durationTokens.clear();
1276 repeatTokens.clear();
1281 string descriptionData;
1282 string descriptionAltRep;
1283 string descriptionLanguage;
1284 string descriptionTokens;
1286 if (testTask.calendarAlarmData.size() > 1){
1288 actionData = testTask.calendarAlarmData[1].alarmAction;
1289 actionDataTokens = testTask.calendarAlarmData[1].alarmActionTokens;
1291 triggerData = testTask.calendarAlarmData[1].triggerData;
1292 triggerRelated = testTask.calendarAlarmData[1].triggerRelated;
1293 triggerValue = testTask.calendarAlarmData[1].triggerValue;
1294 triggerTokens = testTask.calendarAlarmData[1].triggerTokens;
1296 durationData = testTask.calendarAlarmData[1].durationData;
1297 durationTokens = testTask.calendarAlarmData[1].durationTokens;
1299 repeatData = testTask.calendarAlarmData[1].repeatData;
1300 repeatTokens = testTask.calendarAlarmData[1].repeatTokens;
1302 descriptionData = testTask.calendarAlarmData[1].descriptionData;
1303 descriptionAltRep = testTask.calendarAlarmData[1].descriptionAltRep;
1304 descriptionLanguage = testTask.calendarAlarmData[1].descriptionLanguage;
1305 descriptionTokens = testTask.calendarAlarmData[1].descriptionTokens;
1309 ASSERT_EQ("DISPLAY", actionData);
1310 ASSERT_EQ("FLASHING=LIGHTS", actionDataTokens);
1312 ASSERT_EQ("20160230T110000Z", triggerData);
1313 ASSERT_EQ("END", triggerRelated);
1314 ASSERT_EQ("DATE-TIME", triggerValue);
1315 ASSERT_EQ("PUSH=BUTTON", triggerTokens);
1317 ASSERT_EQ("PT7H", durationData);
1318 ASSERT_EQ("FLYING=YES", durationTokens);
1320 ASSERT_EQ("PT3M", repeatData);
1321 ASSERT_EQ("SLEEP=ALWAYS", repeatTokens);
1323 ASSERT_EQ("This is the second alarm.", descriptionData);
1324 ASSERT_EQ("null:nodata", descriptionAltRep);
1325 ASSERT_EQ("kw", descriptionLanguage);
1326 ASSERT_EQ("TERRIBLE=TOKEN", descriptionTokens);
1328 // Test the first X-Token.
1330 if (testTask.calendarAlarmData[1].xTokensData.size() > 0){
1332 xTokenData = testTask.calendarAlarmData[1].xTokensData[0];
1333 xTokenName = testTask.calendarAlarmData[1].xTokensDataTokens[0];
1337 ASSERT_EQ("Example Data 1", xTokenData);
1338 ASSERT_EQ("X-EXAMPLE1;YAY=YES", xTokenName);
1340 // Test the second X-Token.
1345 if (testTask.calendarAlarmData[1].xTokensData.size() > 1){
1347 xTokenData = testTask.calendarAlarmData[1].xTokensData[1];
1348 xTokenName = testTask.calendarAlarmData[1].xTokensDataTokens[1];
1352 ASSERT_EQ("Example Data 2", xTokenData);
1353 ASSERT_EQ("X-EXAMPLE2;NOPE=YEP", xTokenName);
1355 // Test the third X-Token.
1360 if (testTask.calendarAlarmData[1].xTokensData.size() > 2){
1362 xTokenData = testTask.calendarAlarmData[1].xTokensData[2];
1363 xTokenName = testTask.calendarAlarmData[1].xTokensDataTokens[2];
1367 ASSERT_EQ("Example Data 3", xTokenData);
1368 ASSERT_EQ("X-EXAMPLE3;WORLD=NO", xTokenName);
1370 // Tests for the third VALARM property.
1373 actionDataTokens.clear();
1375 triggerData.clear();
1376 triggerRelated.clear();
1377 triggerValue.clear();
1378 triggerTokens.clear();
1380 durationData.clear();
1381 durationTokens.clear();
1384 repeatTokens.clear();
1389 descriptionData.clear();
1390 descriptionAltRep.clear();
1391 descriptionLanguage.clear();
1392 descriptionTokens.clear();
1395 string summaryAltRep;
1396 string summaryLanguage;
1397 string summaryTokens;
1399 string attendeeDataMember;
1400 string attendeeDataDelegatedFrom;
1401 string attendeeDataDelegatedTo;
1402 string attendeeDataRole;
1403 string attendeeDataRSVP;
1404 string attendeeDataDirectoryEntry;
1405 string attendeeDataSentBy;
1406 string attendeeDataCommonName;
1407 string attendeeDataCalendarUserType;
1408 string attendeeDataParticipationStatus;
1409 string attendeeDataLanguage;
1410 string attendeeDataTokens;
1411 string attendeeData;
1414 attachDataFormatType.clear();
1415 attachDataValue.clear();
1416 attachDataEncoding.clear();
1417 attachDataTokens.clear();
1419 if (testTask.calendarAlarmData.size() > 2){
1421 actionData = testTask.calendarAlarmData[2].alarmAction;
1422 actionDataTokens = testTask.calendarAlarmData[2].alarmActionTokens;
1424 triggerData = testTask.calendarAlarmData[2].triggerData;
1425 triggerRelated = testTask.calendarAlarmData[2].triggerRelated;
1426 triggerValue = testTask.calendarAlarmData[2].triggerValue;
1427 triggerTokens = testTask.calendarAlarmData[2].triggerTokens;
1429 durationData = testTask.calendarAlarmData[2].durationData;
1430 durationTokens = testTask.calendarAlarmData[2].durationTokens;
1432 repeatData = testTask.calendarAlarmData[2].repeatData;
1433 repeatTokens = testTask.calendarAlarmData[2].repeatTokens;
1435 descriptionData = testTask.calendarAlarmData[2].descriptionData;
1436 descriptionAltRep = testTask.calendarAlarmData[2].descriptionAltRep;
1437 descriptionLanguage = testTask.calendarAlarmData[2].descriptionLanguage;
1438 descriptionTokens = testTask.calendarAlarmData[2].descriptionTokens;
1440 summaryData = testTask.calendarAlarmData[2].summaryData;
1441 summaryAltRep = testTask.calendarAlarmData[2].summaryAltRep;
1442 summaryLanguage = testTask.calendarAlarmData[2].summaryLanguage;
1443 summaryTokens = testTask.calendarAlarmData[2].summaryTokens;
1447 ASSERT_EQ("EMAIL", actionData);
1448 ASSERT_EQ("FLASHING=LIGHTS", actionDataTokens);
1450 ASSERT_EQ("20160230T120000Z", triggerData);
1451 ASSERT_EQ("END", triggerRelated);
1452 ASSERT_EQ("DATE-TIME", triggerValue);
1453 ASSERT_EQ("PUSH=BUTTON", triggerTokens);
1455 ASSERT_EQ("PT7H", durationData);
1456 ASSERT_EQ("FLYING=YES", durationTokens);
1458 ASSERT_EQ("PT3M", repeatData);
1459 ASSERT_EQ("SLEEP=ALWAYS", repeatTokens);
1461 ASSERT_EQ("This is the third alarm.", descriptionData);
1462 ASSERT_EQ("null:nodata", descriptionAltRep);
1463 ASSERT_EQ("kw", descriptionLanguage);
1464 ASSERT_EQ("TERRIBLE=TOKEN", descriptionTokens);
1466 ASSERT_EQ("This is the summary of the third alarm.", summaryData);
1467 ASSERT_EQ("null:nodata", summaryAltRep);
1468 ASSERT_EQ("en", summaryLanguage);
1469 ASSERT_EQ("MEEP=MOOP", summaryTokens);
1471 // Tests for ATTENDEE. First ATTENDEE property.
1473 if (testTask.calendarAlarmData[2].attendeeList.begin() != testTask.calendarAlarmData[2].attendeeList.end()){
1475 attendeeData = testTask.calendarAlarmData[2].attendeeList[0];
1479 ASSERT_EQ("Attendee One", attendeeData);
1481 // Second ATTENDEE property.
1483 attendeeData.clear();
1485 if (testTask.calendarAlarmData[2].attendeeList.size() > 1){
1487 attendeeData = testTask.calendarAlarmData[2].attendeeList[1];
1491 if (testTask.calendarAlarmData[2].attendeeList.size() > 1){
1493 attendeeDataDelegatedFrom = testTask.calendarAlarmData[2].attendeeListDelegatedFrom[1];
1497 if (testTask.calendarAlarmData[2].attendeeList.size() > 1){
1499 attendeeDataDelegatedTo = testTask.calendarAlarmData[2].attendeeListDelegatedTo[1];
1503 if (testTask.calendarAlarmData[2].attendeeList.size() > 1){
1505 attendeeDataRole = testTask.calendarAlarmData[2].attendeeListRole[1];
1509 if (testTask.calendarAlarmData[2].attendeeList.size() > 1){
1511 attendeeDataRSVP = testTask.calendarAlarmData[2].attendeeListRSVP[1];
1515 ASSERT_EQ("Attendee Two", attendeeData);
1516 ASSERT_EQ("mailto:delegated.from@example.com", attendeeDataDelegatedFrom);
1517 ASSERT_EQ("mailto:delegated.to@example.com", attendeeDataDelegatedTo);
1518 ASSERT_EQ("CHAIR", attendeeDataRole);
1519 ASSERT_EQ("TRUE", attendeeDataRSVP);
1521 // Third ATTENDEE property.
1523 attendeeData.clear();
1525 if (testTask.calendarAlarmData[2].attendeeList.size() > 2){
1527 attendeeData = testTask.calendarAlarmData[2].attendeeList[2];
1531 if (testTask.calendarAlarmData[2].attendeeList.size() > 2){
1533 attendeeDataDirectoryEntry = testTask.calendarAlarmData[2].attendeeListDirectoryEntry[2];
1537 if (testTask.calendarAlarmData[2].attendeeList.size() > 2){
1539 attendeeDataSentBy = testTask.calendarAlarmData[2].attendeeListSentBy[2];
1543 if (testTask.calendarAlarmData[2].attendeeList.size() > 2){
1545 attendeeDataCommonName = testTask.calendarAlarmData[2].attendeeListCommonName[2];
1549 if (testTask.calendarAlarmData[2].attendeeList.size() > 2){
1551 attendeeDataCalendarUserType = testTask.calendarAlarmData[2].attendeeListCalendarUserType[2];
1555 if (testTask.calendarAlarmData[2].attendeeList.size() > 2){
1557 attendeeDataParticipationStatus = testTask.calendarAlarmData[2].attendeeListParticipationStatus[2];
1561 if (testTask.calendarAlarmData[2].attendeeList.size() > 2){
1563 attendeeDataLanguage = testTask.calendarAlarmData[2].attendeeListLanguage[2];
1567 if (testTask.calendarAlarmData[2].attendeeList.size() > 2){
1569 attendeeDataTokens = testTask.calendarAlarmData[2].attendeeListTokens[2];
1573 ASSERT_EQ("Attendee Three", attendeeData);
1574 ASSERT_EQ("null:nodata", attendeeDataDirectoryEntry);
1575 ASSERT_EQ("mailto:sent.by@example.com", attendeeDataSentBy);
1576 ASSERT_EQ("Attendee The Third", attendeeDataCommonName);
1577 ASSERT_EQ("INDIVIDUAL", attendeeDataCalendarUserType);
1578 ASSERT_EQ("ACCEPTED", attendeeDataParticipationStatus);
1579 ASSERT_EQ("kw", attendeeDataLanguage);
1580 ASSERT_EQ("EXAMPLE=DATA", attendeeDataTokens);
1582 // Tests for ATTACH. First ATTACH property.
1584 if (testTask.calendarAlarmData[2].attachList.begin() != testTask.calendarAlarmData[2].attachList.end()){
1586 attachData = testTask.calendarAlarmData[2].attachList[0];
1590 if (testTask.calendarAlarmData[2].attachListFormatType.begin() != testTask.calendarAlarmData[2].attachListFormatType.end()){
1592 attachDataFormatType = testTask.calendarAlarmData[2].attachListFormatType[0];
1596 ASSERT_EQ("http://www.example.com/", attachData);
1597 ASSERT_EQ("application/internet-shortcut", attachDataFormatType);
1599 // Second ATTACH property.
1602 attachDataFormatType.clear();
1603 attachDataValue.clear();
1604 attachDataEncoding.clear();
1606 if (testTask.calendarAlarmData[2].attachList.size() > 1){
1608 attachData = testTask.calendarAlarmData[2].attachList[1];
1612 if (testTask.calendarAlarmData[2].attachListFormatType.size() > 1){
1614 attachDataFormatType = testTask.calendarAlarmData[2].attachListFormatType[1];
1618 ASSERT_EQ("http://www.example.com/page2.html", attachData);
1619 ASSERT_EQ("application/internet-shortcut", attachDataFormatType);
1621 // Third ATTACH property.
1624 attachDataFormatType.clear();
1625 attachDataValue.clear();
1626 attachDataEncoding.clear();
1627 attachDataTokens.clear();
1629 if (testTask.calendarAlarmData[2].attachList.size() > 2){
1631 attachData = testTask.calendarAlarmData[2].attachList[2];
1635 if (testTask.calendarAlarmData[2].attachListFormatType.size() > 2){
1637 attachDataFormatType = testTask.calendarAlarmData[2].attachListFormatType[2];
1641 if (testTask.calendarAlarmData[2].attachListValue.size() > 2){
1643 attachDataValue = testTask.calendarAlarmData[2].attachListValue[2];
1647 if (testTask.calendarAlarmData[2].attachListFormatType.size() > 2){
1649 attachDataEncoding = testTask.calendarAlarmData[2].attachListEncoding[2];
1653 if (testTask.calendarAlarmData[2].attachListTokens.size() > 2){
1655 attachDataTokens = testTask.calendarAlarmData[2].attachListTokens[2];
1659 ASSERT_EQ("VGhpcyBpcyBhbiBleGFtcGxlIGZpbGU=", attachData);
1660 ASSERT_EQ("text/plain", attachDataFormatType);
1661 ASSERT_EQ("BASE64", attachDataEncoding);
1662 ASSERT_EQ("BINARY", attachDataValue);
1663 ASSERT_EQ("STUPID=EXAMPLE", attachDataTokens);
1665 // Test the first X-Token.
1667 if (testTask.calendarAlarmData[2].xTokensData.size() > 0){
1669 xTokenData = testTask.calendarAlarmData[2].xTokensData[0];
1670 xTokenName = testTask.calendarAlarmData[2].xTokensDataTokens[0];
1674 ASSERT_EQ("Example Data 1", xTokenData);
1675 ASSERT_EQ("X-EXAMPLE1;YAY=YES", xTokenName);
1677 // Test the second X-Token.
1682 if (testTask.calendarAlarmData[2].xTokensData.size() > 1){
1684 xTokenData = testTask.calendarAlarmData[2].xTokensData[1];
1685 xTokenName = testTask.calendarAlarmData[2].xTokensDataTokens[1];
1689 ASSERT_EQ("Example Data 2", xTokenData);
1690 ASSERT_EQ("X-EXAMPLE2;NOPE=YEP", xTokenName);
1692 // Test the third X-Token.
1697 if (testTask.calendarAlarmData[2].xTokensData.size() > 2){
1699 xTokenData = testTask.calendarAlarmData[2].xTokensData[2];
1700 xTokenName = testTask.calendarAlarmData[2].xTokensDataTokens[2];
1704 ASSERT_EQ("Example Data 3", xTokenData);
1705 ASSERT_EQ("X-EXAMPLE3;WORLD=NO", xTokenName);