Home | News | Projects | Releases
Bugs | RFE | Repositories | Help
unit-test: Refactor unit testing building/running/info collecting for build server
[xestiacalendar/.git] / source / tests / iCalendarFreeBusyTests / iCalendarFreeBusyLoad.cpp
1 // xestiacalendar_icalfreebusyload.h - Xestia Calendar iCalendar FreeBusy Component Unit Tests
2 //
3 // (c) 2016-2017 Xestia Software Development.
4 //
5 // This file is part of Xestia Calendar.
6 //
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.
10 //
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.
15 //
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/calendarfreebusy/CalendarFreeBusy.h"
20 #include <gtest/gtest.h>
22 class iCalendarFreeBusyLoadTests : public ::testing::Test
23 {
24 private:
25     virtual void SetUp()
26     {
27     }
28     
29     virtual void TearDown()
30     {
31     }
32 };
34 TEST_F(iCalendarFreeBusyLoadTests, BasicTests){
36         CalendarFreeBusyObject testFreeBusy;
37         
38         ASSERT_EQ(CALENDAROBJECTLOAD_MISSING, testFreeBusy.LoadFile("iCalendarFreeBusy-Missing.vcf"));
39         ASSERT_EQ(CALENDAROBJECTLOAD_CANNOTOPEN, testFreeBusy.LoadFile("iCalendarFreeBusy-InvalidPermissions.vcf"));
40         ASSERT_EQ(CALENDAROBJECTLOAD_OK, testFreeBusy.LoadFile("iCalendarFreeBusy-Load1.vcf"));
41         
42 }
44 TEST_F(iCalendarFreeBusyLoadTests, ObjectDataTests){
45         
46         CalendarFreeBusyObject testFreeBusy;
47         ASSERT_EQ(CALENDAROBJECTLOAD_OK, testFreeBusy.LoadFile("iCalendarFreeBusy-Load2.vcf"));
48         ASSERT_EQ(CALENDAROBJECTVALID_OK, testFreeBusy.ValidBaseObject());
49         
50         // Tests for DTSTAMP.
51         
52         ASSERT_EQ("20160131T173000Z", testFreeBusy.dateTimeStampData);
53         ASSERT_EQ("OTHER=PARAM", testFreeBusy.dateTimeStampTokens);
54         
55         // Tests for UID.
56         
57         ASSERT_EQ("b3a16392-ad86-4061-be53-c215af2306ff", testFreeBusy.uniqueID);
58         ASSERT_EQ("UNIQUEPARAM=CERTAINLY;OKAY=MAYBENOT", testFreeBusy.uniqueIDTokens);
59         
60         // Tests for CONTACT.
61         
62         std::string contactData;
63         std::string contactDataAltRep;
64         std::string contactDataLanguage;
65         std::string contactDataTokens;
66         
67         if (testFreeBusy.contactList.size() > 0){
68                 
69                 contactData = testFreeBusy.contactList[0];
70                 
71         }
72         
73         if (testFreeBusy.contactList.size() > 0){
74                 
75                 contactDataAltRep = testFreeBusy.contactListAltRep[0];
76                 
77         }
78         
79         if (testFreeBusy.contactList.size() > 0){
80                 
81                 contactDataLanguage = testFreeBusy.contactListLanguage[0];
82                 
83         }
84         
85         if (testFreeBusy.contactList.size() > 0){
86                 
87                 contactDataTokens = testFreeBusy.contactListTokens[0];
88                 
89         }
90         
91         ASSERT_EQ("Contact Person", contactData);
92         ASSERT_EQ("null:nodata", contactDataAltRep);
93         ASSERT_EQ("en-GB", contactDataLanguage);
94         ASSERT_EQ("EXAMPLE=TOKEN", contactDataTokens);
95         
96         // Tests for DTSTART.
97         
98         ASSERT_EQ("20160131T103000Z", testFreeBusy.dateTimeStartData);
99         ASSERT_EQ("DATE-TIME", testFreeBusy.dateTimeStartDataValue);
100         ASSERT_EQ("Europe/Truro", testFreeBusy.dateTimeStartDataTimeZoneID);
101         ASSERT_EQ("PARAMONE=YES;PARAMTWO=NO", testFreeBusy.dateTimeStartDataTokens);
103         // Tests for DTEND.
104         
105         ASSERT_EQ("20160131T183000Z", testFreeBusy.dateTimeEndData);
106         ASSERT_EQ("DATE-TIME", testFreeBusy.dateTimeEndDataValue);
107         ASSERT_EQ("Europe/Truro", testFreeBusy.dateTimeEndDataTimeZoneID);
108         ASSERT_EQ("PARAMFOUR=YES;PARAMTHREE=NO", testFreeBusy.dateTimeEndDataTokens);
109         
110         // Tests for ORGANIZER.
111         
112         ASSERT_EQ("mailto:organiser@example.com", testFreeBusy.organiserData);
113         ASSERT_EQ("ExampleOrganiser", testFreeBusy.organiserDataCommonName);
114         ASSERT_EQ("null:nodata", testFreeBusy.organiserDataDirectoryEntry);
115         ASSERT_EQ("mailto:organiser.noreply@example.com", testFreeBusy.organiserDataSentByParam);
116         ASSERT_EQ("kw", testFreeBusy.organiserDataLanguage);
117         ASSERT_EQ("HAPPY=DAYS", testFreeBusy.organiserDataTokens);
118         
119         // Tests for URL.
121         ASSERT_EQ("http://www.example.com/", testFreeBusy.urlData);
122         ASSERT_EQ("EXTERNAL=YES", testFreeBusy.urlDataTokens);
123         
124         // Tests for ATTENDEE. First ATTENDEE property.
126         std::string attendeeDataMember;
127         std::string attendeeDataDelegatedFrom;
128         std::string attendeeDataDelegatedTo;
129         std::string attendeeDataRole;
130         std::string attendeeDataRSVP;
131         std::string attendeeDataDirectoryEntry;
132         std::string attendeeDataSentBy;
133         std::string attendeeDataCommonName;
134         std::string attendeeDataCalendarUserType;
135         std::string attendeeDataParticipationStatus;
136         std::string attendeeDataLanguage;
137         std::string attendeeDataTokens;
138         std::string attendeeData;
140         if (testFreeBusy.attendeeList.begin() != testFreeBusy.attendeeList.end()){
141                 
142                 attendeeData = testFreeBusy.attendeeList[0];
143                 
144         }
145         
146         ASSERT_EQ("Attendee One", attendeeData);
147         
148         // Second ATTENDEE property.
149         
150         attendeeData.clear();
151         
152         if (testFreeBusy.attendeeList.size() > 1){
153                 
154                 attendeeData = testFreeBusy.attendeeList[1];
155                 
156         }
158         if (testFreeBusy.attendeeList.size() > 1){
159                 
160                 attendeeDataDelegatedFrom = testFreeBusy.attendeeListDelegatedFrom[1];
161                 
162         }
163         
164         if (testFreeBusy.attendeeList.size() > 1){
165                 
166                 attendeeDataDelegatedTo = testFreeBusy.attendeeListDelegatedTo[1];
167                 
168         }
170         if (testFreeBusy.attendeeList.size() > 1){
171                 
172                 attendeeDataRole = testFreeBusy.attendeeListRole[1];
173                 
174         }
175         
176         if (testFreeBusy.attendeeList.size() > 1){
177                 
178                 attendeeDataRSVP = testFreeBusy.attendeeListRSVP[1];
179                 
180         }
181         
182         ASSERT_EQ("Attendee Two", attendeeData);
183         ASSERT_EQ("mailto:delegated.from@example.com", attendeeDataDelegatedFrom);
184         ASSERT_EQ("mailto:delegated.to@example.com", attendeeDataDelegatedTo);
185         ASSERT_EQ("CHAIR", attendeeDataRole);
186         ASSERT_EQ("TRUE", attendeeDataRSVP);
188         // Third ATTENDEE property.
189         
190         attendeeData.clear();
191         
192         if (testFreeBusy.attendeeList.size() > 2){
193                 
194                 attendeeData = testFreeBusy.attendeeList[2];
195                 
196         }
198         if (testFreeBusy.attendeeList.size() > 2){
199                 
200                 attendeeDataDirectoryEntry = testFreeBusy.attendeeListDirectoryEntry[2];
201                 
202         }
203         
204         if (testFreeBusy.attendeeList.size() > 2){
205                 
206                 attendeeDataSentBy = testFreeBusy.attendeeListSentBy[2];
207                 
208         }
210         if (testFreeBusy.attendeeList.size() > 2){
211                 
212                 attendeeDataCommonName = testFreeBusy.attendeeListCommonName[2];
213                 
214         }
215         
216         if (testFreeBusy.attendeeList.size() > 2){
217                 
218                 attendeeDataCalendarUserType = testFreeBusy.attendeeListCalendarUserType[2];
219                 
220         }
222         if (testFreeBusy.attendeeList.size() > 2){
223                 
224                 attendeeDataParticipationStatus = testFreeBusy.attendeeListParticipationStatus[2];
225                 
226         }
228         if (testFreeBusy.attendeeList.size() > 2){
229                 
230                 attendeeDataLanguage = testFreeBusy.attendeeListLanguage[2];
231                 
232         }
233         
234         if (testFreeBusy.attendeeList.size() > 2){
235                 
236                 attendeeDataTokens = testFreeBusy.attendeeListTokens[2];
237                 
238         }
239         
240         ASSERT_EQ("Attendee Three", attendeeData);
241         ASSERT_EQ("null:nodata", attendeeDataDirectoryEntry);
242         ASSERT_EQ("mailto:sent.by@example.com", attendeeDataSentBy);
243         ASSERT_EQ("Attendee The Third", attendeeDataCommonName);
244         ASSERT_EQ("INDIVIDUAL", attendeeDataCalendarUserType);
245         ASSERT_EQ("ACCEPTED", attendeeDataParticipationStatus);
246         ASSERT_EQ("kw", attendeeDataLanguage);
247         ASSERT_EQ("EXAMPLE=DATA", attendeeDataTokens);
248         
249         // Get the first COMMENT.
250         
251         std::string commentData;
252         
253         if (testFreeBusy.commentList.begin() != testFreeBusy.commentList.end()){
254                 
255                 commentData = testFreeBusy.commentList[0];
256                 
257         }
258         
259         ASSERT_EQ("This is the first comment.", commentData);
260         
261         // Get the second COMMENT.
262         
263         commentData.clear();
264         
265         std::string commentDataAltRep;
266         std::string commentDataLanguage;
267         
268         if (testFreeBusy.commentList.size() > 1){
269                 
270                 commentData = testFreeBusy.commentList[1];
271                 
272         }
273         
274         if (testFreeBusy.commentList.size() > 1){
275                 
276                 commentDataAltRep = testFreeBusy.commentListAltRep[1];
277                 
278         }
279         
280         if (testFreeBusy.commentList.size() > 1){
281                 
282                 commentDataLanguage = testFreeBusy.commentListLanguage[1];
283                 
284         }
285         
286         ASSERT_EQ("This is the second comment.", commentData);
287         ASSERT_EQ("null:nodata", commentDataAltRep);
288         ASSERT_EQ("en", commentDataLanguage);
289         
290         // Get the third COMMENT.
291         
292         commentData.clear();
293         
294         std::string commentDataTokens;
295         
296         if (testFreeBusy.commentList.size() > 2){
297                 
298                 commentData = testFreeBusy.commentList[2];
299                 
300         }
301         
302         if (testFreeBusy.commentList.size() > 2){
303                 
304                 commentDataTokens = testFreeBusy.commentListTokens[2];
305                 
306         }
307         
308         ASSERT_EQ("This is the third comment.", commentData);
309         ASSERT_EQ("ZEBRAS=YES", commentDataTokens);
310         
311         // Get the first FREEBUSY.
312         
313         std::string freeBusyData;
314         
315         if (testFreeBusy.freeBusyList.begin() != testFreeBusy.freeBusyList.end()){
316                 
317                 freeBusyData = testFreeBusy.freeBusyList[0];
318                 
319         }
320         
321         ASSERT_EQ("20160202T210000Z/PT1H", freeBusyData);
322         
323         // Get the second FREEBUSY.
324         
325         freeBusyData.clear();
326         
327         std::string freeBusyType;
328         
329         if (testFreeBusy.freeBusyList.size() > 1){
330                 
331                 freeBusyData = testFreeBusy.freeBusyList[1];
332                 
333         }
334         
335         if (testFreeBusy.freeBusyListType.size() > 1){
336                 
337                 freeBusyType = testFreeBusy.freeBusyListType[1];
338                 
339         }
341         ASSERT_EQ("FREE", freeBusyType);        
342         ASSERT_EQ("20160202T220000Z/PT1H", freeBusyData);       
343         
344         // Get the third FREEBUSY.
345         
346         freeBusyData.clear();
347         freeBusyType.clear();
348         
349         std::string FreeBusyTokens;
350         
351         if (testFreeBusy.freeBusyList.size() > 2){
352                 
353                 freeBusyData = testFreeBusy.freeBusyList[2];
354                 
355         }
356         
357         if (testFreeBusy.freeBusyListType.size() > 2){
358                 
359                 freeBusyType = testFreeBusy.freeBusyListType[2];
360                 
361         }
362         
363         if (testFreeBusy.freeBusyListTokens.size() > 2){
364                 
365                 FreeBusyTokens = testFreeBusy.freeBusyListTokens[2];
366                 
367         }
369         ASSERT_EQ("BUSY-UNAVAILABLE", freeBusyType);    
370         ASSERT_EQ("20160202T230000Z/PT9H", freeBusyData);
371         ASSERT_EQ("RESULT=ARGH;TEST=YES", FreeBusyTokens);
372         
373         // Get the first REQUEST-STATUS.
375         std::string requestStatus;
376         
377         if (testFreeBusy.requestStatusData.begin() != testFreeBusy.requestStatusData.end()){
378                 
379                 requestStatus = testFreeBusy.requestStatusData[0];
380                 
381         }
382         
383         ASSERT_EQ("2.0;Success", requestStatus);
384         
385         // Get the second REQUEST-STATUS.
386         
387         requestStatus.clear();
388         
389         std::string requestLanguage;
390         
391         if (testFreeBusy.requestStatusData.size() > 1){
392                 
393                 requestStatus = testFreeBusy.requestStatusData[1];
394                 
395         }
396         
397         if (testFreeBusy.requestStatusData.size() > 1){
398                 
399                 requestLanguage = testFreeBusy.requestStatusLanguage[1];
400                 
401         }
402         
403         ASSERT_EQ("3.42;Really big irrecoverable error caused by the user", requestStatus);
404         ASSERT_EQ("en", requestLanguage);
405         
406         // Get the third REQUEST-STATUS.
407         
408         requestStatus.clear();
409         
410         std::string requestTokens;
411         
412         if (testFreeBusy.requestStatusData.size() > 2){
413                 
414                 requestStatus = testFreeBusy.requestStatusData[2];
415                 
416         }
417         
418         if (testFreeBusy.requestStatusData.size() > 2){
419                 
420                 requestTokens = testFreeBusy.requestStatusTokens[2];
421                 
422         }
423         
424         ASSERT_EQ("3.7;Invalid calendar user", requestStatus);
425         ASSERT_EQ("USER=MISSING", requestTokens);
426         
427         // Get the first X-EXAMPLE1 token.
428         
429         std::string xTokenName;
430         std::string xTokenData;
431         
432         if (testFreeBusy.xTokensData.size() != 0 ){
433         
434                 xTokenData = testFreeBusy.xTokensData[0];
435                 
436         }
438         if (testFreeBusy.xTokensData.size() != 0){
439         
440                 xTokenName = testFreeBusy.xTokensDataTokens[0];
441                 
442         }
443         
444         ASSERT_EQ("Moo", xTokenData);
445         ASSERT_EQ("X-EXAMPLE1", xTokenName);
446         
447         // Get the second X-EXAMPLE1 token.
449         xTokenName.clear();
450         xTokenData.clear();
451         
452         if (testFreeBusy.xTokensData.size() > 1){
453         
454                 xTokenData = testFreeBusy.xTokensData[1];
455                 
456         }
458         if (testFreeBusy.xTokensData.size() > 1){
459         
460                 xTokenName = testFreeBusy.xTokensDataTokens[1];
461                 
462         }
463         
464         ASSERT_EQ("Meep", xTokenData);
465         ASSERT_EQ("X-EXAMPLE1;ANIMAL=NOPE", xTokenName);
466         
467         // Get the third X-EXAMPLE1 token.
469         xTokenName.clear();
470         xTokenData.clear();
471         
472         if (testFreeBusy.xTokensData.size() > 2){
473         
474                 xTokenData = testFreeBusy.xTokensData[2];
475                 
476         }
478         if (testFreeBusy.xTokensData.size() > 2){
479         
480                 xTokenName = testFreeBusy.xTokensDataTokens[2];
481                 
482         }
483         
484         ASSERT_EQ("Meow", xTokenData);
485         ASSERT_EQ("X-EXAMPLE1;ANIMAL=CAT", xTokenName);
486         
487         // Get the first X-EXAMPLE2 token.
488         
489         xTokenName.clear();
490         xTokenData.clear();
491         
492         if (testFreeBusy.xTokensData.size() > 3){
493         
494                 xTokenData = testFreeBusy.xTokensData[3];
495                 
496         }
498         if (testFreeBusy.xTokensData.size() > 3){
499         
500                 xTokenName = testFreeBusy.xTokensDataTokens[3];
501                 
502         }
503         
504         ASSERT_EQ("Dish", xTokenData);
505         ASSERT_EQ("X-EXAMPLE2", xTokenName);
506         
507         // Get the second X-EXAMPLE2 token.
508         
509         xTokenName.clear();
510         xTokenData.clear();
511         
512         if (testFreeBusy.xTokensData.size() > 4){
513         
514                 xTokenData = testFreeBusy.xTokensData[4];
515                 
516         }
518         if (testFreeBusy.xTokensData.size() > 4){
519         
520                 xTokenName = testFreeBusy.xTokensDataTokens[4];
521                 
522         }
523         
524         ASSERT_EQ("Fork", xTokenData);
525         ASSERT_EQ("X-EXAMPLE2;OBJECT=KITCHEN", xTokenName);
526         
527         // Get the third X-EXAMPLE2 token.
528         
529         xTokenName.clear();
530         xTokenData.clear();
531         
532         if (testFreeBusy.xTokensData.size() > 5){
533         
534                 xTokenData = testFreeBusy.xTokensData[5];
535                 
536         }
538         if (testFreeBusy.xTokensData.size() > 5){
539         
540                 xTokenName = testFreeBusy.xTokensDataTokens[5];
541                 
542         }
543         
544         ASSERT_EQ("Table", xTokenData);
545         ASSERT_EQ("X-EXAMPLE2;OBJECT=LIVINGROOM", xTokenName);
546         
547         // Get the X-STATUS token.
548         
549         xTokenName.clear();
550         xTokenData.clear();
551         
552         if (testFreeBusy.xTokensData.size() > 6){
553         
554                 xTokenData = testFreeBusy.xTokensData[6];
555                 
556         }
558         if (testFreeBusy.xTokensData.size() > 6){
559         
560                 xTokenName = testFreeBusy.xTokensDataTokens[6];
561                 
562         }
563         
564         ASSERT_EQ("Idle", xTokenData);
565         ASSERT_EQ("X-STATUS;HOLIDAY=YES", xTokenName);
566         
567         // Get the X-TRANSPORT token.
568         
569         xTokenName.clear();
570         xTokenData.clear();
571         
572         if (testFreeBusy.xTokensData.size() > 7){
573         
574                 xTokenData = testFreeBusy.xTokensData[7];
575                 
576         }
578         if (testFreeBusy.xTokensData.size() > 7){
579         
580                 xTokenName = testFreeBusy.xTokensDataTokens[7];
581                 
582         }
583         
584         ASSERT_EQ("Private Hire", xTokenData);
585         ASSERT_EQ("X-TRANSPORT;PUBLIC=NO", xTokenName);
586         
587         // Get the X-PHANTOM-STATUS token.
588         
589         xTokenName.clear();
590         xTokenData.clear();
591         
592         if (testFreeBusy.xTokensData.size() > 8){
593         
594                 xTokenData = testFreeBusy.xTokensData[8];
595                 
596         }
598         if (testFreeBusy.xTokensData.size() > 8){
599         
600                 xTokenName = testFreeBusy.xTokensDataTokens[8];
601                 
602         }
603         
604         ASSERT_EQ("None", xTokenData);
605         ASSERT_EQ("X-PHANTOM-STATUS;HELP=NONE", xTokenName);
606         
Xestia Software Development
Yn Maystri
© 2006 - 2019 Xestia Software Development
Software

Xestia Address Book
Xestia Calendar
Development

Xestia Gelforn
Everything else

About
News
Privacy Policy