X-Git-Url: http://Server1/repobrowser/?a=blobdiff_plain;f=source%2Ftests%2Fxestiacalendar_icaltaskload.h;h=439ba4eb42d29f94532f479532644bd88a2f9999;hb=2e304ff435c80c07daaf0d3fbe8a9ab7d1ae70b1;hp=91284d9e8716dc53b54b5b31061f059434ef5497;hpb=4a618434a920b8ec2f6b5661291f9433ca36e47c;p=xestiacalendar%2F.git diff --git a/source/tests/xestiacalendar_icaltaskload.h b/source/tests/xestiacalendar_icaltaskload.h index 91284d9..439ba4e 100644 --- a/source/tests/xestiacalendar_icaltaskload.h +++ b/source/tests/xestiacalendar_icaltaskload.h @@ -1,14 +1,14 @@ -// xestiacalendar_icaleventload.h - Xestia Calendar iCalendar Task Component Unit Tests +// xestiacalendar_icaltaskload.h - Xestia Calendar iCalendar Task Component Unit Tests // -// (c) 2016 Xestia Software Development. +// (c) 2016-2017 Xestia Software Development. // // This file is part of Xestia Calendar. // -// Xestia Address Book is free software: you can redistribute it and/or modify +// Xestia Calendar is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by the // Free Software Foundation, version 3 of the license. // -// Xestia Address Book is distributed in the hope that it will be useful, +// Xestia Calendar is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. @@ -20,23 +20,1675 @@ TEST(iCalendarTask, BasicTests){ - CalendarTaskObject TestTask; + CalendarTaskObject testTask; - ASSERT_EQ(CALENDAROBJECTLOAD_MISSING, TestTask.LoadFile("iCalendarTask-Missing.vcf")); - ASSERT_EQ(CALENDAROBJECTLOAD_CANNOTOPEN, TestTask.LoadFile("iCalendarTask-InvalidPermissions.vcf")); - ASSERT_EQ(CALENDAROBJECTLOAD_OK, TestTask.LoadFile("iCalendarTask-Load1.vcf")); + ASSERT_EQ(CALENDAROBJECTLOAD_MISSING, testTask.LoadFile("iCalendarTask-Missing.vcf")); + ASSERT_EQ(CALENDAROBJECTLOAD_CANNOTOPEN, testTask.LoadFile("iCalendarTask-InvalidPermissions.vcf")); + ASSERT_EQ(CALENDAROBJECTLOAD_OK, testTask.LoadFile("iCalendarTask-Load1.vcf")); } TEST(iCalendarTask, ObjectDataTests){ - CalendarTaskObject TestTask; - ASSERT_EQ(CALENDAROBJECTLOAD_OK, TestTask.LoadFile("iCalendarTask-Load2.vcf")); - ASSERT_EQ(CALENDAROBJECTVALID_OK, TestTask.ValidBaseObject()); + CalendarTaskObject testTask; + ASSERT_EQ(CALENDAROBJECTLOAD_OK, testTask.LoadFile("iCalendarTask-Load2.vcf")); + ASSERT_EQ(CALENDAROBJECTVALID_OK, testTask.ValidBaseObject()); // Tests for DTSTAMP. - ASSERT_EQ("20160131T104500Z", TestTask.DateTimeStampData); - ASSERT_EQ("OTHER=PARAM", TestTask.DateTimeStampTokens); + ASSERT_EQ("20160131T104500Z", testTask.dateTimeStampData); + ASSERT_EQ("OTHER=PARAM", testTask.dateTimeStampTokens); -} \ No newline at end of file + // Tests for UID. + + ASSERT_EQ("b3a16392-ad86-4061-be53-c215af2306e1", testTask.uniqueID); + ASSERT_EQ("UNIQUEPARAM=CERTAINLY;OKAY=MAYBENOT", testTask.uniqueIDTokens); + + // Tests for CLASS. + + ASSERT_EQ("PUBLIC", testTask.classData); + ASSERT_EQ("CHOCOLATE=NONE", testTask.classDataTokens); + + // Tests for COMPLETED. + + ASSERT_EQ("20160131T110100Z", testTask.completedData); + ASSERT_EQ("LYING=NEVER", testTask.completedDataTokens); + + // Tests for CREATED. + + ASSERT_EQ("20160131T080000Z", testTask.dateTimeCreatedData); + ASSERT_EQ("CARAMEL=PLEASE", testTask.dateTimeCreatedTokens); + + // Tests for DESCRIPTION. + + std::string descriptionData; + std::string descriptionAltRep; + std::string descriptionLanguage; + std::string descriptionTokens; + + if (testTask.descriptionList.begin() != testTask.descriptionList.end()){ + descriptionData = testTask.descriptionList[0]; + } + + if (testTask.descriptionListAltRep.begin() != testTask.descriptionListAltRep.end()){ + descriptionAltRep = testTask.descriptionListAltRep[0]; + } + + if (testTask.descriptionListLanguage.begin() != testTask.descriptionListLanguage.end()){ + descriptionLanguage = testTask.descriptionListLanguage[0]; + } + + if (testTask.descriptionListTokens.begin() != testTask.descriptionListTokens.end()){ + descriptionTokens = testTask.descriptionListTokens[0]; + } + + ASSERT_EQ("This is a description of the todo.", descriptionData); + ASSERT_EQ("null:nodata", descriptionAltRep); + ASSERT_EQ("kw", descriptionLanguage); + ASSERT_EQ("EXAMPLE=TOKEN;MOREDATA=YES", descriptionTokens); + + // Tests for DTSTART. + + ASSERT_EQ("20160131T103000Z", testTask.dateTimeStartData); + ASSERT_EQ("DATE-TIME", testTask.dateTimeStartDataValue); + ASSERT_EQ("Europe/Truro", testTask.dateTimeStartDataTimeZoneID); + ASSERT_EQ("PARAMONE=YES;PARAMTWO=NO", testTask.dateTimeStartDataTokens); + + // Tests for GEO. + + ASSERT_EQ("20.0;20.0", testTask.geographicData); + ASSERT_EQ("EXAMPLE=MOOP", testTask.geographicTokens); + + // Tests for LAST-MODIFIED. + + ASSERT_EQ("20160131T114200Z", testTask.lastModifiedData); + ASSERT_EQ("FUTURE=EVEN", testTask.lastModifiedTokens); + + // Tests for LOCATION. + + ASSERT_EQ("The Crystal Ceiling, Truro", testTask.locationData); + ASSERT_EQ("null:nodata", testTask.locationDataAltRep); + ASSERT_EQ("kw", testTask.locationDataLanguage); + ASSERT_EQ("EXACT=YES", testTask.locationDataTokens); + + // Tests for ORGANIZER. + + ASSERT_EQ("mailto:organiser@example.com", testTask.organiserData); + ASSERT_EQ("ExampleOrganiser", testTask.organiserDataCommonName); + ASSERT_EQ("null:nodata", testTask.organiserDataDirectoryEntry); + ASSERT_EQ("mailto:organiser.noreply@example.com", testTask.organiserDataSentByParam); + ASSERT_EQ("kw", testTask.organiserDataLanguage); + ASSERT_EQ("HAPPY=WEEKS", testTask.organiserDataTokens); + + // Tests for PERCENT-COMPLETE. + + ASSERT_EQ("42", testTask.percentCompleteData); + ASSERT_EQ("DEEP=THOUGHT", testTask.percentCompleteTokens); + + // Tests for PRIORITY. + + ASSERT_EQ(5, testTask.priorityData); + ASSERT_EQ("STATUS=DEFAULT", testTask.priorityTokens); + + // Tests for RECURRENCE-ID. + + ASSERT_EQ("20160131", testTask.recurranceIDData); + ASSERT_EQ("Europe/Truro", testTask.recurranceIDDataTimeZoneParam); + ASSERT_EQ("THISANDFUTURE", testTask.recurranceIDDataRangeParam); + ASSERT_EQ("DATE", testTask.recurranceIDDataValue); + ASSERT_EQ("EXAMPLE=DATA", testTask.recurranceIDDataTokens); + + // Tests for SEQUENCE. + + ASSERT_EQ(3, testTask.sequenceData); + ASSERT_EQ("TEST=YAY", testTask.sequenceTokens); + + // Tests for STATUS. + + ASSERT_EQ("2.0;Success", testTask.statusData); + ASSERT_EQ("kw", testTask.statusLanguage); + ASSERT_EQ("FAVOURITE=BEANS;NOTLIKE=UNKNOWN", testTask.statusTokens); + + // Tests for SUMMARY. + + ASSERT_EQ("A summary of the todo.", testTask.summaryData); + ASSERT_EQ("null:nodata", testTask.summaryDataAltRep); + ASSERT_EQ("kw", testTask.summaryDataLanguage); + ASSERT_EQ("FAVOURITE=TOFU;NOTLIKE=NONE", testTask.summaryDataTokens); + + // Tests for URL. + + ASSERT_EQ("http://www.example.com/", testTask.urlData); + ASSERT_EQ("EXTERNAL=YES", testTask.urlDataTokens); + + // Tests for RRULE. + + ASSERT_EQ("FREQ=DAILY;COUNT=10", testTask.recurranceRuleData); + ASSERT_EQ("TEST=DATA", testTask.recurranceRuleDataTokens); + + // Tests for DUE. + + ASSERT_EQ("20160131T150000Z", testTask.dueData); + ASSERT_EQ("Europe/Truro", testTask.dueDataTimeZoneID); + ASSERT_EQ("DATE-TIME", testTask.dueDataValue); + ASSERT_EQ("TEST=YES", testTask.dueDataTokens); + + // Tests for DURATION. + + CalendarTaskObject testTask2; + ASSERT_EQ(CALENDAROBJECTLOAD_OK, testTask2.LoadFile("iCalendarTask-Load3.vcf")); + ASSERT_EQ(CALENDAROBJECTVALID_OK, testTask2.ValidBaseObject()); + + ASSERT_EQ("PT15M", testTask2.durationData); + ASSERT_EQ("TEST=YES", testTask2.durationDataTokens); + + // Tests for ATTACH. First ATTACH property. + + std::string attachData; + std::string attachDataFormatType; + std::string attachDataValue; + std::string attachDataEncoding; + std::string attachDataTokens; + + if (testTask.attachList.begin() != testTask.attachList.end()){ + + attachData = testTask.attachList[0]; + + } + + if (testTask.attachListFormatType.begin() != testTask.attachListFormatType.end()){ + + attachDataFormatType = testTask.attachListFormatType[0]; + + } + + ASSERT_EQ("http://www.example.com/", attachData); + ASSERT_EQ("application/internet-shortcut", attachDataFormatType); + + // Second ATTACH property. + + attachData.clear(); + attachDataFormatType.clear(); + attachDataValue.clear(); + attachDataEncoding.clear(); + + if (testTask.attachList.size() > 1){ + + attachData = testTask.attachList[1]; + + } + + if (testTask.attachListFormatType.size() > 1){ + + attachDataFormatType = testTask.attachListFormatType[1]; + + } + + ASSERT_EQ("http://www.example.com/page2.html", attachData); + ASSERT_EQ("application/internet-shortcut", attachDataFormatType); + + // Third ATTACH property. + + attachData.clear(); + attachDataFormatType.clear(); + attachDataValue.clear(); + attachDataEncoding.clear(); + attachDataTokens.clear(); + + if (testTask.attachList.size() > 2){ + + attachData = testTask.attachList[2]; + + } + + if (testTask.attachListFormatType.size() > 2){ + + attachDataFormatType = testTask.attachListFormatType[2]; + + } + + if (testTask.attachListValue.size() > 2){ + + attachDataValue = testTask.attachListValue[2]; + + } + + if (testTask.attachListFormatType.size() > 2){ + + attachDataEncoding = testTask.attachListEncoding[2]; + + } + + if (testTask.attachListTokens.size() > 2){ + + attachDataTokens = testTask.attachListTokens[2]; + + } + + ASSERT_EQ("VGhpcyBpcyBhbiBleGFtcGxlIGZpbGU=", attachData); + ASSERT_EQ("text/plain", attachDataFormatType); + ASSERT_EQ("BASE64", attachDataEncoding); + ASSERT_EQ("BINARY", attachDataValue); + ASSERT_EQ("STUPID=EXAMPLE", attachDataTokens); + + // Tests for ATTENDEE. First ATTENDEE property. + + std::string attendeeDataMember; + std::string attendeeDataDelegatedFrom; + std::string attendeeDataDelegatedTo; + std::string attendeeDataRole; + std::string attendeeDataRSVP; + std::string attendeeDataDirectoryEntry; + std::string attendeeDataSentBy; + std::string attendeeDataCommonName; + std::string attendeeDataCalendarUserType; + std::string attendeeDataParticipationStatus; + std::string attendeeDataLanguage; + std::string attendeeDataTokens; + std::string attendeeData; + + if (testTask.attendeeList.begin() != testTask.attendeeList.end()){ + + attendeeData = testTask.attendeeList[0]; + + } + + ASSERT_EQ("Attendee One", attendeeData); + + // Second ATTENDEE property. + + attendeeData.clear(); + + if (testTask.attendeeList.size() > 1){ + + attendeeData = testTask.attendeeList[1]; + + } + + if (testTask.attendeeList.size() > 1){ + + attendeeDataDelegatedFrom = testTask.attendeeListDelegatedFrom[1]; + + } + + if (testTask.attendeeList.size() > 1){ + + attendeeDataDelegatedTo = testTask.attendeeListDelegatedTo[1]; + + } + + if (testTask.attendeeList.size() > 1){ + + attendeeDataRole = testTask.attendeeListRole[1]; + + } + + if (testTask.attendeeList.size() > 1){ + + attendeeDataRSVP = testTask.attendeeListRSVP[1]; + + } + + ASSERT_EQ("Attendee Two", attendeeData); + ASSERT_EQ("mailto:delegated.from@example.com", attendeeDataDelegatedFrom); + ASSERT_EQ("mailto:delegated.to@example.com", attendeeDataDelegatedTo); + ASSERT_EQ("CHAIR", attendeeDataRole); + ASSERT_EQ("TRUE", attendeeDataRSVP); + + // Third ATTENDEE property. + + attendeeData.clear(); + + if (testTask.attendeeList.size() > 2){ + + attendeeData = testTask.attendeeList[2]; + + } + + if (testTask.attendeeList.size() > 2){ + + attendeeDataDirectoryEntry = testTask.attendeeListDirectoryEntry[2]; + + } + + if (testTask.attendeeList.size() > 2){ + + attendeeDataSentBy = testTask.attendeeListSentBy[2]; + + } + + if (testTask.attendeeList.size() > 2){ + + attendeeDataCommonName = testTask.attendeeListCommonName[2]; + + } + + if (testTask.attendeeList.size() > 2){ + + attendeeDataCalendarUserType = testTask.attendeeListCalendarUserType[2]; + + } + + if (testTask.attendeeList.size() > 2){ + + attendeeDataParticipationStatus = testTask.attendeeListParticipationStatus[2]; + + } + + if (testTask.attendeeList.size() > 2){ + + attendeeDataLanguage = testTask.attendeeListLanguage[2]; + + } + + if (testTask.attendeeList.size() > 2){ + + attendeeDataTokens = testTask.attendeeListTokens[2]; + + } + + ASSERT_EQ("Attendee Three", attendeeData); + ASSERT_EQ("null:nodata", attendeeDataDirectoryEntry); + ASSERT_EQ("mailto:sent.by@example.com", attendeeDataSentBy); + ASSERT_EQ("Attendee The Third", attendeeDataCommonName); + ASSERT_EQ("INDIVIDUAL", attendeeDataCalendarUserType); + ASSERT_EQ("ACCEPTED", attendeeDataParticipationStatus); + ASSERT_EQ("kw", attendeeDataLanguage); + ASSERT_EQ("EXAMPLE=DATA", attendeeDataTokens); + + // Get the first CATEGORIES. + + std::string categoryData; + + if (testTask.categoriesList.begin() != testTask.categoriesList.end()){ + + categoryData = testTask.categoriesList[0]; + + } + + ASSERT_EQ("CATEGORY ONE, CATEGORY TWO", categoryData); + + categoryData.clear(); + + std::string categoryLanguage; + + // Get the second CATEGORIES. + + if (testTask.categoriesList.size() > 1){ + + categoryData = testTask.categoriesList[1]; + + } + + if (testTask.categoriesList.size() > 1){ + + categoryLanguage = testTask.categoriesListLanguage[1]; + + } + + ASSERT_EQ("CATEGORY THREE, CATEGORY FOUR", categoryData); + ASSERT_EQ("en", categoryLanguage); + + categoryData.clear(); + categoryLanguage.clear(); + + // Get the third CATEGORIES. + + std::string categoryTokens; + + if (testTask.categoriesList.size() > 2){ + + categoryData = testTask.categoriesList[2]; + + } + + if (testTask.categoriesList.size() > 2){ + + categoryLanguage = testTask.categoriesListLanguage[2]; + + } + + if (testTask.categoriesList.size() > 2){ + + categoryTokens = testTask.categoriesListTokens[2]; + + } + + ASSERT_EQ("CATEGORY FIVE, CATEGORY SIX, CATEGORY SEVEN", categoryData); + ASSERT_EQ("en-GB", categoryLanguage); + ASSERT_EQ("SAMPLE=TOKEN", categoryTokens); + + // Get the first COMMENT. + + std::string commentData; + + if (testTask.commentList.begin() != testTask.commentList.end()){ + + commentData = testTask.commentList[0]; + + } + + ASSERT_EQ("This is the first comment.", commentData); + + // Get the second COMMENT. + + commentData.clear(); + + std::string commentDataAltRep; + std::string commentDataLanguage; + + if (testTask.commentList.size() > 1){ + + commentData = testTask.commentList[1]; + + } + + if (testTask.commentList.size() > 1){ + + commentDataAltRep = testTask.commentListAltRep[1]; + + } + + if (testTask.commentList.size() > 1){ + + commentDataLanguage = testTask.commentListLanguage[1]; + + } + + ASSERT_EQ("This is the second comment.", commentData); + ASSERT_EQ("null:nodata", commentDataAltRep); + ASSERT_EQ("en", commentDataLanguage); + + // Get the third COMMENT. + + commentData.clear(); + + std::string commentDataTokens; + + if (testTask.commentList.size() > 2){ + + commentData = testTask.commentList[2]; + + } + + if (testTask.commentList.size() > 2){ + + commentDataTokens = testTask.commentListTokens[2]; + + } + + ASSERT_EQ("This is the third comment.", commentData); + ASSERT_EQ("ZEBRAS=YES", commentDataTokens); + + // Get the first CONTACT. + + std::string contactData; + + if (testTask.contactList.begin() != testTask.contactList.end()){ + + contactData = testTask.contactList[0]; + + } + + ASSERT_EQ("First Contact", contactData); + + // Get the second CONTACT. + + contactData.clear(); + + std::string contactDataAltRep; + std::string contactDataLanguage; + + if (testTask.contactList.size() > 1){ + + contactData = testTask.contactList[1]; + + } + + if (testTask.contactList.size() > 1){ + + contactDataAltRep = testTask.contactListAltRep[1]; + + } + + if (testTask.contactList.size() > 1){ + + contactDataLanguage = testTask.contactListLanguage[1]; + + } + + ASSERT_EQ("Second Contact", contactData); + ASSERT_EQ("null:nodata", contactDataAltRep); + ASSERT_EQ("en-GB", contactDataLanguage); + + // Get the third CONTACT. + + contactData.clear(); + + std::string contactDataTokens; + + if (testTask.contactList.size() > 2){ + + contactData = testTask.contactList[2]; + + } + + if (testTask.contactList.size() > 2){ + + contactDataTokens = testTask.contactListTokens[2]; + + } + + ASSERT_EQ("Third Contact", contactData); + ASSERT_EQ("ZEBRAS=NO", contactDataTokens); + + // Get the first EXDATE. + + std::string excludeDate; + + if (testTask.excludeDateData.begin() != testTask.excludeDateData.end()){ + + excludeDate = testTask.excludeDateData[0]; + + } + + ASSERT_EQ("20160125T120000Z", excludeDate); + + // Get the second EXDATE. + + excludeDate.clear(); + + std::string excludeDataTimeZoneParam; + std::string excludeDataValue; + + if (testTask.contactList.size() > 1){ + + excludeDate = testTask.excludeDateData[1]; + + } + + if (testTask.contactList.size() > 1){ + + excludeDataTimeZoneParam = testTask.excludeDateDataTimeZoneParam[1]; + + } + + if (testTask.contactList.size() > 1){ + + excludeDataValue = testTask.excludeDateDataValue[1]; + + } + + ASSERT_EQ("20160125T130000Z", excludeDate); + ASSERT_EQ("DATE-TIME", excludeDataValue); + ASSERT_EQ("Europe/Truro", excludeDataTimeZoneParam); + + // Get the third EXDATE. + + excludeDate.clear(); + + std::string excludeDataTokens; + + if (testTask.contactList.size() > 2){ + + excludeDate = testTask.excludeDateData[2]; + + } + + if (testTask.contactList.size() > 2){ + + excludeDataTokens = testTask.excludeDateDataTokens[2]; + + } + + ASSERT_EQ("20160125T133000Z", excludeDate); + ASSERT_EQ("ZOOP=ZIPPO", excludeDataTokens); + + // Get the first REQUEST-STATUS. + + std::string requestStatus; + + if (testTask.requestStatusData.begin() != testTask.requestStatusData.end()){ + + requestStatus = testTask.requestStatusData[0]; + + } + + ASSERT_EQ("2.0;Success", requestStatus); + + // Get the second REQUEST-STATUS. + + requestStatus.clear(); + + std::string requestLanguage; + + if (testTask.contactList.size() > 1){ + + requestStatus = testTask.requestStatusData[1]; + + } + + if (testTask.contactList.size() > 1){ + + requestLanguage = testTask.requestStatusLanguage[1]; + + } + + ASSERT_EQ("3.42;Really big irrecoverable error caused by the user", requestStatus); + ASSERT_EQ("en", requestLanguage); + + // Get the third REQUEST-STATUS. + + requestStatus.clear(); + + std::string requestTokens; + + if (testTask.contactList.size() > 2){ + + requestStatus = testTask.requestStatusData[2]; + + } + + if (testTask.contactList.size() > 2){ + + requestTokens = testTask.requestStatusTokens[2]; + + } + + ASSERT_EQ("3.7;Invalid calendar user", requestStatus); + ASSERT_EQ("USER=MISSING", requestTokens); + + // Get the first RELATED-TO. + + std::string relatedTo; + + if (testTask.relatedToData.begin() != testTask.relatedToData.end()){ + + relatedTo = testTask.relatedToData[0]; + + } + + ASSERT_EQ("person.1@example.com", relatedTo); + + // Get the second RELATED-TO. + + relatedTo.clear(); + + std::string relatedToType; + + if (testTask.relatedToData.size() > 1){ + + relatedTo = testTask.relatedToData[1]; + + } + + if (testTask.relatedToData.size() > 1){ + + relatedToType = testTask.relatedToDataRelationType[1]; + + } + + ASSERT_EQ("person.2@example.com", relatedTo); + ASSERT_EQ("PARENT", relatedToType); + + // Get the third RELATED-TO. + + relatedTo.clear(); + + std::string relatedToTokens; + + if (testTask.relatedToData.size() > 2){ + + relatedTo = testTask.relatedToData[2]; + + } + + if (testTask.relatedToData.size() > 2){ + + relatedToTokens = testTask.relatedToDataTokens[2]; + + } + + ASSERT_EQ("person.3@example.com", relatedTo); + ASSERT_EQ("SCHOOL=MEETING", relatedToTokens); + + // Get the first RESOURCES. + + std::string resources; + + if (testTask.resourcesData.begin() != testTask.resourcesData.end()){ + + resources = testTask.resourcesData[0]; + + } + + ASSERT_EQ("DMAC RECEIVER", resources); + + // Get the second RESOURCES. + + resources.clear(); + + std::string resourcesLanguage; + + if (testTask.resourcesData.size() > 1){ + + resources = testTask.resourcesData[1]; + + } + + if (testTask.resourcesData.size() > 1){ + + resourcesLanguage = testTask.resourcesDataLanguage[1]; + + } + + ASSERT_EQ("PAL-I TELEVISION SET", resources); + ASSERT_EQ("en", resourcesLanguage); + + // Get the third RESOURCES. + + resources.clear(); + + std::string resourcesAltRep; + std::string resourcesTokens; + + if (testTask.resourcesData.size() > 2){ + + resources = testTask.resourcesData[2]; + + } + + if (testTask.resourcesData.size() > 2){ + + resourcesAltRep = testTask.resourcesDataAltRep[2]; + + } + + if (testTask.resourcesData.size() > 2){ + + resourcesTokens = testTask.resourcesDataTokens[2]; + + } + + ASSERT_EQ("PAL/SECAM VCR", resources); + ASSERT_EQ("null:nodata", resourcesAltRep); + ASSERT_EQ("STATUS=BROKEN", resourcesTokens); + + // Get the first RDATE. + + std::string recurrenceDate; + + if (testTask.recurranceDateData.begin() != testTask.recurranceDateData.end()){ + + recurrenceDate = testTask.recurranceDateData[0]; + + } + + ASSERT_EQ("20160120", recurrenceDate); + + // Get the second RDATE. + + recurrenceDate.clear(); + + std::string recurrenceDateTimeZoneParam; + std::string recurrenceDateValue; + + if (testTask.recurranceDateData.size() > 1){ + + recurrenceDate = testTask.recurranceDateData[1]; + + } + + if (testTask.recurranceDateData.size() > 1){ + + recurrenceDateTimeZoneParam = testTask.recurranceDateDataTimeZoneParam[1]; + + } + + if (testTask.recurranceDateData.size() > 1){ + + recurrenceDateValue = testTask.recurranceDateDataValue[1]; + + } + + ASSERT_EQ("20160121", recurrenceDate); + ASSERT_EQ("DATE", recurrenceDateValue); + ASSERT_EQ("Europe/Truro", recurrenceDateTimeZoneParam); + + // Get the third RDATE. + + recurrenceDate.clear(); + + std::string recurrenceTokens; + + if (testTask.recurranceDateData.size() > 2){ + + recurrenceDate = testTask.recurranceDateData[2]; + + } + + if (testTask.recurranceDateData.size() > 2){ + + recurrenceTokens = testTask.recurranceDateDataTokens[2]; + + } + + ASSERT_EQ("20160520", recurrenceDate); + ASSERT_EQ("ZILCH=DATA", recurrenceTokens); + + // Get the first X-EXAMPLE1 token. + + std::string xTokenName; + std::string xTokenData; + + if (testTask.xTokensData.size() != 0 ){ + + xTokenData = testTask.xTokensData[0]; + + } + + if (testTask.xTokensData.size() != 0){ + + xTokenName = testTask.xTokensDataTokens[0]; + + } + + ASSERT_EQ("Moo", xTokenData); + ASSERT_EQ("X-EXAMPLE1", xTokenName); + + // Get the second X-EXAMPLE1 token. + + xTokenName.clear(); + xTokenData.clear(); + + if (testTask.xTokensData.size() > 1){ + + xTokenData = testTask.xTokensData[1]; + + } + + if (testTask.xTokensData.size() > 1){ + + xTokenName = testTask.xTokensDataTokens[1]; + + } + + ASSERT_EQ("Meep", xTokenData); + ASSERT_EQ("X-EXAMPLE1;ANIMAL=NOPE", xTokenName); + + // Get the third X-EXAMPLE1 token. + + xTokenName.clear(); + xTokenData.clear(); + + if (testTask.xTokensData.size() > 2){ + + xTokenData = testTask.xTokensData[2]; + + } + + if (testTask.xTokensData.size() > 2){ + + xTokenName = testTask.xTokensDataTokens[2]; + + } + + ASSERT_EQ("Meow", xTokenData); + ASSERT_EQ("X-EXAMPLE1;ANIMAL=CAT", xTokenName); + + // Get the first X-EXAMPLE2 token. + + xTokenName.clear(); + xTokenData.clear(); + + if (testTask.xTokensData.size() > 3){ + + xTokenData = testTask.xTokensData[3]; + + } + + if (testTask.xTokensData.size() > 3){ + + xTokenName = testTask.xTokensDataTokens[3]; + + } + + ASSERT_EQ("Dish", xTokenData); + ASSERT_EQ("X-EXAMPLE2", xTokenName); + + // Get the second X-EXAMPLE2 token. + + xTokenName.clear(); + xTokenData.clear(); + + if (testTask.xTokensData.size() > 4){ + + xTokenData = testTask.xTokensData[4]; + + } + + if (testTask.xTokensData.size() > 4){ + + xTokenName = testTask.xTokensDataTokens[4]; + + } + + ASSERT_EQ("Fork", xTokenData); + ASSERT_EQ("X-EXAMPLE2;OBJECT=KITCHEN", xTokenName); + + // Get the third X-EXAMPLE2 token. + + xTokenName.clear(); + xTokenData.clear(); + + if (testTask.xTokensData.size() > 5){ + + xTokenData = testTask.xTokensData[5]; + + } + + if (testTask.xTokensData.size() > 5){ + + xTokenName = testTask.xTokensDataTokens[5]; + + } + + ASSERT_EQ("Table", xTokenData); + ASSERT_EQ("X-EXAMPLE2;OBJECT=LIVINGROOM", xTokenName); + + // Get the X-STATUS token. + + xTokenName.clear(); + xTokenData.clear(); + + if (testTask.xTokensData.size() > 6){ + + xTokenData = testTask.xTokensData[6]; + + } + + if (testTask.xTokensData.size() > 6){ + + xTokenName = testTask.xTokensDataTokens[6]; + + } + + ASSERT_EQ("Idle", xTokenData); + ASSERT_EQ("X-STATUS;HOLIDAY=YES", xTokenName); + + // Get the X-TRANSPORT token. + + xTokenName.clear(); + xTokenData.clear(); + + if (testTask.xTokensData.size() > 7){ + + xTokenData = testTask.xTokensData[7]; + + } + + if (testTask.xTokensData.size() > 7){ + + xTokenName = testTask.xTokensDataTokens[7]; + + } + + ASSERT_EQ("Private Hire", xTokenData); + ASSERT_EQ("X-TRANSPORT;PUBLIC=NO", xTokenName); + + // Get the X-PHANTOM-STATUS token. + + xTokenName.clear(); + xTokenData.clear(); + + if (testTask.xTokensData.size() > 8){ + + xTokenData = testTask.xTokensData[8]; + + } + + if (testTask.xTokensData.size() > 8){ + + xTokenName = testTask.xTokensDataTokens[8]; + + } + + ASSERT_EQ("None", xTokenData); + ASSERT_EQ("X-PHANTOM-STATUS;HELP=NONE", xTokenName); + +} + +TEST(iCalendarTask, AlarmTests){ + + CalendarTaskObject testTask; + ASSERT_EQ(CALENDAROBJECTLOAD_OK, testTask.LoadFile("iCalendarTask-Load2.vcf")); + ASSERT_EQ(CALENDAROBJECTVALID_OK, testTask.ValidBaseObject()); + + // Tests for the first VALARM property. + + std::string ActionData; + std::string ActionDataTokens; + + std::string TriggerData; + std::string TriggerRelated; + std::string TriggerValue; + std::string TriggerTokens; + + std::string DurationData; + std::string DurationTokens; + + std::string RepeatData; + std::string RepeatTokens; + + std::string xTokenData; + std::string xTokenName; + + if (testTask.calendarAlarmData.size() > 0){ + + ActionData = testTask.calendarAlarmData[0].AlarmAction; + ActionDataTokens = testTask.calendarAlarmData[0].AlarmActionTokens; + + TriggerData = testTask.calendarAlarmData[0].TriggerData; + TriggerRelated = testTask.calendarAlarmData[0].TriggerRelated; + TriggerValue = testTask.calendarAlarmData[0].TriggerValue; + TriggerTokens = testTask.calendarAlarmData[0].TriggerTokens; + + DurationData = testTask.calendarAlarmData[0].DurationData; + DurationTokens = testTask.calendarAlarmData[0].DurationTokens; + + RepeatData = testTask.calendarAlarmData[0].RepeatData; + RepeatTokens = testTask.calendarAlarmData[0].RepeatTokens; + + } + + ASSERT_EQ("AUDIO", ActionData); + ASSERT_EQ("FUNKY=SOUNDS", ActionDataTokens); + + ASSERT_EQ("20160220T160000Z", TriggerData); + ASSERT_EQ("END", TriggerRelated); + ASSERT_EQ("DATE-TIME", TriggerValue); + ASSERT_EQ("PUSH=BUTTON", TriggerTokens); + + ASSERT_EQ("PT5H", DurationData); + ASSERT_EQ("FLYING=NO", DurationTokens); + + ASSERT_EQ("PT5M", RepeatData); + ASSERT_EQ("NEVER=SLEEP", RepeatTokens); + + // Tests for ATTACH. First ATTACH property. + + std::string attachData; + std::string attachDataFormatType; + std::string attachDataValue; + std::string attachDataEncoding; + std::string attachDataTokens; + + if (testTask.calendarAlarmData[0].attachList.begin() != testTask.calendarAlarmData[0].attachList.end()){ + + attachData = testTask.attachList[0]; + + } + + if (testTask.calendarAlarmData[0].attachListFormatType.begin() != testTask.calendarAlarmData[0].attachListFormatType.end()){ + + attachDataFormatType = testTask.attachListFormatType[0]; + + } + + ASSERT_EQ("http://www.example.com/", attachData); + ASSERT_EQ("application/internet-shortcut", attachDataFormatType); + + // Second ATTACH property. + + attachData.clear(); + attachDataFormatType.clear(); + attachDataValue.clear(); + attachDataEncoding.clear(); + + if (testTask.calendarAlarmData[0].attachList.size() > 1){ + + attachData = testTask.calendarAlarmData[0].attachList[1]; + + } + + if (testTask.calendarAlarmData[0].attachListFormatType.size() > 1){ + + attachDataFormatType = testTask.calendarAlarmData[0].attachListFormatType[1]; + + } + + ASSERT_EQ("http://www.example.com/page2.html", attachData); + ASSERT_EQ("application/internet-shortcut", attachDataFormatType); + + // Third ATTACH property. + + attachData.clear(); + attachDataFormatType.clear(); + attachDataValue.clear(); + attachDataEncoding.clear(); + attachDataTokens.clear(); + + if (testTask.calendarAlarmData[0].attachList.size() > 2){ + + attachData = testTask.calendarAlarmData[0].attachList[2]; + + } + + if (testTask.calendarAlarmData[0].attachListFormatType.size() > 2){ + + attachDataFormatType = testTask.calendarAlarmData[0].attachListFormatType[2]; + + } + + if (testTask.calendarAlarmData[0].attachListValue.size() > 2){ + + attachDataValue = testTask.calendarAlarmData[0].attachListValue[2]; + + } + + if (testTask.calendarAlarmData[0].attachListFormatType.size() > 2){ + + attachDataEncoding = testTask.calendarAlarmData[0].attachListEncoding[2]; + + } + + if (testTask.calendarAlarmData[0].attachListTokens.size() > 2){ + + attachDataTokens = testTask.calendarAlarmData[0].attachListTokens[2]; + + } + + ASSERT_EQ("VGhpcyBpcyBhbiBleGFtcGxlIGZpbGU=", attachData); + ASSERT_EQ("text/plain", attachDataFormatType); + ASSERT_EQ("BASE64", attachDataEncoding); + ASSERT_EQ("BINARY", attachDataValue); + ASSERT_EQ("STUPID=EXAMPLE", attachDataTokens); + + // Test the first X-Token. + + if (testTask.calendarAlarmData[0].xTokensData.size() > 0){ + + xTokenData = testTask.calendarAlarmData[0].xTokensData[0]; + xTokenName = testTask.calendarAlarmData[0].xTokensDataTokens[0]; + + } + + ASSERT_EQ("Example Data 1", xTokenData); + ASSERT_EQ("X-EXAMPLE1;YAY=YES", xTokenName); + + // Test the second X-Token. + + xTokenData.clear(); + xTokenName.clear(); + + if (testTask.calendarAlarmData[0].xTokensData.size() > 1){ + + xTokenData = testTask.calendarAlarmData[0].xTokensData[1]; + xTokenName = testTask.calendarAlarmData[0].xTokensDataTokens[1]; + + } + + ASSERT_EQ("Example Data 2", xTokenData); + ASSERT_EQ("X-EXAMPLE2;NOPE=YEP", xTokenName); + + // Test the third X-Token. + + xTokenData.clear(); + xTokenName.clear(); + + if (testTask.calendarAlarmData[0].xTokensData.size() > 2){ + + xTokenData = testTask.calendarAlarmData[0].xTokensData[2]; + xTokenName = testTask.calendarAlarmData[0].xTokensDataTokens[2]; + + } + + ASSERT_EQ("Example Data 3", xTokenData); + ASSERT_EQ("X-EXAMPLE3;WORLD=NO", xTokenName); + + // Tests for the second VALARM property. + + ActionData.clear(); + ActionDataTokens.clear(); + + TriggerData.clear(); + TriggerRelated.clear(); + TriggerValue.clear(); + TriggerTokens.clear(); + + DurationData.clear(); + DurationTokens.clear(); + + RepeatData.clear(); + RepeatTokens.clear(); + + xTokenData.clear(); + xTokenName.clear(); + + string descriptionData; + string descriptionAltRep; + string descriptionLanguage; + string descriptionTokens; + + if (testTask.calendarAlarmData.size() > 1){ + + ActionData = testTask.calendarAlarmData[1].AlarmAction; + ActionDataTokens = testTask.calendarAlarmData[1].AlarmActionTokens; + + TriggerData = testTask.calendarAlarmData[1].TriggerData; + TriggerRelated = testTask.calendarAlarmData[1].TriggerRelated; + TriggerValue = testTask.calendarAlarmData[1].TriggerValue; + TriggerTokens = testTask.calendarAlarmData[1].TriggerTokens; + + DurationData = testTask.calendarAlarmData[1].DurationData; + DurationTokens = testTask.calendarAlarmData[1].DurationTokens; + + RepeatData = testTask.calendarAlarmData[1].RepeatData; + RepeatTokens = testTask.calendarAlarmData[1].RepeatTokens; + + descriptionData = testTask.calendarAlarmData[1].descriptionData; + descriptionAltRep = testTask.calendarAlarmData[1].descriptionAltRep; + descriptionLanguage = testTask.calendarAlarmData[1].descriptionLanguage; + descriptionTokens = testTask.calendarAlarmData[1].descriptionTokens; + + } + + ASSERT_EQ("DISPLAY", ActionData); + ASSERT_EQ("FLASHING=LIGHTS", ActionDataTokens); + + ASSERT_EQ("20160230T110000Z", TriggerData); + ASSERT_EQ("END", TriggerRelated); + ASSERT_EQ("DATE-TIME", TriggerValue); + ASSERT_EQ("PUSH=BUTTON", TriggerTokens); + + ASSERT_EQ("PT7H", DurationData); + ASSERT_EQ("FLYING=YES", DurationTokens); + + ASSERT_EQ("PT3M", RepeatData); + ASSERT_EQ("SLEEP=ALWAYS", RepeatTokens); + + ASSERT_EQ("This is the second alarm.", descriptionData); + ASSERT_EQ("null:nodata", descriptionAltRep); + ASSERT_EQ("kw", descriptionLanguage); + ASSERT_EQ("TERRIBLE=TOKEN", descriptionTokens); + + // Test the first X-Token. + + if (testTask.calendarAlarmData[1].xTokensData.size() > 0){ + + xTokenData = testTask.calendarAlarmData[1].xTokensData[0]; + xTokenName = testTask.calendarAlarmData[1].xTokensDataTokens[0]; + + } + + ASSERT_EQ("Example Data 1", xTokenData); + ASSERT_EQ("X-EXAMPLE1;YAY=YES", xTokenName); + + // Test the second X-Token. + + xTokenData.clear(); + xTokenName.clear(); + + if (testTask.calendarAlarmData[1].xTokensData.size() > 1){ + + xTokenData = testTask.calendarAlarmData[1].xTokensData[1]; + xTokenName = testTask.calendarAlarmData[1].xTokensDataTokens[1]; + + } + + ASSERT_EQ("Example Data 2", xTokenData); + ASSERT_EQ("X-EXAMPLE2;NOPE=YEP", xTokenName); + + // Test the third X-Token. + + xTokenData.clear(); + xTokenName.clear(); + + if (testTask.calendarAlarmData[1].xTokensData.size() > 2){ + + xTokenData = testTask.calendarAlarmData[1].xTokensData[2]; + xTokenName = testTask.calendarAlarmData[1].xTokensDataTokens[2]; + + } + + ASSERT_EQ("Example Data 3", xTokenData); + ASSERT_EQ("X-EXAMPLE3;WORLD=NO", xTokenName); + + // Tests for the third VALARM property. + + ActionData.clear(); + ActionDataTokens.clear(); + + TriggerData.clear(); + TriggerRelated.clear(); + TriggerValue.clear(); + TriggerTokens.clear(); + + DurationData.clear(); + DurationTokens.clear(); + + RepeatData.clear(); + RepeatTokens.clear(); + + xTokenData.clear(); + xTokenName.clear(); + + descriptionData.clear(); + descriptionAltRep.clear(); + descriptionLanguage.clear(); + descriptionTokens.clear(); + + string SummaryData; + string SummaryAltRep; + string SummaryLanguage; + string SummaryTokens; + + string attendeeDataMember; + string attendeeDataDelegatedFrom; + string attendeeDataDelegatedTo; + string attendeeDataRole; + string attendeeDataRSVP; + string attendeeDataDirectoryEntry; + string attendeeDataSentBy; + string attendeeDataCommonName; + string attendeeDataCalendarUserType; + string attendeeDataParticipationStatus; + string attendeeDataLanguage; + string attendeeDataTokens; + string attendeeData; + + attachData.clear(); + attachDataFormatType.clear(); + attachDataValue.clear(); + attachDataEncoding.clear(); + attachDataTokens.clear(); + + if (testTask.calendarAlarmData.size() > 2){ + + ActionData = testTask.calendarAlarmData[2].AlarmAction; + ActionDataTokens = testTask.calendarAlarmData[2].AlarmActionTokens; + + TriggerData = testTask.calendarAlarmData[2].TriggerData; + TriggerRelated = testTask.calendarAlarmData[2].TriggerRelated; + TriggerValue = testTask.calendarAlarmData[2].TriggerValue; + TriggerTokens = testTask.calendarAlarmData[2].TriggerTokens; + + DurationData = testTask.calendarAlarmData[2].DurationData; + DurationTokens = testTask.calendarAlarmData[2].DurationTokens; + + RepeatData = testTask.calendarAlarmData[2].RepeatData; + RepeatTokens = testTask.calendarAlarmData[2].RepeatTokens; + + descriptionData = testTask.calendarAlarmData[2].descriptionData; + descriptionAltRep = testTask.calendarAlarmData[2].descriptionAltRep; + descriptionLanguage = testTask.calendarAlarmData[2].descriptionLanguage; + descriptionTokens = testTask.calendarAlarmData[2].descriptionTokens; + + SummaryData = testTask.calendarAlarmData[2].SummaryData; + SummaryAltRep = testTask.calendarAlarmData[2].SummaryAltRep; + SummaryLanguage = testTask.calendarAlarmData[2].SummaryLanguage; + SummaryTokens = testTask.calendarAlarmData[2].SummaryTokens; + + } + + ASSERT_EQ("EMAIL", ActionData); + ASSERT_EQ("FLASHING=LIGHTS", ActionDataTokens); + + ASSERT_EQ("20160230T120000Z", TriggerData); + ASSERT_EQ("END", TriggerRelated); + ASSERT_EQ("DATE-TIME", TriggerValue); + ASSERT_EQ("PUSH=BUTTON", TriggerTokens); + + ASSERT_EQ("PT7H", DurationData); + ASSERT_EQ("FLYING=YES", DurationTokens); + + ASSERT_EQ("PT3M", RepeatData); + ASSERT_EQ("SLEEP=ALWAYS", RepeatTokens); + + ASSERT_EQ("This is the third alarm.", descriptionData); + ASSERT_EQ("null:nodata", descriptionAltRep); + ASSERT_EQ("kw", descriptionLanguage); + ASSERT_EQ("TERRIBLE=TOKEN", descriptionTokens); + + ASSERT_EQ("This is the summary of the third alarm.", SummaryData); + ASSERT_EQ("null:nodata", SummaryAltRep); + ASSERT_EQ("en", SummaryLanguage); + ASSERT_EQ("MEEP=MOOP", SummaryTokens); + + // Tests for ATTENDEE. First ATTENDEE property. + + if (testTask.calendarAlarmData[2].attendeeList.begin() != testTask.calendarAlarmData[2].attendeeList.end()){ + + attendeeData = testTask.calendarAlarmData[2].attendeeList[0]; + + } + + ASSERT_EQ("Attendee One", attendeeData); + + // Second ATTENDEE property. + + attendeeData.clear(); + + if (testTask.calendarAlarmData[2].attendeeList.size() > 1){ + + attendeeData = testTask.calendarAlarmData[2].attendeeList[1]; + + } + + if (testTask.calendarAlarmData[2].attendeeList.size() > 1){ + + attendeeDataDelegatedFrom = testTask.calendarAlarmData[2].attendeeListDelegatedFrom[1]; + + } + + if (testTask.calendarAlarmData[2].attendeeList.size() > 1){ + + attendeeDataDelegatedTo = testTask.calendarAlarmData[2].attendeeListDelegatedTo[1]; + + } + + if (testTask.calendarAlarmData[2].attendeeList.size() > 1){ + + attendeeDataRole = testTask.calendarAlarmData[2].attendeeListRole[1]; + + } + + if (testTask.calendarAlarmData[2].attendeeList.size() > 1){ + + attendeeDataRSVP = testTask.calendarAlarmData[2].attendeeListRSVP[1]; + + } + + ASSERT_EQ("Attendee Two", attendeeData); + ASSERT_EQ("mailto:delegated.from@example.com", attendeeDataDelegatedFrom); + ASSERT_EQ("mailto:delegated.to@example.com", attendeeDataDelegatedTo); + ASSERT_EQ("CHAIR", attendeeDataRole); + ASSERT_EQ("TRUE", attendeeDataRSVP); + + // Third ATTENDEE property. + + attendeeData.clear(); + + if (testTask.calendarAlarmData[2].attendeeList.size() > 2){ + + attendeeData = testTask.calendarAlarmData[2].attendeeList[2]; + + } + + if (testTask.calendarAlarmData[2].attendeeList.size() > 2){ + + attendeeDataDirectoryEntry = testTask.calendarAlarmData[2].attendeeListDirectoryEntry[2]; + + } + + if (testTask.calendarAlarmData[2].attendeeList.size() > 2){ + + attendeeDataSentBy = testTask.calendarAlarmData[2].attendeeListSentBy[2]; + + } + + if (testTask.calendarAlarmData[2].attendeeList.size() > 2){ + + attendeeDataCommonName = testTask.calendarAlarmData[2].attendeeListCommonName[2]; + + } + + if (testTask.calendarAlarmData[2].attendeeList.size() > 2){ + + attendeeDataCalendarUserType = testTask.calendarAlarmData[2].attendeeListCalendarUserType[2]; + + } + + if (testTask.calendarAlarmData[2].attendeeList.size() > 2){ + + attendeeDataParticipationStatus = testTask.calendarAlarmData[2].attendeeListParticipationStatus[2]; + + } + + if (testTask.calendarAlarmData[2].attendeeList.size() > 2){ + + attendeeDataLanguage = testTask.calendarAlarmData[2].attendeeListLanguage[2]; + + } + + if (testTask.calendarAlarmData[2].attendeeList.size() > 2){ + + attendeeDataTokens = testTask.calendarAlarmData[2].attendeeListTokens[2]; + + } + + ASSERT_EQ("Attendee Three", attendeeData); + ASSERT_EQ("null:nodata", attendeeDataDirectoryEntry); + ASSERT_EQ("mailto:sent.by@example.com", attendeeDataSentBy); + ASSERT_EQ("Attendee The Third", attendeeDataCommonName); + ASSERT_EQ("INDIVIDUAL", attendeeDataCalendarUserType); + ASSERT_EQ("ACCEPTED", attendeeDataParticipationStatus); + ASSERT_EQ("kw", attendeeDataLanguage); + ASSERT_EQ("EXAMPLE=DATA", attendeeDataTokens); + + // Tests for ATTACH. First ATTACH property. + + if (testTask.calendarAlarmData[2].attachList.begin() != testTask.calendarAlarmData[2].attachList.end()){ + + attachData = testTask.calendarAlarmData[2].attachList[0]; + + } + + if (testTask.calendarAlarmData[2].attachListFormatType.begin() != testTask.calendarAlarmData[2].attachListFormatType.end()){ + + attachDataFormatType = testTask.calendarAlarmData[2].attachListFormatType[0]; + + } + + ASSERT_EQ("http://www.example.com/", attachData); + ASSERT_EQ("application/internet-shortcut", attachDataFormatType); + + // Second ATTACH property. + + attachData.clear(); + attachDataFormatType.clear(); + attachDataValue.clear(); + attachDataEncoding.clear(); + + if (testTask.calendarAlarmData[2].attachList.size() > 1){ + + attachData = testTask.calendarAlarmData[2].attachList[1]; + + } + + if (testTask.calendarAlarmData[2].attachListFormatType.size() > 1){ + + attachDataFormatType = testTask.calendarAlarmData[2].attachListFormatType[1]; + + } + + ASSERT_EQ("http://www.example.com/page2.html", attachData); + ASSERT_EQ("application/internet-shortcut", attachDataFormatType); + + // Third ATTACH property. + + attachData.clear(); + attachDataFormatType.clear(); + attachDataValue.clear(); + attachDataEncoding.clear(); + attachDataTokens.clear(); + + if (testTask.calendarAlarmData[2].attachList.size() > 2){ + + attachData = testTask.calendarAlarmData[2].attachList[2]; + + } + + if (testTask.calendarAlarmData[2].attachListFormatType.size() > 2){ + + attachDataFormatType = testTask.calendarAlarmData[2].attachListFormatType[2]; + + } + + if (testTask.calendarAlarmData[2].attachListValue.size() > 2){ + + attachDataValue = testTask.calendarAlarmData[2].attachListValue[2]; + + } + + if (testTask.calendarAlarmData[2].attachListFormatType.size() > 2){ + + attachDataEncoding = testTask.calendarAlarmData[2].attachListEncoding[2]; + + } + + if (testTask.calendarAlarmData[2].attachListTokens.size() > 2){ + + attachDataTokens = testTask.calendarAlarmData[2].attachListTokens[2]; + + } + + ASSERT_EQ("VGhpcyBpcyBhbiBleGFtcGxlIGZpbGU=", attachData); + ASSERT_EQ("text/plain", attachDataFormatType); + ASSERT_EQ("BASE64", attachDataEncoding); + ASSERT_EQ("BINARY", attachDataValue); + ASSERT_EQ("STUPID=EXAMPLE", attachDataTokens); + + // Test the first X-Token. + + if (testTask.calendarAlarmData[2].xTokensData.size() > 0){ + + xTokenData = testTask.calendarAlarmData[2].xTokensData[0]; + xTokenName = testTask.calendarAlarmData[2].xTokensDataTokens[0]; + + } + + ASSERT_EQ("Example Data 1", xTokenData); + ASSERT_EQ("X-EXAMPLE1;YAY=YES", xTokenName); + + // Test the second X-Token. + + xTokenData.clear(); + xTokenName.clear(); + + if (testTask.calendarAlarmData[2].xTokensData.size() > 1){ + + xTokenData = testTask.calendarAlarmData[2].xTokensData[1]; + xTokenName = testTask.calendarAlarmData[2].xTokensDataTokens[1]; + + } + + ASSERT_EQ("Example Data 2", xTokenData); + ASSERT_EQ("X-EXAMPLE2;NOPE=YEP", xTokenName); + + // Test the third X-Token. + + xTokenData.clear(); + xTokenName.clear(); + + if (testTask.calendarAlarmData[2].xTokensData.size() > 2){ + + xTokenData = testTask.calendarAlarmData[2].xTokensData[2]; + xTokenName = testTask.calendarAlarmData[2].xTokensDataTokens[2]; + + } + + ASSERT_EQ("Example Data 3", xTokenData); + ASSERT_EQ("X-EXAMPLE3;WORLD=NO", xTokenName); + +}