// xestiacalendar_icaltimezoneload.h - Xestia Calendar iCalendar Timezone Component Unit Tests // // (c) 2016-2017 Xestia Software Development. // // This file is part of Xestia Calendar. // // 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 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. // // You should have received a copy of the GNU General Public License along // with Xestia Calendar. If not, see #include "../objects/calendartimezone/CalendarTimezone.h" TEST(iCalendarTimezone, BasicTests){ CalendarTimezoneObject TestTimezone; ASSERT_EQ(CALENDAROBJECTLOAD_MISSING, TestTimezone.LoadFile("iCalendarTimezone-Missing.vcf")); ASSERT_EQ(CALENDAROBJECTLOAD_CANNOTOPEN, TestTimezone.LoadFile("iCalendarTimezone-InvalidPermissions.vcf")); ASSERT_EQ(CALENDAROBJECTLOAD_OK, TestTimezone.LoadFile("iCalendarTimezone-Load1.vcf")); } TEST(iCalendarTimezone, ObjectDataTests){ CalendarTimezoneObject TestTimezone; ASSERT_EQ(CALENDAROBJECTLOAD_OK, TestTimezone.LoadFile("iCalendarTimezone-Load2.vcf")); ASSERT_EQ(CALENDAROBJECTVALID_OK, TestTimezone.ValidBaseObject()); // Tests for UID. ASSERT_EQ("Example/Starrgazy", TestTimezone.TimeZoneData); ASSERT_EQ("OTHER=PARAM", TestTimezone.TimeZoneDataTokens); // Tests for LAST-MODIFIED. ASSERT_EQ("20160203T200700Z", TestTimezone.LastModifiedData); ASSERT_EQ("FUTURE=ODD", TestTimezone.LastModifiedTokens); // Tests for TZURL. ASSERT_EQ("http://www.example.com/", TestTimezone.TimeZoneURLData); ASSERT_EQ("URL=YES", TestTimezone.TimeZoneURLTokens); // Tests for the first STANDARD data. std::string DateTimeStartData; std::string TimeZoneOffsetToData; std::string TimeZoneOffsetFromData; if (TestTimezone.TimezoneStandardCollection.size() > 0){ DateTimeStartData = TestTimezone.TimezoneStandardCollection[0].DateTimeStartData; } if (TestTimezone.TimezoneStandardCollection.size() > 0){ TimeZoneOffsetToData = TestTimezone.TimezoneStandardCollection[0].TimeZoneOffsetToData; } if (TestTimezone.TimezoneStandardCollection.size() > 0){ TimeZoneOffsetFromData = TestTimezone.TimezoneStandardCollection[0].TimeZoneOffsetFromData; } ASSERT_EQ("20160204T020000", DateTimeStartData); ASSERT_EQ("-0400", TimeZoneOffsetToData); ASSERT_EQ("-0500", TimeZoneOffsetFromData); // Tests for the second STANDARD data. std::string DateTimeStartTokens; std::string TimeZoneOffsetToTokens; std::string TimeZoneOffsetFromTokens; std::string RecurranceRuleData; std::string RecurranceRuleDataTokens; std::string CommentList; std::string CommentListAltRep; std::string CommentListLanguage; std::string CommentListTokens; std::string RecurranceDateData; std::string RecurranceDateValue; std::string RecurranceDateDataTimeZoneParam; std::string RecurranceDateDataTokens; std::string TimeZoneNameData; std::string TimeZoneNameLanguage; std::string TimeZoneNameTokens; std::string XTokensData; std::string XTokensDataTokens; DateTimeStartData.clear(); TimeZoneOffsetToData.clear(); TimeZoneOffsetFromData.clear(); if (TestTimezone.TimezoneStandardCollection.size() > 1){ DateTimeStartData = TestTimezone.TimezoneStandardCollection[1].DateTimeStartData; DateTimeStartTokens = TestTimezone.TimezoneStandardCollection[1].DateTimeStartTokens; } if (TestTimezone.TimezoneStandardCollection.size() > 1){ TimeZoneOffsetToData = TestTimezone.TimezoneStandardCollection[1].TimeZoneOffsetToData; TimeZoneOffsetToTokens = TestTimezone.TimezoneStandardCollection[1].TimeZoneOffsetToTokens; } if (TestTimezone.TimezoneStandardCollection.size() > 1){ TimeZoneOffsetFromData = TestTimezone.TimezoneStandardCollection[1].TimeZoneOffsetFromData; TimeZoneOffsetFromTokens = TestTimezone.TimezoneStandardCollection[1].TimeZoneOffsetFromTokens; } ASSERT_EQ("20160205T020000", DateTimeStartData); ASSERT_EQ("MEEP=MOO", DateTimeStartTokens); ASSERT_EQ("-0400", TimeZoneOffsetToData); ASSERT_EQ("EXAMPLE=DATA", TimeZoneOffsetToTokens); ASSERT_EQ("-0500", TimeZoneOffsetFromData); ASSERT_EQ("LETS=GO", TimeZoneOffsetFromTokens); // Tests for third STANDARD data. DateTimeStartData.clear(); DateTimeStartTokens.clear(); TimeZoneOffsetToData.clear(); TimeZoneOffsetToTokens.clear(); TimeZoneOffsetFromData.clear(); TimeZoneOffsetFromTokens.clear(); if (TestTimezone.TimezoneStandardCollection.size() > 2){ DateTimeStartData = TestTimezone.TimezoneStandardCollection[2].DateTimeStartData; DateTimeStartTokens = TestTimezone.TimezoneStandardCollection[2].DateTimeStartTokens; } if (TestTimezone.TimezoneStandardCollection.size() > 2){ TimeZoneOffsetToData = TestTimezone.TimezoneStandardCollection[2].TimeZoneOffsetToData; TimeZoneOffsetToTokens = TestTimezone.TimezoneStandardCollection[2].TimeZoneOffsetToTokens; } if (TestTimezone.TimezoneStandardCollection.size() > 2){ TimeZoneOffsetFromData = TestTimezone.TimezoneStandardCollection[2].TimeZoneOffsetFromData; TimeZoneOffsetFromTokens = TestTimezone.TimezoneStandardCollection[2].TimeZoneOffsetFromTokens; } if (TestTimezone.TimezoneStandardCollection.size() > 2 && TestTimezone.TimezoneStandardCollection[2].CommentList.size() > 0){ CommentList = TestTimezone.TimezoneStandardCollection[2].CommentList[0]; CommentListAltRep = TestTimezone.TimezoneStandardCollection[2].CommentListAltRep[0]; CommentListLanguage = TestTimezone.TimezoneStandardCollection[2].CommentListLanguage[0]; CommentListTokens = TestTimezone.TimezoneStandardCollection[2].CommentListTokens[0]; } if (TestTimezone.TimezoneStandardCollection.size() > 2 && TestTimezone.TimezoneStandardCollection[2].RecurranceRuleData.size() > 0){ RecurranceRuleData = TestTimezone.TimezoneStandardCollection[2].RecurranceRuleData; RecurranceRuleDataTokens = TestTimezone.TimezoneStandardCollection[2].RecurranceRuleDataTokens; } if (TestTimezone.TimezoneStandardCollection.size() > 2 && TestTimezone.TimezoneStandardCollection[2].RecurranceDateData.size() > 0){ RecurranceDateData = TestTimezone.TimezoneStandardCollection[2].RecurranceDateData[0]; RecurranceDateValue = TestTimezone.TimezoneStandardCollection[2].RecurranceDateDataValue[0]; RecurranceDateDataTimeZoneParam = TestTimezone.TimezoneStandardCollection[2].RecurranceDateDataTimeZoneParam[0]; RecurranceDateDataTokens = TestTimezone.TimezoneStandardCollection[2].RecurranceDateDataTokens[0]; } if (TestTimezone.TimezoneStandardCollection.size() > 2 && TestTimezone.TimezoneStandardCollection[2].TimeZoneNameData.size() > 0){ TimeZoneNameData = TestTimezone.TimezoneStandardCollection[2].TimeZoneNameData[0]; TimeZoneNameLanguage = TestTimezone.TimezoneStandardCollection[2].TimeZoneNameLanguage[0]; TimeZoneNameTokens = TestTimezone.TimezoneStandardCollection[2].TimeZoneNameTokens[0]; } if (TestTimezone.TimezoneStandardCollection.size() > 2 && TestTimezone.TimezoneStandardCollection[2].XTokensData.size() > 0){ XTokensData = TestTimezone.TimezoneStandardCollection[2].XTokensData[0]; XTokensDataTokens = TestTimezone.TimezoneStandardCollection[2].XTokensDataTokens[0]; } ASSERT_EQ("20160206T020000", DateTimeStartData); ASSERT_EQ("MEEP=MOO", DateTimeStartTokens); ASSERT_EQ("-0400", TimeZoneOffsetToData); ASSERT_EQ("EXAMPLE=DATA", TimeZoneOffsetToTokens); ASSERT_EQ("-0500", TimeZoneOffsetFromData); ASSERT_EQ("LETS=GO", TimeZoneOffsetFromTokens); ASSERT_EQ("Example timezone comment.", CommentList); ASSERT_EQ("null:nodata", CommentListAltRep); ASSERT_EQ("kw", CommentListLanguage); ASSERT_EQ("YO=YOYOS", CommentListTokens); ASSERT_EQ("FREQ=DAILY;COUNT=10", RecurranceRuleData); ASSERT_EQ("YAK=YES", RecurranceRuleDataTokens); ASSERT_EQ("20160205,20160207,20160216,20160305", RecurranceDateData); ASSERT_EQ("DATE", RecurranceDateValue); ASSERT_EQ("Europe/Truro", RecurranceDateDataTimeZoneParam); ASSERT_EQ("BEEP=BOOP", RecurranceDateDataTokens); ASSERT_EQ("Example Timezone Name 1", TimeZoneNameData); ASSERT_EQ("en", TimeZoneNameLanguage); ASSERT_EQ("NOPE=YES", TimeZoneNameTokens); ASSERT_EQ("Example Timezone Name 1", TimeZoneNameData); ASSERT_EQ("en", TimeZoneNameLanguage); ASSERT_EQ("Meep", XTokensData); ASSERT_EQ("X-MOO", XTokensDataTokens); XTokensData.clear(); XTokensDataTokens.clear(); if (TestTimezone.TimezoneStandardCollection.size() > 2 && TestTimezone.TimezoneStandardCollection[2].XTokensData.size() > 1){ XTokensData = TestTimezone.TimezoneStandardCollection[2].XTokensData[1]; XTokensDataTokens = TestTimezone.TimezoneStandardCollection[2].XTokensDataTokens[1]; } ASSERT_EQ("Moop", XTokensData); ASSERT_EQ("X-MOO", XTokensDataTokens); XTokensData.clear(); XTokensDataTokens.clear(); if (TestTimezone.TimezoneStandardCollection.size() > 2 && TestTimezone.TimezoneStandardCollection[2].XTokensData.size() > 2){ XTokensData = TestTimezone.TimezoneStandardCollection[2].XTokensData[2]; XTokensDataTokens = TestTimezone.TimezoneStandardCollection[2].XTokensDataTokens[2]; } ASSERT_EQ("Zaap", XTokensData); ASSERT_EQ("X-MOO;MEEP=YIKES", XTokensDataTokens); XTokensData.clear(); XTokensDataTokens.clear(); if (TestTimezone.TimezoneStandardCollection.size() > 2 && TestTimezone.TimezoneStandardCollection[2].XTokensData.size() > 3){ XTokensData = TestTimezone.TimezoneStandardCollection[2].XTokensData[3]; XTokensDataTokens = TestTimezone.TimezoneStandardCollection[2].XTokensDataTokens[3]; } ASSERT_EQ("Fork", XTokensData); ASSERT_EQ("X-ITEM", XTokensDataTokens); XTokensData.clear(); XTokensDataTokens.clear(); if (TestTimezone.TimezoneStandardCollection.size() > 2 && TestTimezone.TimezoneStandardCollection[2].XTokensData.size() > 4){ XTokensData = TestTimezone.TimezoneStandardCollection[2].XTokensData[4]; XTokensDataTokens = TestTimezone.TimezoneStandardCollection[2].XTokensDataTokens[4]; } ASSERT_EQ("Spoon", XTokensData); ASSERT_EQ("X-ITEM", XTokensDataTokens); XTokensData.clear(); XTokensDataTokens.clear(); if (TestTimezone.TimezoneStandardCollection.size() > 2 && TestTimezone.TimezoneStandardCollection[2].XTokensData.size() > 5){ XTokensData = TestTimezone.TimezoneStandardCollection[2].XTokensData[5]; XTokensDataTokens = TestTimezone.TimezoneStandardCollection[2].XTokensDataTokens[5]; } ASSERT_EQ("Knife", XTokensData); ASSERT_EQ("X-ITEM;DIRTY=NO", XTokensDataTokens); XTokensData.clear(); XTokensDataTokens.clear(); if (TestTimezone.TimezoneStandardCollection.size() > 2 && TestTimezone.TimezoneStandardCollection[2].XTokensData.size() > 6){ XTokensData = TestTimezone.TimezoneStandardCollection[2].XTokensData[6]; XTokensDataTokens = TestTimezone.TimezoneStandardCollection[2].XTokensDataTokens[6]; } ASSERT_EQ("1", XTokensData); ASSERT_EQ("X-NOPE", XTokensDataTokens); XTokensData.clear(); XTokensDataTokens.clear(); if (TestTimezone.TimezoneStandardCollection.size() > 2 && TestTimezone.TimezoneStandardCollection[2].XTokensData.size() > 7){ XTokensData = TestTimezone.TimezoneStandardCollection[2].XTokensData[7]; XTokensDataTokens = TestTimezone.TimezoneStandardCollection[2].XTokensDataTokens[7]; } ASSERT_EQ("2", XTokensData); ASSERT_EQ("X-NOPE", XTokensDataTokens); XTokensData.clear(); XTokensDataTokens.clear(); if (TestTimezone.TimezoneStandardCollection.size() > 2 && TestTimezone.TimezoneStandardCollection[2].XTokensData.size() > 8){ XTokensData = TestTimezone.TimezoneStandardCollection[2].XTokensData[8]; XTokensDataTokens = TestTimezone.TimezoneStandardCollection[2].XTokensDataTokens[8]; } ASSERT_EQ("3", XTokensData); ASSERT_EQ("X-NOPE;LONG=YES", XTokensDataTokens); // Tests for the first DAYLIGHT data. DateTimeStartData.clear(); TimeZoneOffsetToData.clear(); TimeZoneOffsetFromData.clear(); if (TestTimezone.TimezoneDaylightCollection.size() > 0){ DateTimeStartData = TestTimezone.TimezoneDaylightCollection[0].DateTimeStartData; } if (TestTimezone.TimezoneDaylightCollection.size() > 0){ TimeZoneOffsetToData = TestTimezone.TimezoneDaylightCollection[0].TimeZoneOffsetToData; } if (TestTimezone.TimezoneDaylightCollection.size() > 0){ TimeZoneOffsetFromData = TestTimezone.TimezoneDaylightCollection[0].TimeZoneOffsetFromData; } ASSERT_EQ("20160204T020000", DateTimeStartData); ASSERT_EQ("-0400", TimeZoneOffsetToData); ASSERT_EQ("-0500", TimeZoneOffsetFromData); // Tests for the second DAYLIGHT data. DateTimeStartTokens.clear(); TimeZoneOffsetToTokens.clear(); TimeZoneOffsetFromTokens.clear(); RecurranceRuleData.clear(); RecurranceRuleDataTokens.clear(); CommentList.clear(); CommentListAltRep.clear(); CommentListLanguage.clear(); CommentListTokens.clear(); RecurranceDateData.clear(); RecurranceDateValue.clear(); RecurranceDateDataTimeZoneParam.clear(); RecurranceDateDataTokens.clear(); TimeZoneNameData.clear(); TimeZoneNameLanguage.clear(); TimeZoneNameTokens.clear(); XTokensData.clear(); XTokensDataTokens.clear(); DateTimeStartData.clear(); TimeZoneOffsetToData.clear(); TimeZoneOffsetFromData.clear(); if (TestTimezone.TimezoneDaylightCollection.size() > 1){ DateTimeStartData = TestTimezone.TimezoneDaylightCollection[1].DateTimeStartData; DateTimeStartTokens = TestTimezone.TimezoneDaylightCollection[1].DateTimeStartTokens; } if (TestTimezone.TimezoneDaylightCollection.size() > 1){ TimeZoneOffsetToData = TestTimezone.TimezoneDaylightCollection[1].TimeZoneOffsetToData; TimeZoneOffsetToTokens = TestTimezone.TimezoneDaylightCollection[1].TimeZoneOffsetToTokens; } if (TestTimezone.TimezoneDaylightCollection.size() > 1){ TimeZoneOffsetFromData = TestTimezone.TimezoneDaylightCollection[1].TimeZoneOffsetFromData; TimeZoneOffsetFromTokens = TestTimezone.TimezoneDaylightCollection[1].TimeZoneOffsetFromTokens; } ASSERT_EQ("20160205T020000", DateTimeStartData); ASSERT_EQ("MEEP=MOO", DateTimeStartTokens); ASSERT_EQ("-0400", TimeZoneOffsetToData); ASSERT_EQ("EXAMPLE=DATA", TimeZoneOffsetToTokens); ASSERT_EQ("-0500", TimeZoneOffsetFromData); ASSERT_EQ("LETS=GO", TimeZoneOffsetFromTokens); // Tests for third DAYLIGHT data. DateTimeStartData.clear(); DateTimeStartTokens.clear(); TimeZoneOffsetToData.clear(); TimeZoneOffsetToTokens.clear(); TimeZoneOffsetFromData.clear(); TimeZoneOffsetFromTokens.clear(); if (TestTimezone.TimezoneDaylightCollection.size() > 2){ DateTimeStartData = TestTimezone.TimezoneDaylightCollection[2].DateTimeStartData; DateTimeStartTokens = TestTimezone.TimezoneDaylightCollection[2].DateTimeStartTokens; } if (TestTimezone.TimezoneDaylightCollection.size() > 2){ TimeZoneOffsetToData = TestTimezone.TimezoneDaylightCollection[2].TimeZoneOffsetToData; TimeZoneOffsetToTokens = TestTimezone.TimezoneDaylightCollection[2].TimeZoneOffsetToTokens; } if (TestTimezone.TimezoneDaylightCollection.size() > 2){ TimeZoneOffsetFromData = TestTimezone.TimezoneDaylightCollection[2].TimeZoneOffsetFromData; TimeZoneOffsetFromTokens = TestTimezone.TimezoneDaylightCollection[2].TimeZoneOffsetFromTokens; } if (TestTimezone.TimezoneDaylightCollection.size() > 2 && TestTimezone.TimezoneDaylightCollection[2].CommentList.size() > 0){ CommentList = TestTimezone.TimezoneDaylightCollection[2].CommentList[0]; CommentListAltRep = TestTimezone.TimezoneDaylightCollection[2].CommentListAltRep[0]; CommentListLanguage = TestTimezone.TimezoneDaylightCollection[2].CommentListLanguage[0]; CommentListTokens = TestTimezone.TimezoneDaylightCollection[2].CommentListTokens[0]; } if (TestTimezone.TimezoneDaylightCollection.size() > 2 && TestTimezone.TimezoneDaylightCollection[2].RecurranceRuleData.size() > 0){ RecurranceRuleData = TestTimezone.TimezoneDaylightCollection[2].RecurranceRuleData; RecurranceRuleDataTokens = TestTimezone.TimezoneDaylightCollection[2].RecurranceRuleDataTokens; } if (TestTimezone.TimezoneDaylightCollection.size() > 2 && TestTimezone.TimezoneDaylightCollection[2].RecurranceDateData.size() > 0){ RecurranceDateData = TestTimezone.TimezoneDaylightCollection[2].RecurranceDateData[0]; RecurranceDateValue = TestTimezone.TimezoneDaylightCollection[2].RecurranceDateDataValue[0]; RecurranceDateDataTimeZoneParam = TestTimezone.TimezoneDaylightCollection[2].RecurranceDateDataTimeZoneParam[0]; RecurranceDateDataTokens = TestTimezone.TimezoneDaylightCollection[2].RecurranceDateDataTokens[0]; } if (TestTimezone.TimezoneDaylightCollection.size() > 2 && TestTimezone.TimezoneDaylightCollection[2].TimeZoneNameData.size() > 0){ TimeZoneNameData = TestTimezone.TimezoneDaylightCollection[2].TimeZoneNameData[0]; TimeZoneNameLanguage = TestTimezone.TimezoneDaylightCollection[2].TimeZoneNameLanguage[0]; TimeZoneNameTokens = TestTimezone.TimezoneDaylightCollection[2].TimeZoneNameTokens[0]; } if (TestTimezone.TimezoneDaylightCollection.size() > 2 && TestTimezone.TimezoneDaylightCollection[2].XTokensData.size() > 0){ XTokensData = TestTimezone.TimezoneDaylightCollection[2].XTokensData[0]; XTokensDataTokens = TestTimezone.TimezoneDaylightCollection[2].XTokensDataTokens[0]; } ASSERT_EQ("20160206T020000", DateTimeStartData); ASSERT_EQ("MEEP=MOO", DateTimeStartTokens); ASSERT_EQ("-0400", TimeZoneOffsetToData); ASSERT_EQ("EXAMPLE=DATA", TimeZoneOffsetToTokens); ASSERT_EQ("-0500", TimeZoneOffsetFromData); ASSERT_EQ("LETS=GO", TimeZoneOffsetFromTokens); ASSERT_EQ("Example timezone comment.", CommentList); ASSERT_EQ("null:nodata", CommentListAltRep); ASSERT_EQ("kw", CommentListLanguage); ASSERT_EQ("YO=YOYOS", CommentListTokens); ASSERT_EQ("FREQ=DAILY;COUNT=10", RecurranceRuleData); ASSERT_EQ("YAK=YES", RecurranceRuleDataTokens); ASSERT_EQ("20160205,20160207,20160216,20160305", RecurranceDateData); ASSERT_EQ("DATE", RecurranceDateValue); ASSERT_EQ("Europe/Truro", RecurranceDateDataTimeZoneParam); ASSERT_EQ("BEEP=BOOP", RecurranceDateDataTokens); ASSERT_EQ("Example Timezone Name 1", TimeZoneNameData); ASSERT_EQ("en", TimeZoneNameLanguage); ASSERT_EQ("NOPE=YES", TimeZoneNameTokens); ASSERT_EQ("Example Timezone Name 1", TimeZoneNameData); ASSERT_EQ("en", TimeZoneNameLanguage); ASSERT_EQ("Meep", XTokensData); ASSERT_EQ("X-MOO", XTokensDataTokens); XTokensData.clear(); XTokensDataTokens.clear(); if (TestTimezone.TimezoneDaylightCollection.size() > 2 && TestTimezone.TimezoneDaylightCollection[2].XTokensData.size() > 1){ XTokensData = TestTimezone.TimezoneDaylightCollection[2].XTokensData[1]; XTokensDataTokens = TestTimezone.TimezoneDaylightCollection[2].XTokensDataTokens[1]; } ASSERT_EQ("Moop", XTokensData); ASSERT_EQ("X-MOO", XTokensDataTokens); XTokensData.clear(); XTokensDataTokens.clear(); if (TestTimezone.TimezoneDaylightCollection.size() > 2 && TestTimezone.TimezoneDaylightCollection[2].XTokensData.size() > 2){ XTokensData = TestTimezone.TimezoneDaylightCollection[2].XTokensData[2]; XTokensDataTokens = TestTimezone.TimezoneDaylightCollection[2].XTokensDataTokens[2]; } ASSERT_EQ("Zaap", XTokensData); ASSERT_EQ("X-MOO;MEEP=YIKES", XTokensDataTokens); XTokensData.clear(); XTokensDataTokens.clear(); if (TestTimezone.TimezoneDaylightCollection.size() > 2 && TestTimezone.TimezoneDaylightCollection[2].XTokensData.size() > 3){ XTokensData = TestTimezone.TimezoneDaylightCollection[2].XTokensData[3]; XTokensDataTokens = TestTimezone.TimezoneDaylightCollection[2].XTokensDataTokens[3]; } ASSERT_EQ("Fork", XTokensData); ASSERT_EQ("X-ITEM", XTokensDataTokens); XTokensData.clear(); XTokensDataTokens.clear(); if (TestTimezone.TimezoneDaylightCollection.size() > 2 && TestTimezone.TimezoneDaylightCollection[2].XTokensData.size() > 4){ XTokensData = TestTimezone.TimezoneDaylightCollection[2].XTokensData[4]; XTokensDataTokens = TestTimezone.TimezoneDaylightCollection[2].XTokensDataTokens[4]; } ASSERT_EQ("Spoon", XTokensData); ASSERT_EQ("X-ITEM", XTokensDataTokens); XTokensData.clear(); XTokensDataTokens.clear(); if (TestTimezone.TimezoneDaylightCollection.size() > 2 && TestTimezone.TimezoneDaylightCollection[2].XTokensData.size() > 5){ XTokensData = TestTimezone.TimezoneDaylightCollection[2].XTokensData[5]; XTokensDataTokens = TestTimezone.TimezoneDaylightCollection[2].XTokensDataTokens[5]; } ASSERT_EQ("Knife", XTokensData); ASSERT_EQ("X-ITEM;DIRTY=NO", XTokensDataTokens); XTokensData.clear(); XTokensDataTokens.clear(); if (TestTimezone.TimezoneDaylightCollection.size() > 2 && TestTimezone.TimezoneDaylightCollection[2].XTokensData.size() > 6){ XTokensData = TestTimezone.TimezoneDaylightCollection[2].XTokensData[6]; XTokensDataTokens = TestTimezone.TimezoneDaylightCollection[2].XTokensDataTokens[6]; } ASSERT_EQ("1", XTokensData); ASSERT_EQ("X-NOPE", XTokensDataTokens); XTokensData.clear(); XTokensDataTokens.clear(); if (TestTimezone.TimezoneDaylightCollection.size() > 2 && TestTimezone.TimezoneDaylightCollection[2].XTokensData.size() > 7){ XTokensData = TestTimezone.TimezoneDaylightCollection[2].XTokensData[7]; XTokensDataTokens = TestTimezone.TimezoneDaylightCollection[2].XTokensDataTokens[7]; } ASSERT_EQ("2", XTokensData); ASSERT_EQ("X-NOPE", XTokensDataTokens); XTokensData.clear(); XTokensDataTokens.clear(); if (TestTimezone.TimezoneDaylightCollection.size() > 2 && TestTimezone.TimezoneDaylightCollection[2].XTokensData.size() > 8){ XTokensData = TestTimezone.TimezoneDaylightCollection[2].XTokensData[8]; XTokensDataTokens = TestTimezone.TimezoneDaylightCollection[2].XTokensDataTokens[8]; } ASSERT_EQ("3", XTokensData); ASSERT_EQ("X-NOPE;LONG=YES", XTokensDataTokens); }