1 // xestiacalendar_icaleventload.h - Xestia Calendar iCalendar Timezone Component Unit Tests
3 // (c) 2016 Xestia Software Development.
5 // This file is part of Xestia Calendar.
7 // Xestia Address Book 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 Address Book 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 "../objects/calendartimezone/CalendarTimezone.h"
21 TEST(iCalendarTimezone, BasicTests){
23 CalendarTimezoneObject TestTimezone;
25 ASSERT_EQ(CALENDAROBJECTLOAD_MISSING, TestTimezone.LoadFile("iCalendarTimezone-Missing.vcf"));
26 ASSERT_EQ(CALENDAROBJECTLOAD_CANNOTOPEN, TestTimezone.LoadFile("iCalendarTimezone-InvalidPermissions.vcf"));
27 ASSERT_EQ(CALENDAROBJECTLOAD_OK, TestTimezone.LoadFile("iCalendarTimezone-Load1.vcf"));
31 TEST(iCalendarTimezone, ObjectDataTests){
33 CalendarTimezoneObject TestTimezone;
34 ASSERT_EQ(CALENDAROBJECTLOAD_OK, TestTimezone.LoadFile("iCalendarTimezone-Load2.vcf"));
35 ASSERT_EQ(CALENDAROBJECTVALID_OK, TestTimezone.ValidBaseObject());
39 ASSERT_EQ("Example/Starrgazy", TestTimezone.TimeZoneData);
40 ASSERT_EQ("OTHER=PARAM", TestTimezone.TimeZoneDataTokens);
42 // Tests for LAST-MODIFIED.
44 ASSERT_EQ("20160203T200700Z", TestTimezone.LastModifiedData);
45 ASSERT_EQ("FUTURE=ODD", TestTimezone.LastModifiedTokens);
49 ASSERT_EQ("http://www.example.com/", TestTimezone.TimeZoneURLData);
50 ASSERT_EQ("URL=YES", TestTimezone.TimeZoneURLTokens);
52 // Tests for the first STANDARD data.
54 std::string DateTimeStartData;
55 std::string TimeZoneOffsetToData;
56 std::string TimeZoneOffsetFromData;
58 if (TestTimezone.TimezoneStandardCollection.size() > 0){
60 DateTimeStartData = TestTimezone.TimezoneStandardCollection[0].DateTimeStartData;
64 if (TestTimezone.TimezoneStandardCollection.size() > 0){
66 TimeZoneOffsetToData = TestTimezone.TimezoneStandardCollection[0].TimeZoneOffsetToData;
70 if (TestTimezone.TimezoneStandardCollection.size() > 0){
72 TimeZoneOffsetFromData = TestTimezone.TimezoneStandardCollection[0].TimeZoneOffsetFromData;
76 ASSERT_EQ("20160204T020000", DateTimeStartData);
77 ASSERT_EQ("-0400", TimeZoneOffsetToData);
78 ASSERT_EQ("-0500", TimeZoneOffsetFromData);
80 // Tests for the second STANDARD data.
82 std::string DateTimeStartTokens;
83 std::string TimeZoneOffsetToTokens;
84 std::string TimeZoneOffsetFromTokens;
86 std::string RecurranceRuleData;
87 std::string RecurranceRuleDataTokens;
89 std::string CommentList;
90 std::string CommentListAltRep;
91 std::string CommentListLanguage;
92 std::string CommentListTokens;
94 std::string RecurranceDateData;
95 std::string RecurranceDateValue;
96 std::string RecurranceDateDataTimeZoneParam;
97 std::string RecurranceDateDataTokens;
99 std::string TimeZoneNameData;
100 std::string TimeZoneNameLanguage;
101 std::string TimeZoneNameTokens;
103 std::string XTokensData;
104 std::string XTokensDataTokens;
106 DateTimeStartData.clear();
107 TimeZoneOffsetToData.clear();
108 TimeZoneOffsetFromData.clear();
110 if (TestTimezone.TimezoneStandardCollection.size() > 1){
112 DateTimeStartData = TestTimezone.TimezoneStandardCollection[1].DateTimeStartData;
113 DateTimeStartTokens = TestTimezone.TimezoneStandardCollection[1].DateTimeStartTokens;
117 if (TestTimezone.TimezoneStandardCollection.size() > 1){
119 TimeZoneOffsetToData = TestTimezone.TimezoneStandardCollection[1].TimeZoneOffsetToData;
120 TimeZoneOffsetToTokens = TestTimezone.TimezoneStandardCollection[1].TimeZoneOffsetToTokens;
124 if (TestTimezone.TimezoneStandardCollection.size() > 1){
126 TimeZoneOffsetFromData = TestTimezone.TimezoneStandardCollection[1].TimeZoneOffsetFromData;
127 TimeZoneOffsetFromTokens = TestTimezone.TimezoneStandardCollection[1].TimeZoneOffsetFromTokens;
131 ASSERT_EQ("20160205T020000", DateTimeStartData);
132 ASSERT_EQ("MEEP=MOO", DateTimeStartTokens);
133 ASSERT_EQ("-0400", TimeZoneOffsetToData);
134 ASSERT_EQ("EXAMPLE=DATA", TimeZoneOffsetToTokens);
135 ASSERT_EQ("-0500", TimeZoneOffsetFromData);
136 ASSERT_EQ("LETS=GO", TimeZoneOffsetFromTokens);
138 // Tests for third STANDARD data.
140 DateTimeStartData.clear();
141 DateTimeStartTokens.clear();
142 TimeZoneOffsetToData.clear();
143 TimeZoneOffsetToTokens.clear();
144 TimeZoneOffsetFromData.clear();
145 TimeZoneOffsetFromTokens.clear();
147 if (TestTimezone.TimezoneStandardCollection.size() > 2){
149 DateTimeStartData = TestTimezone.TimezoneStandardCollection[2].DateTimeStartData;
150 DateTimeStartTokens = TestTimezone.TimezoneStandardCollection[2].DateTimeStartTokens;
154 if (TestTimezone.TimezoneStandardCollection.size() > 2){
156 TimeZoneOffsetToData = TestTimezone.TimezoneStandardCollection[2].TimeZoneOffsetToData;
157 TimeZoneOffsetToTokens = TestTimezone.TimezoneStandardCollection[2].TimeZoneOffsetToTokens;
161 if (TestTimezone.TimezoneStandardCollection.size() > 2){
163 TimeZoneOffsetFromData = TestTimezone.TimezoneStandardCollection[2].TimeZoneOffsetFromData;
164 TimeZoneOffsetFromTokens = TestTimezone.TimezoneStandardCollection[2].TimeZoneOffsetFromTokens;
168 if (TestTimezone.TimezoneStandardCollection.size() > 2 &&
169 TestTimezone.TimezoneStandardCollection[2].CommentList.size() > 0){
171 CommentList = TestTimezone.TimezoneStandardCollection[2].CommentList[0];
172 CommentListAltRep = TestTimezone.TimezoneStandardCollection[2].CommentListAltRep[0];
173 CommentListLanguage = TestTimezone.TimezoneStandardCollection[2].CommentListLanguage[0];
174 CommentListTokens = TestTimezone.TimezoneStandardCollection[2].CommentListTokens[0];
178 if (TestTimezone.TimezoneStandardCollection.size() > 2 &&
179 TestTimezone.TimezoneStandardCollection[2].RecurranceRuleData.size() > 0){
181 RecurranceRuleData = TestTimezone.TimezoneStandardCollection[2].RecurranceRuleData;
182 RecurranceRuleDataTokens = TestTimezone.TimezoneStandardCollection[2].RecurranceRuleDataTokens;
186 if (TestTimezone.TimezoneStandardCollection.size() > 2 &&
187 TestTimezone.TimezoneStandardCollection[2].RecurranceDateData.size() > 0){
189 RecurranceDateData = TestTimezone.TimezoneStandardCollection[2].RecurranceDateData[0];
190 RecurranceDateValue = TestTimezone.TimezoneStandardCollection[2].RecurranceDateDataValue[0];
191 RecurranceDateDataTimeZoneParam = TestTimezone.TimezoneStandardCollection[2].RecurranceDateDataTimeZoneParam[0];
192 RecurranceDateDataTokens = TestTimezone.TimezoneStandardCollection[2].RecurranceDateDataTokens[0];
196 if (TestTimezone.TimezoneStandardCollection.size() > 2 &&
197 TestTimezone.TimezoneStandardCollection[2].TimeZoneNameData.size() > 0){
199 TimeZoneNameData = TestTimezone.TimezoneStandardCollection[2].TimeZoneNameData[0];
200 TimeZoneNameLanguage = TestTimezone.TimezoneStandardCollection[2].TimeZoneNameLanguage[0];
201 TimeZoneNameTokens = TestTimezone.TimezoneStandardCollection[2].TimeZoneNameTokens[0];
205 if (TestTimezone.TimezoneStandardCollection.size() > 2 &&
206 TestTimezone.TimezoneStandardCollection[2].XTokensData.size() > 0){
208 XTokensData = TestTimezone.TimezoneStandardCollection[2].XTokensData[0];
209 XTokensDataTokens = TestTimezone.TimezoneStandardCollection[2].XTokensDataTokens[0];
213 ASSERT_EQ("20160206T020000", DateTimeStartData);
214 ASSERT_EQ("MEEP=MOO", DateTimeStartTokens);
215 ASSERT_EQ("-0400", TimeZoneOffsetToData);
216 ASSERT_EQ("EXAMPLE=DATA", TimeZoneOffsetToTokens);
217 ASSERT_EQ("-0500", TimeZoneOffsetFromData);
218 ASSERT_EQ("LETS=GO", TimeZoneOffsetFromTokens);
220 ASSERT_EQ("Example timezone comment.", CommentList);
221 ASSERT_EQ("null:nodata", CommentListAltRep);
222 ASSERT_EQ("kw", CommentListLanguage);
223 ASSERT_EQ("YO=YOYOS", CommentListTokens);
225 ASSERT_EQ("FREQ=DAILY;COUNT=10", RecurranceRuleData);
226 ASSERT_EQ("YAK=YES", RecurranceRuleDataTokens);
228 ASSERT_EQ("20160205,20160207,20160216,20160305", RecurranceDateData);
229 ASSERT_EQ("DATE", RecurranceDateValue);
230 ASSERT_EQ("Europe/Truro", RecurranceDateDataTimeZoneParam);
231 ASSERT_EQ("BEEP=BOOP", RecurranceDateDataTokens);
233 ASSERT_EQ("Example Timezone Name 1", TimeZoneNameData);
234 ASSERT_EQ("en", TimeZoneNameLanguage);
235 ASSERT_EQ("NOPE=YES", TimeZoneNameTokens);
237 ASSERT_EQ("Example Timezone Name 1", TimeZoneNameData);
238 ASSERT_EQ("en", TimeZoneNameLanguage);
240 ASSERT_EQ("Meep", XTokensData);
241 ASSERT_EQ("X-MOO", XTokensDataTokens);
244 XTokensDataTokens.clear();
246 if (TestTimezone.TimezoneStandardCollection.size() > 2 &&
247 TestTimezone.TimezoneStandardCollection[2].XTokensData.size() > 1){
249 XTokensData = TestTimezone.TimezoneStandardCollection[2].XTokensData[1];
250 XTokensDataTokens = TestTimezone.TimezoneStandardCollection[2].XTokensDataTokens[1];
254 ASSERT_EQ("Moop", XTokensData);
255 ASSERT_EQ("X-MOO", XTokensDataTokens);
258 XTokensDataTokens.clear();
260 if (TestTimezone.TimezoneStandardCollection.size() > 2 &&
261 TestTimezone.TimezoneStandardCollection[2].XTokensData.size() > 2){
263 XTokensData = TestTimezone.TimezoneStandardCollection[2].XTokensData[2];
264 XTokensDataTokens = TestTimezone.TimezoneStandardCollection[2].XTokensDataTokens[2];
268 ASSERT_EQ("Zaap", XTokensData);
269 ASSERT_EQ("X-MOO;MEEP=YIKES", XTokensDataTokens);
272 XTokensDataTokens.clear();
274 if (TestTimezone.TimezoneStandardCollection.size() > 2 &&
275 TestTimezone.TimezoneStandardCollection[2].XTokensData.size() > 3){
277 XTokensData = TestTimezone.TimezoneStandardCollection[2].XTokensData[3];
278 XTokensDataTokens = TestTimezone.TimezoneStandardCollection[2].XTokensDataTokens[3];
282 ASSERT_EQ("Fork", XTokensData);
283 ASSERT_EQ("X-ITEM", XTokensDataTokens);
286 XTokensDataTokens.clear();
288 if (TestTimezone.TimezoneStandardCollection.size() > 2 &&
289 TestTimezone.TimezoneStandardCollection[2].XTokensData.size() > 4){
291 XTokensData = TestTimezone.TimezoneStandardCollection[2].XTokensData[4];
292 XTokensDataTokens = TestTimezone.TimezoneStandardCollection[2].XTokensDataTokens[4];
296 ASSERT_EQ("Spoon", XTokensData);
297 ASSERT_EQ("X-ITEM", XTokensDataTokens);
300 XTokensDataTokens.clear();
302 if (TestTimezone.TimezoneStandardCollection.size() > 2 &&
303 TestTimezone.TimezoneStandardCollection[2].XTokensData.size() > 5){
305 XTokensData = TestTimezone.TimezoneStandardCollection[2].XTokensData[5];
306 XTokensDataTokens = TestTimezone.TimezoneStandardCollection[2].XTokensDataTokens[5];
310 ASSERT_EQ("Knife", XTokensData);
311 ASSERT_EQ("X-ITEM;DIRTY=NO", XTokensDataTokens);
314 XTokensDataTokens.clear();
316 if (TestTimezone.TimezoneStandardCollection.size() > 2 &&
317 TestTimezone.TimezoneStandardCollection[2].XTokensData.size() > 6){
319 XTokensData = TestTimezone.TimezoneStandardCollection[2].XTokensData[6];
320 XTokensDataTokens = TestTimezone.TimezoneStandardCollection[2].XTokensDataTokens[6];
324 ASSERT_EQ("1", XTokensData);
325 ASSERT_EQ("X-NOPE", XTokensDataTokens);
328 XTokensDataTokens.clear();
330 if (TestTimezone.TimezoneStandardCollection.size() > 2 &&
331 TestTimezone.TimezoneStandardCollection[2].XTokensData.size() > 7){
333 XTokensData = TestTimezone.TimezoneStandardCollection[2].XTokensData[7];
334 XTokensDataTokens = TestTimezone.TimezoneStandardCollection[2].XTokensDataTokens[7];
338 ASSERT_EQ("2", XTokensData);
339 ASSERT_EQ("X-NOPE", XTokensDataTokens);
342 XTokensDataTokens.clear();
344 if (TestTimezone.TimezoneStandardCollection.size() > 2 &&
345 TestTimezone.TimezoneStandardCollection[2].XTokensData.size() > 8){
347 XTokensData = TestTimezone.TimezoneStandardCollection[2].XTokensData[8];
348 XTokensDataTokens = TestTimezone.TimezoneStandardCollection[2].XTokensDataTokens[8];
352 ASSERT_EQ("3", XTokensData);
353 ASSERT_EQ("X-NOPE;LONG=YES", XTokensDataTokens);