Home | News | Projects | Releases
Bugs | RFE | Repositories | Help
Version 0.06 release
[xestiacalendar/.git] / source / tests / CommonFunctionsTests / CommonFunctionsTests.cpp
1 // xestiacalendar_commonfunctions.h - Xestia Calendar Common Functions 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 "../common/file.h"
20 #include "../common/text.h"
21 #include "../common/colour.h"
22 #include "../common/monthviewgen.h"
23 #include <gtest/gtest.h>
25 class CommonFunctionsTests : public ::testing::Test
26 {
27 private:
28     virtual void SetUp()
29     {
30     }
31     
32     virtual void TearDown()
33     {
34     }
35 };
37 TEST_F(CommonFunctionsTests, FileTests){
38         
39         ASSERT_EQ(false, FileExists("iCalendarEvent-Missing.vcf"));
40         ASSERT_EQ(true, FileExists("iCalendarEvent-InvalidPermissions.vcf"));
41         
42 }
44 TEST_F(CommonFunctionsTests, ProcessTextVectorsTests){
45         
46         // Setup the objects to be used for processing.
47         
48         vector<string> textPropertiesExample1;
49         vector<string> textValueExample1;
50         multimap<string, string> textExample1TestResult;
51         
52         textPropertiesExample1.push_back("ATTENDEE");
53         textValueExample1.push_back("Example Attendee 1");
55         textPropertiesExample1.push_back("ATTENDEE");
56         textValueExample1.push_back("Example Attendee 2");
57         
58         textPropertiesExample1.push_back("ATTENDEE");
59         textValueExample1.push_back("Example Attendee 3");
60         
61         textPropertiesExample1.push_back("CATEGORIES");
62         textValueExample1.push_back("CATEGORY 1");
64         textPropertiesExample1.push_back("CATEGORIES");
65         textValueExample1.push_back("CATEGORY 2");
66         
67         textPropertiesExample1.push_back("CATEGORIES");
68         textValueExample1.push_back("CATEGORY 3");
70         textPropertiesExample1.push_back("COMMENT");
71         textValueExample1.push_back("This is the first comment.");
73         textPropertiesExample1.push_back("COMMENT");
74         textValueExample1.push_back("This is the second comment.");
75         
76         textPropertiesExample1.push_back("COMMENT");
77         textValueExample1.push_back("This is the third comment.");
79         textPropertiesExample1.push_back("CONTACT;TEST=VALUE");
80         textValueExample1.push_back("First Contact");
82         textPropertiesExample1.push_back("CONTACT;LAZY=NOPE");
83         textValueExample1.push_back("Second Contact");
85         textPropertiesExample1.push_back("CONTACT;SETUP=NO");
86         textValueExample1.push_back("Third Contact");
87         
88         textPropertiesExample1.push_back("RESOURCES;ROOM=YES");
89         textValueExample1.push_back("First Resource Widget");
91         textPropertiesExample1.push_back("RESOURCES;ROOM=NO");
92         textValueExample1.push_back("Second Resource Widget");
94         textPropertiesExample1.push_back("RESOURCES;ROOM=UNKNOWN");
95         textValueExample1.push_back("Third Resource Widget");
97         textPropertiesExample1.push_back("RELATED;RELATION=NO");
98         textValueExample1.push_back("First Relation");
100         textPropertiesExample1.push_back("RELATED;RELATION=YES");
101         textValueExample1.push_back("Second Relation");
103         textPropertiesExample1.push_back("RELATED;RELATION=MAYBE");
104         textValueExample1.push_back("Third Relation");
106         // Examples 1 & 2: ATTENDEE
108         textExample1TestResult.insert(make_pair("ATTENDEE", "Example Attendee 1"));
109         textExample1TestResult.insert(make_pair("ATTENDEE", "Example Attendee 2"));
110         textExample1TestResult.insert(make_pair("ATTENDEE", "Example Attendee 3"));
111         
112         ASSERT_EQ(textExample1TestResult, ProcessTextVectors(&textPropertiesExample1, &textValueExample1, true, "ATTENDEE"));
114         textExample1TestResult.clear();
115         textExample1TestResult.insert(make_pair("ATTENDEE", "Example Attendee 1"));
117         ASSERT_EQ(textExample1TestResult, ProcessTextVectors(&textPropertiesExample1, &textValueExample1, false, "ATTENDEE"));
119         // Examples 3 & 4: CATEGORIES
121         textExample1TestResult.clear();
122         textExample1TestResult.insert(make_pair("CATEGORIES", "CATEGORY 1"));
123         textExample1TestResult.insert(make_pair("CATEGORIES", "CATEGORY 2"));
124         textExample1TestResult.insert(make_pair("CATEGORIES", "CATEGORY 3"));
126         ASSERT_EQ(textExample1TestResult, ProcessTextVectors(&textPropertiesExample1, &textValueExample1, true, "CATEGORIES"));
128         textExample1TestResult.clear();
129         textExample1TestResult.insert(make_pair("CATEGORIES", "CATEGORY 1"));
131         // Examples 5 & 6: COMMENT
133         ASSERT_EQ(textExample1TestResult, ProcessTextVectors(&textPropertiesExample1, &textValueExample1, false, "CATEGORIES"));
135         textExample1TestResult.clear();
136         textExample1TestResult.insert(make_pair("COMMENT", "This is the first comment."));
137         textExample1TestResult.insert(make_pair("COMMENT", "This is the second comment."));
138         textExample1TestResult.insert(make_pair("COMMENT", "This is the third comment."));
139         
140         ASSERT_EQ(textExample1TestResult, ProcessTextVectors(&textPropertiesExample1, &textValueExample1, true, "COMMENT"));
142         textExample1TestResult.clear();
143         textExample1TestResult.insert(make_pair("COMMENT", "This is the first comment."));
145         // Examples 7 & 8: CONTACT;(properties)
147         ASSERT_EQ(textExample1TestResult, ProcessTextVectors(&textPropertiesExample1, &textValueExample1, false, "COMMENT"));
149         textExample1TestResult.clear();
150         textExample1TestResult.insert(make_pair("CONTACT;TEST=VALUE", "First Contact"));
151         textExample1TestResult.insert(make_pair("CONTACT;LAZY=NOPE", "Second Contact"));
152         textExample1TestResult.insert(make_pair("CONTACT;SETUP=NO", "Third Contact"));
153         
154         ASSERT_EQ(textExample1TestResult, ProcessTextVectors(&textPropertiesExample1, &textValueExample1, true, "CONTACT"));
156         textExample1TestResult.clear();
157         textExample1TestResult.insert(make_pair("CONTACT;TEST=VALUE", "First Contact"));
159         // Examples 9 & 10: RESOURCES;(properties)
161         ASSERT_EQ(textExample1TestResult, ProcessTextVectors(&textPropertiesExample1, &textValueExample1, false, "CONTACT"));
163         textExample1TestResult.clear();
164         textExample1TestResult.insert(make_pair("RESOURCES;ROOM=YES", "First Resource Widget"));
165         textExample1TestResult.insert(make_pair("RESOURCES;ROOM=NO", "Second Resource Widget"));
166         textExample1TestResult.insert(make_pair("RESOURCES;ROOM=UNKNOWN", "Third Resource Widget"));
168         ASSERT_EQ(textExample1TestResult, ProcessTextVectors(&textPropertiesExample1, &textValueExample1, true, "RESOURCES"));
170         textExample1TestResult.clear();
171         textExample1TestResult.insert(make_pair("RESOURCES;ROOM=YES", "First Resource Widget"));
173         ASSERT_EQ(textExample1TestResult, ProcessTextVectors(&textPropertiesExample1, &textValueExample1, false, "RESOURCES"));
175         // Examples 11 & 12: RELATED;(properties)
177         textExample1TestResult.clear();
178         textExample1TestResult.insert(make_pair("RELATED;RELATION=NO", "First Relation"));
179         textExample1TestResult.insert(make_pair("RELATED;RELATION=YES", "Second Relation"));
180         textExample1TestResult.insert(make_pair("RELATED;RELATION=MAYBE", "Third Relation"));
182         ASSERT_EQ(textExample1TestResult, ProcessTextVectors(&textPropertiesExample1, &textValueExample1, true, "RELATED"));
184         textExample1TestResult.clear();
185         textExample1TestResult.insert(make_pair("RELATED;RELATION=NO", "First Relation"));
187         ASSERT_EQ(textExample1TestResult, ProcessTextVectors(&textPropertiesExample1, &textValueExample1, false, "RELATED"));
191 TEST_F(CommonFunctionsTests, SplitValuesTests){
192         
193         map<string, string> textExample1TestResult;
194         
195         textExample1TestResult.insert(make_pair("RELATION", "NO"));
196         textExample1TestResult.insert(make_pair("TEST", "YES"));
197         textExample1TestResult.insert(make_pair("DATA", "SOMEDATA"));
198         
199         ASSERT_EQ(textExample1TestResult, SplitValues("TEST;RELATION=NO;TEST=YES;DATA=SOMEDATA"));
200         
203 TEST_F(CommonFunctionsTests, SplitNameValueTests){
204         
205         PropertyNameValue nameValueResult;
206                 
207         nameValueResult = SplitNameValue("TEST=OK");
208         
209         string propertyName = nameValueResult.name;
210         string propertyValue = nameValueResult.value;
211         
212         ASSERT_EQ(propertyName, "TEST");
213         ASSERT_EQ(propertyValue, "OK");
214         
217 TEST_F(CommonFunctionsTests, HexToInt){
218         
219         string value1 = "10";           // 16
220         string value2 = "50";           // 80
221         string value3 = "4F";           // 79
222         string value4 = "FF";           // 255
223         string value5 = "FFF";          // 4095
224         string value6 = "FFFF";         // 65535
225         string value7 = "75AB";         // 30123
226         string value8 = "2AC";          // 684
227         string value9 = "!";            // Fail
228         string value10 = "4BZ";         // Fail
229         string value11 = "Z?!$";        // Fail
230         
231         int outputValue = 0;
232         bool result = false;
233         
234         result = HexToInt(&value1, &outputValue);
235         
236         ASSERT_EQ(result, true);
237         ASSERT_EQ(outputValue, 16);
239         result = HexToInt(&value2, &outputValue);       
240         ASSERT_EQ(result, true);
241         ASSERT_EQ(outputValue, 80);
243         result = HexToInt(&value3, &outputValue);       
244         ASSERT_EQ(result, true);
245         ASSERT_EQ(outputValue, 79);
246         
247         result = HexToInt(&value4, &outputValue);       
248         ASSERT_EQ(result, true);
249         ASSERT_EQ(outputValue, 255);
250         
251         result = HexToInt(&value5, &outputValue);       
252         ASSERT_EQ(result, true);
253         ASSERT_EQ(outputValue, 4095);
255         result = HexToInt(&value6, &outputValue);       
256         ASSERT_EQ(result, true);
257         ASSERT_EQ(outputValue, 65535);
258         
259         result = HexToInt(&value7, &outputValue);       
260         ASSERT_EQ(result, true);
261         ASSERT_EQ(outputValue, 30123);
262         
263         result = HexToInt(&value8, &outputValue);       
264         ASSERT_EQ(result, true);
265         ASSERT_EQ(outputValue, 684);
266         
267         result = HexToInt(&value9, &outputValue);
268         ASSERT_EQ(result, false);
270         result = HexToInt(&value10, &outputValue);      
271         ASSERT_EQ(result, false);
272         
273         result = HexToInt(&value11, &outputValue);
274         ASSERT_EQ(result, false);
278 TEST_F(CommonFunctionsTests, SplitPathFilename){
279         
280         // Setup the file split.
281         
282         string pathFilenameOriginal = "/example/file/yay.txt";
283         string path = "";
284         string file = "";
285         
286         SplitPathFilename(&pathFilenameOriginal, &path, &file);
287         
288         ASSERT_EQ("/example/file/", path);
289         ASSERT_EQ("yay.txt", file);
290         
291         pathFilenameOriginal = "/a/path/with/lots/of/bits/in/andthenthis.html";
292         path.clear();
293         file.clear();
294         
295         SplitPathFilename(&pathFilenameOriginal, &path, &file);
296         
297         ASSERT_EQ("/a/path/with/lots/of/bits/in/", path);
298         ASSERT_EQ("andthenthis.html", file);
300         pathFilenameOriginal = "/one/more/for/a/laugh/hahaha.zip";
301         path.clear();
302         file.clear();
303         
304         SplitPathFilename(&pathFilenameOriginal, &path, &file);
305         
306         ASSERT_EQ("/one/more/for/a/laugh/", path);
307         ASSERT_EQ("hahaha.zip", file);
311 TEST_F(CommonFunctionsTests, ColourStruct){
312         
313         Colour colour1;
314         Colour colour2;
315         Colour colour3;
316         Colour colour4;
317         
318         colour1.red = 0;
319         colour1.green = 0;
320         colour1.blue = 0;
321         colour1.alpha = 0;
323         colour2.red = 512;
324         colour2.green = 512;
325         colour2.blue = 512;
326         colour2.alpha = 512;
328         colour3.red = 16;
329         colour3.green = 16;
330         colour3.blue = 16;
331         colour3.alpha = 16;
333         colour4.red = 80;
334         colour4.green = 80;
335         colour4.blue = 80;
336         colour4.alpha = 80;
338         ASSERT_EQ("#00000000", (string)colour1);
339         ASSERT_EQ("#FFFFFFFF", (string)colour2);
340         ASSERT_EQ("#10101010", (string)colour3);
341         ASSERT_EQ("#50505050", (string)colour4);
343         string colourInput1 = "#204040FF";
344         string colourInput2 = "#408080FF";
345         string colourInput3 = "#A0A0A000";
346         string colourInput4 = "#FFFFFF20";
347         
348         Colour colour5;
349         Colour colour6;
350         Colour colour7;
351         Colour colour8;
352         
353         colour5 = colourInput1;
354         colour6 = colourInput2;
355         colour7 = colourInput3;
356         colour8 = colourInput4;
357         
358         ASSERT_EQ(32, colour5.red);
359         ASSERT_EQ(64, colour5.green);
360         ASSERT_EQ(64, colour5.blue);
361         ASSERT_EQ(255, colour5.alpha);
363         ASSERT_EQ(64, colour6.red);
364         ASSERT_EQ(128, colour6.green);
365         ASSERT_EQ(128, colour6.blue);
366         ASSERT_EQ(255, colour6.alpha);
368         ASSERT_EQ(160, colour7.red);
369         ASSERT_EQ(160, colour7.green);
370         ASSERT_EQ(160, colour7.blue);
371         ASSERT_EQ(0, colour7.alpha);
373         ASSERT_EQ(255, colour8.red);
374         ASSERT_EQ(255, colour8.green);
375         ASSERT_EQ(255, colour8.blue);
376         ASSERT_EQ(32, colour8.alpha);
379 TEST_F(CommonFunctionsTests, OutputText){
380         
381         string inputText1 = "This is an example text.";
382         string outputText1 = "This is an example text.";
383         string resultText1 = "";
384         
385         string inputText2 = "This is the first sentence. This is the second sentence"
386                 ". This is the third sentence. This is the fourth sentence. This "
387                 "is the fifth sentence.";
388         string outputText2 = "This is the first sentence. This is the second sentence"
389                 ". This is the third se\n ntence. This is the fourth sentence. This "
390                 "is the fifth sentence.";
391         string resultText2 = "";
392         
393         string inputText3 = "This is the first sentence. This is the second sentence"
394                 ". This is the third sentence. This is the fourth sentence. This "
395                 "is the fifth sentence. This is the sixth sentence. This is the s"
396                 "eventh sentence. This is the eighth sentence. This is the ninth "
397                 "sentence. This is the tenth sentence.";
398         string outputText3 = "This is the first sentence. This is the second sentence. This is the third se\n"
399                 " ntence. This is the fourth sentence. This is the fifth sentence. This is the\n"
400                 "  sixth sentence. This is the seventh sentence. This is the eighth sentence. \n"
401                 " This is the ninth sentence. This is the tenth sentence.";
402         string resultText3 = "";
403         
404         string inputText4 = "This is the first sentence. This is the second sentence"
405                 ". This is the third sentence. This is the fourth sentence. This "
406                 "is the fifth sentence. This is the sixth sentence. This is the s"
407                 "eventh sentence. This is the eighth sentence. This is the ninth "
408                 "sentence. This is the tenth sentence. This is the eleventh sente"
409                 "nce. This is the twelfth sentence. This is the thirteenth senten"
410                 "ce. This is the fourteenth sentence. This is the fifteenth sente"
411                 "nce.";
412         string outputText4 = "This is the first sentence. This is the second sentence. This is the third se\n"
413                 " ntence. This is the fourth sentence. This is the fifth sentence. This is the\n"
414                 "  sixth sentence. This is the seventh sentence. This is the eighth sentence. \n"
415                 " This is the ninth sentence. This is the tenth sentence. This is the eleventh\n"
416                 "  sentence. This is the twelfth sentence. This is the thirteenth sentence. Th\n"
417                 " is is the fourteenth sentence. This is the fifteenth sentence.";
418         string resultText4 = "";
419         
420         string inputText5 = "This is the first sentence. This is the second sentence"
421                 ". This is the third sentence. This is the fourth sentence. This "
422                 "is the fifth sentence. This is the sixth sentence. This is the s"
423                 "eventh sentence. This is the eighth sentence. This is the ninth "
424                 "sentence. This is the tenth sentence. This is the eleventh sente"
425                 "nce. This is the twelfth sentence. This is the thirteenth senten"
426                 "ce. This is the fourteenth sentence. This is the fifteenth sente"
427                 "nce. This is the sixteenth sentence. This is the seventeenth sen"
428                 "tence. This is the eighteenth sentence. This is the ninteenth se"
429                 "ntence. This is the twentieth sentence.";
430         string outputText5 = "This is the first sentence. This is the second sentence. This is the third se\n"
431                 " ntence. This is the fourth sentence. This is the fifth sentence. This is the\n"
432                 "  sixth sentence. This is the seventh sentence. This is the eighth sentence. \n"
433                 " This is the ninth sentence. This is the tenth sentence. This is the eleventh\n"
434                 "  sentence. This is the twelfth sentence. This is the thirteenth sentence. Th\n"
435                 " is is the fourteenth sentence. This is the fifteenth sentence. This is the s\n"
436                 " ixteenth sentence. This is the seventeenth sentence. This is the eighteenth \n"
437                 " sentence. This is the ninteenth sentence. This is the twentieth sentence.";
438         string resultText5;
440         resultText1 = OutputText(&inputText1);
441         resultText2 = OutputText(&inputText2);
442         resultText3 = OutputText(&inputText3);
443         resultText4 = OutputText(&inputText4);
444         resultText5 = OutputText(&inputText5);
446         ASSERT_EQ(resultText1, outputText1);
447         ASSERT_EQ(resultText2, outputText2);
448         ASSERT_EQ(resultText3, outputText3);
449         ASSERT_EQ(resultText4, outputText4);
450         ASSERT_EQ(resultText5, outputText5);
454 TEST_F(CommonFunctionsTests, PreviousMonthNumberofDays){
456         // Test the year 2015 (does not have a leap year).
457         
458         ASSERT_EQ(30, PreviousMonthNumberofDays(12, 2015));
459         
460         // Test the year 2016 (has a leap year).
461         
462         ASSERT_EQ(31, PreviousMonthNumberofDays(1, 2016));
463         ASSERT_EQ(31, PreviousMonthNumberofDays(2, 2016));
464         ASSERT_EQ(29, PreviousMonthNumberofDays(3, 2016));
465         ASSERT_EQ(31, PreviousMonthNumberofDays(4, 2016));
466         ASSERT_EQ(30, PreviousMonthNumberofDays(5, 2016));
467         ASSERT_EQ(31, PreviousMonthNumberofDays(6, 2016));
468         ASSERT_EQ(30, PreviousMonthNumberofDays(7, 2016));
469         ASSERT_EQ(31, PreviousMonthNumberofDays(8, 2016));
470         ASSERT_EQ(31, PreviousMonthNumberofDays(9, 2016));
471         ASSERT_EQ(30, PreviousMonthNumberofDays(10, 2016));
472         ASSERT_EQ(31, PreviousMonthNumberofDays(11, 2016));
473         ASSERT_EQ(30, PreviousMonthNumberofDays(12, 2016));
474         ASSERT_EQ(31, PreviousMonthNumberofDays(1, 2017));
475         
476         // Test the leap year section.
477         
478         ASSERT_EQ(29, PreviousMonthNumberofDays(3, 2016));
479         ASSERT_EQ(29, PreviousMonthNumberofDays(3, 2012));
480         ASSERT_EQ(29, PreviousMonthNumberofDays(3, 2008));
481         ASSERT_EQ(29, PreviousMonthNumberofDays(3, 2004));
482         ASSERT_EQ(29, PreviousMonthNumberofDays(3, 2000));
483         
484         ASSERT_EQ(28, PreviousMonthNumberofDays(3, 2015));
485         ASSERT_EQ(28, PreviousMonthNumberofDays(3, 2014));
486         ASSERT_EQ(28, PreviousMonthNumberofDays(3, 2013));
487         
488         ASSERT_EQ(28, PreviousMonthNumberofDays(3, 2041));
489         ASSERT_EQ(28, PreviousMonthNumberofDays(3, 2042));
490         ASSERT_EQ(28, PreviousMonthNumberofDays(3, 2043));
491         ASSERT_EQ(29, PreviousMonthNumberofDays(3, 2044));
492         ASSERT_EQ(28, PreviousMonthNumberofDays(3, 2045));
493         ASSERT_EQ(28, PreviousMonthNumberofDays(3, 2046));
494         ASSERT_EQ(28, PreviousMonthNumberofDays(3, 2047));
495         ASSERT_EQ(29, PreviousMonthNumberofDays(3, 2048));
496         ASSERT_EQ(28, PreviousMonthNumberofDays(3, 2049));
497         ASSERT_EQ(28, PreviousMonthNumberofDays(3, 2050));
499         ASSERT_EQ(28, PreviousMonthNumberofDays(3, 1900));
500         ASSERT_EQ(28, PreviousMonthNumberofDays(3, 2200));
501         ASSERT_EQ(28, PreviousMonthNumberofDays(3, 2300));
502         ASSERT_EQ(29, PreviousMonthNumberofDays(3, 2400));
503         ASSERT_EQ(28, PreviousMonthNumberofDays(3, 2500));
504         ASSERT_EQ(28, PreviousMonthNumberofDays(3, 2600));
505         ASSERT_EQ(28, PreviousMonthNumberofDays(3, 2700));
506         ASSERT_EQ(29, PreviousMonthNumberofDays(3, 2800));
507         ASSERT_EQ(28, PreviousMonthNumberofDays(3, 2900));
508         ASSERT_EQ(28, PreviousMonthNumberofDays(3, 3000));
509         
512 TEST_F(CommonFunctionsTests, monthViewGenerator){
513         
514         XCCalendarMonthViewGrid monthView = GenerateMonthGrid(6, 2016);
516         // First week.
517         
518         ASSERT_EQ(30, monthView.weekList[0].dayList[0].day);
519         ASSERT_EQ(5, monthView.weekList[0].dayList[0].month);
520         ASSERT_EQ(2016, monthView.weekList[0].dayList[0].year);
521         ASSERT_EQ(false, monthView.weekList[0].dayList[0].isInMonth);
523         ASSERT_EQ(31, monthView.weekList[0].dayList[1].day);
524         ASSERT_EQ(5, monthView.weekList[0].dayList[1].month);
525         ASSERT_EQ(2016, monthView.weekList[0].dayList[1].year);
526         ASSERT_EQ(false, monthView.weekList[0].dayList[1].isInMonth);
528         ASSERT_EQ(1, monthView.weekList[0].dayList[2].day);
529         ASSERT_EQ(6, monthView.weekList[0].dayList[2].month);
530         ASSERT_EQ(2016, monthView.weekList[0].dayList[2].year);
531         ASSERT_EQ(true, monthView.weekList[0].dayList[2].isInMonth);
533         ASSERT_EQ(2, monthView.weekList[0].dayList[3].day);
534         ASSERT_EQ(6, monthView.weekList[0].dayList[3].month);
535         ASSERT_EQ(2016, monthView.weekList[0].dayList[3].year);
536         ASSERT_EQ(true, monthView.weekList[0].dayList[3].isInMonth);
538         ASSERT_EQ(3, monthView.weekList[0].dayList[4].day);
539         ASSERT_EQ(6, monthView.weekList[0].dayList[4].month);
540         ASSERT_EQ(2016, monthView.weekList[0].dayList[4].year);
541         ASSERT_EQ(true, monthView.weekList[0].dayList[4].isInMonth);
543         ASSERT_EQ(4, monthView.weekList[0].dayList[5].day);
544         ASSERT_EQ(6, monthView.weekList[0].dayList[5].month);
545         ASSERT_EQ(2016, monthView.weekList[0].dayList[5].year);
546         ASSERT_EQ(true, monthView.weekList[0].dayList[5].isInMonth);
548         ASSERT_EQ(5, monthView.weekList[0].dayList[6].day);
549         ASSERT_EQ(6, monthView.weekList[0].dayList[6].month);
550         ASSERT_EQ(2016, monthView.weekList[0].dayList[6].year);
551         ASSERT_EQ(true, monthView.weekList[0].dayList[6].isInMonth);
553         // Second week.
554         
555         ASSERT_EQ(6, monthView.weekList[1].dayList[0].day);
556         ASSERT_EQ(6, monthView.weekList[1].dayList[0].month);
557         ASSERT_EQ(2016, monthView.weekList[1].dayList[0].year);
558         ASSERT_EQ(true, monthView.weekList[1].dayList[0].isInMonth);
560         ASSERT_EQ(7, monthView.weekList[1].dayList[1].day);
561         ASSERT_EQ(6, monthView.weekList[1].dayList[1].month);
562         ASSERT_EQ(2016, monthView.weekList[1].dayList[1].year);
563         ASSERT_EQ(true, monthView.weekList[1].dayList[1].isInMonth);
565         ASSERT_EQ(8, monthView.weekList[1].dayList[2].day);
566         ASSERT_EQ(6, monthView.weekList[1].dayList[2].month);
567         ASSERT_EQ(2016, monthView.weekList[1].dayList[2].year);
568         ASSERT_EQ(true, monthView.weekList[1].dayList[2].isInMonth);
570         ASSERT_EQ(9, monthView.weekList[1].dayList[3].day);
571         ASSERT_EQ(6, monthView.weekList[1].dayList[3].month);
572         ASSERT_EQ(2016, monthView.weekList[1].dayList[3].year);
573         ASSERT_EQ(true, monthView.weekList[1].dayList[3].isInMonth);
575         ASSERT_EQ(10, monthView.weekList[1].dayList[4].day);
576         ASSERT_EQ(6, monthView.weekList[1].dayList[4].month);
577         ASSERT_EQ(2016, monthView.weekList[1].dayList[4].year);
578         ASSERT_EQ(true, monthView.weekList[1].dayList[4].isInMonth);
580         ASSERT_EQ(11, monthView.weekList[1].dayList[5].day);
581         ASSERT_EQ(6, monthView.weekList[1].dayList[5].month);
582         ASSERT_EQ(2016, monthView.weekList[1].dayList[5].year);
583         ASSERT_EQ(true, monthView.weekList[1].dayList[5].isInMonth);
585         ASSERT_EQ(12, monthView.weekList[1].dayList[6].day);
586         ASSERT_EQ(6, monthView.weekList[1].dayList[6].month);
587         ASSERT_EQ(2016, monthView.weekList[1].dayList[6].year);
588         ASSERT_EQ(true, monthView.weekList[1].dayList[6].isInMonth);
589         
590         // Third Week.
591         
592         ASSERT_EQ(13, monthView.weekList[2].dayList[0].day);
593         ASSERT_EQ(6, monthView.weekList[2].dayList[0].month);
594         ASSERT_EQ(2016, monthView.weekList[2].dayList[0].year);
595         ASSERT_EQ(true, monthView.weekList[2].dayList[0].isInMonth);
597         ASSERT_EQ(14, monthView.weekList[2].dayList[1].day);
598         ASSERT_EQ(6, monthView.weekList[2].dayList[1].month);
599         ASSERT_EQ(2016, monthView.weekList[2].dayList[1].year);
600         ASSERT_EQ(true, monthView.weekList[2].dayList[1].isInMonth);
602         ASSERT_EQ(15, monthView.weekList[2].dayList[2].day);
603         ASSERT_EQ(6, monthView.weekList[2].dayList[2].month);
604         ASSERT_EQ(2016, monthView.weekList[2].dayList[2].year);
605         ASSERT_EQ(true, monthView.weekList[2].dayList[2].isInMonth);
607         ASSERT_EQ(16, monthView.weekList[2].dayList[3].day);
608         ASSERT_EQ(6, monthView.weekList[2].dayList[3].month);
609         ASSERT_EQ(2016, monthView.weekList[2].dayList[3].year);
610         ASSERT_EQ(true, monthView.weekList[2].dayList[3].isInMonth);
612         ASSERT_EQ(17, monthView.weekList[2].dayList[4].day);
613         ASSERT_EQ(6, monthView.weekList[2].dayList[4].month);
614         ASSERT_EQ(2016, monthView.weekList[2].dayList[4].year);
615         ASSERT_EQ(true, monthView.weekList[2].dayList[4].isInMonth);
617         ASSERT_EQ(18, monthView.weekList[2].dayList[5].day);
618         ASSERT_EQ(6, monthView.weekList[2].dayList[5].month);
619         ASSERT_EQ(2016, monthView.weekList[2].dayList[5].year);
620         ASSERT_EQ(true, monthView.weekList[2].dayList[5].isInMonth);
622         ASSERT_EQ(19, monthView.weekList[2].dayList[6].day);
623         ASSERT_EQ(6, monthView.weekList[2].dayList[6].month);
624         ASSERT_EQ(2016, monthView.weekList[2].dayList[6].year);
625         ASSERT_EQ(true, monthView.weekList[2].dayList[6].isInMonth);
626         
627         // Fourth week.
628         
629         ASSERT_EQ(20, monthView.weekList[3].dayList[0].day);
630         ASSERT_EQ(6, monthView.weekList[3].dayList[0].month);
631         ASSERT_EQ(2016, monthView.weekList[3].dayList[0].year);
632         ASSERT_EQ(true, monthView.weekList[3].dayList[0].isInMonth);
634         ASSERT_EQ(21, monthView.weekList[3].dayList[1].day);
635         ASSERT_EQ(6, monthView.weekList[3].dayList[1].month);
636         ASSERT_EQ(2016, monthView.weekList[3].dayList[1].year);
637         ASSERT_EQ(true, monthView.weekList[3].dayList[1].isInMonth);
639         ASSERT_EQ(22, monthView.weekList[3].dayList[2].day);
640         ASSERT_EQ(6, monthView.weekList[3].dayList[2].month);
641         ASSERT_EQ(2016, monthView.weekList[3].dayList[2].year);
642         ASSERT_EQ(true, monthView.weekList[3].dayList[2].isInMonth);
644         ASSERT_EQ(23, monthView.weekList[3].dayList[3].day);
645         ASSERT_EQ(6, monthView.weekList[3].dayList[3].month);
646         ASSERT_EQ(2016, monthView.weekList[3].dayList[3].year);
647         ASSERT_EQ(true, monthView.weekList[3].dayList[3].isInMonth);
649         ASSERT_EQ(24, monthView.weekList[3].dayList[4].day);
650         ASSERT_EQ(6, monthView.weekList[3].dayList[4].month);
651         ASSERT_EQ(2016, monthView.weekList[3].dayList[4].year);
652         ASSERT_EQ(true, monthView.weekList[3].dayList[4].isInMonth);
654         ASSERT_EQ(25, monthView.weekList[3].dayList[5].day);
655         ASSERT_EQ(6, monthView.weekList[3].dayList[5].month);
656         ASSERT_EQ(2016, monthView.weekList[3].dayList[5].year);
657         ASSERT_EQ(true, monthView.weekList[3].dayList[5].isInMonth);
659         ASSERT_EQ(26, monthView.weekList[3].dayList[6].day);
660         ASSERT_EQ(6, monthView.weekList[3].dayList[6].month);
661         ASSERT_EQ(2016, monthView.weekList[3].dayList[6].year); 
662         ASSERT_EQ(true, monthView.weekList[3].dayList[6].isInMonth);
664         // Fifth week.
665         
666         ASSERT_EQ(27, monthView.weekList[4].dayList[0].day);
667         ASSERT_EQ(6, monthView.weekList[4].dayList[0].month);
668         ASSERT_EQ(2016, monthView.weekList[4].dayList[0].year);
669         ASSERT_EQ(true, monthView.weekList[4].dayList[0].isInMonth);
671         ASSERT_EQ(28, monthView.weekList[4].dayList[1].day);
672         ASSERT_EQ(6, monthView.weekList[4].dayList[1].month);
673         ASSERT_EQ(2016, monthView.weekList[4].dayList[1].year);
674         ASSERT_EQ(true, monthView.weekList[4].dayList[1].isInMonth);
676         ASSERT_EQ(29, monthView.weekList[4].dayList[2].day);
677         ASSERT_EQ(6, monthView.weekList[4].dayList[2].month);
678         ASSERT_EQ(2016, monthView.weekList[4].dayList[2].year);
679         ASSERT_EQ(true, monthView.weekList[4].dayList[2].isInMonth);
681         ASSERT_EQ(30, monthView.weekList[4].dayList[3].day);
682         ASSERT_EQ(6, monthView.weekList[4].dayList[3].month);
683         ASSERT_EQ(2016, monthView.weekList[4].dayList[3].year);
684         ASSERT_EQ(true, monthView.weekList[4].dayList[3].isInMonth);
686         ASSERT_EQ(1, monthView.weekList[4].dayList[4].day);
687         ASSERT_EQ(7, monthView.weekList[4].dayList[4].month);
688         ASSERT_EQ(2016, monthView.weekList[4].dayList[4].year);
689         ASSERT_EQ(false, monthView.weekList[4].dayList[4].isInMonth);
691         ASSERT_EQ(2, monthView.weekList[4].dayList[5].day);
692         ASSERT_EQ(7, monthView.weekList[4].dayList[5].month);
693         ASSERT_EQ(2016, monthView.weekList[4].dayList[5].year);
694         ASSERT_EQ(false, monthView.weekList[4].dayList[5].isInMonth);
696         ASSERT_EQ(3, monthView.weekList[4].dayList[6].day);
697         ASSERT_EQ(7, monthView.weekList[4].dayList[6].month);
698         ASSERT_EQ(2016, monthView.weekList[4].dayList[6].year);
699         ASSERT_EQ(false, monthView.weekList[4].dayList[6].isInMonth);
700         
701         // Test February 2016 (leap year).
703         monthView = GenerateMonthGrid(2, 2016);
704         
705         // First week.
706         
707         ASSERT_EQ(1, monthView.weekList[0].dayList[0].day);
708         ASSERT_EQ(2, monthView.weekList[0].dayList[0].month);
709         ASSERT_EQ(2016, monthView.weekList[0].dayList[0].year);
710         ASSERT_EQ(true, monthView.weekList[0].dayList[0].isInMonth);
712         ASSERT_EQ(2, monthView.weekList[0].dayList[1].day);
713         ASSERT_EQ(2, monthView.weekList[0].dayList[1].month);
714         ASSERT_EQ(2016, monthView.weekList[0].dayList[1].year);
715         ASSERT_EQ(true, monthView.weekList[0].dayList[1].isInMonth);
717         ASSERT_EQ(3, monthView.weekList[0].dayList[2].day);
718         ASSERT_EQ(2, monthView.weekList[0].dayList[2].month);
719         ASSERT_EQ(2016, monthView.weekList[0].dayList[2].year);
720         ASSERT_EQ(true, monthView.weekList[0].dayList[2].isInMonth);
722         ASSERT_EQ(4, monthView.weekList[0].dayList[3].day);
723         ASSERT_EQ(2, monthView.weekList[0].dayList[3].month);
724         ASSERT_EQ(2016, monthView.weekList[0].dayList[3].year);
725         ASSERT_EQ(true, monthView.weekList[0].dayList[3].isInMonth);
727         ASSERT_EQ(5, monthView.weekList[0].dayList[4].day);
728         ASSERT_EQ(2, monthView.weekList[0].dayList[4].month);
729         ASSERT_EQ(2016, monthView.weekList[0].dayList[4].year);
730         ASSERT_EQ(true, monthView.weekList[0].dayList[4].isInMonth);
732         ASSERT_EQ(6, monthView.weekList[0].dayList[5].day);
733         ASSERT_EQ(2, monthView.weekList[0].dayList[5].month);
734         ASSERT_EQ(2016, monthView.weekList[0].dayList[5].year);
735         ASSERT_EQ(true, monthView.weekList[0].dayList[5].isInMonth);
737         ASSERT_EQ(7, monthView.weekList[0].dayList[6].day);
738         ASSERT_EQ(2, monthView.weekList[0].dayList[6].month);
739         ASSERT_EQ(2016, monthView.weekList[0].dayList[6].year);
740         ASSERT_EQ(true, monthView.weekList[0].dayList[6].isInMonth);
742         // Second week.
743         
744         ASSERT_EQ(8, monthView.weekList[1].dayList[0].day);
745         ASSERT_EQ(2, monthView.weekList[1].dayList[0].month);
746         ASSERT_EQ(2016, monthView.weekList[1].dayList[0].year);
747         ASSERT_EQ(true, monthView.weekList[1].dayList[0].isInMonth);
749         ASSERT_EQ(9, monthView.weekList[1].dayList[1].day);
750         ASSERT_EQ(2, monthView.weekList[1].dayList[1].month);
751         ASSERT_EQ(2016, monthView.weekList[1].dayList[1].year);
752         ASSERT_EQ(true, monthView.weekList[1].dayList[1].isInMonth);
754         ASSERT_EQ(10, monthView.weekList[1].dayList[2].day);
755         ASSERT_EQ(2, monthView.weekList[1].dayList[2].month);
756         ASSERT_EQ(2016, monthView.weekList[1].dayList[2].year);
757         ASSERT_EQ(true, monthView.weekList[1].dayList[2].isInMonth);
759         ASSERT_EQ(11, monthView.weekList[1].dayList[3].day);
760         ASSERT_EQ(2, monthView.weekList[1].dayList[3].month);
761         ASSERT_EQ(2016, monthView.weekList[1].dayList[3].year);
762         ASSERT_EQ(true, monthView.weekList[1].dayList[3].isInMonth);
764         ASSERT_EQ(12, monthView.weekList[1].dayList[4].day);
765         ASSERT_EQ(2, monthView.weekList[1].dayList[4].month);
766         ASSERT_EQ(2016, monthView.weekList[1].dayList[4].year);
767         ASSERT_EQ(true, monthView.weekList[1].dayList[4].isInMonth);
769         ASSERT_EQ(13, monthView.weekList[1].dayList[5].day);
770         ASSERT_EQ(2, monthView.weekList[1].dayList[5].month);
771         ASSERT_EQ(2016, monthView.weekList[1].dayList[5].year);
772         ASSERT_EQ(true, monthView.weekList[1].dayList[5].isInMonth);
774         ASSERT_EQ(14, monthView.weekList[1].dayList[6].day);
775         ASSERT_EQ(2, monthView.weekList[1].dayList[6].month);
776         ASSERT_EQ(2016, monthView.weekList[1].dayList[6].year);
777         ASSERT_EQ(true, monthView.weekList[1].dayList[6].isInMonth);
778         
779         // Third Week.
780         
781         ASSERT_EQ(15, monthView.weekList[2].dayList[0].day);
782         ASSERT_EQ(2, monthView.weekList[2].dayList[0].month);
783         ASSERT_EQ(2016, monthView.weekList[2].dayList[0].year);
784         ASSERT_EQ(true, monthView.weekList[2].dayList[0].isInMonth);
786         ASSERT_EQ(16, monthView.weekList[2].dayList[1].day);
787         ASSERT_EQ(2, monthView.weekList[2].dayList[1].month);
788         ASSERT_EQ(2016, monthView.weekList[2].dayList[1].year);
789         ASSERT_EQ(true, monthView.weekList[2].dayList[1].isInMonth);
791         ASSERT_EQ(17, monthView.weekList[2].dayList[2].day);
792         ASSERT_EQ(2, monthView.weekList[2].dayList[2].month);
793         ASSERT_EQ(2016, monthView.weekList[2].dayList[2].year);
794         ASSERT_EQ(true, monthView.weekList[2].dayList[2].isInMonth);
796         ASSERT_EQ(18, monthView.weekList[2].dayList[3].day);
797         ASSERT_EQ(2, monthView.weekList[2].dayList[3].month);
798         ASSERT_EQ(2016, monthView.weekList[2].dayList[3].year);
799         ASSERT_EQ(true, monthView.weekList[2].dayList[3].isInMonth);
801         ASSERT_EQ(19, monthView.weekList[2].dayList[4].day);
802         ASSERT_EQ(2, monthView.weekList[2].dayList[4].month);
803         ASSERT_EQ(2016, monthView.weekList[2].dayList[4].year);
804         ASSERT_EQ(true, monthView.weekList[2].dayList[4].isInMonth);
806         ASSERT_EQ(20, monthView.weekList[2].dayList[5].day);
807         ASSERT_EQ(2, monthView.weekList[2].dayList[5].month);
808         ASSERT_EQ(2016, monthView.weekList[2].dayList[5].year);
809         ASSERT_EQ(true, monthView.weekList[2].dayList[5].isInMonth);
811         ASSERT_EQ(21, monthView.weekList[2].dayList[6].day);
812         ASSERT_EQ(2, monthView.weekList[2].dayList[6].month);
813         ASSERT_EQ(2016, monthView.weekList[2].dayList[6].year);
814         ASSERT_EQ(true, monthView.weekList[2].dayList[6].isInMonth);
815         
816         // Fourth week.
817         
818         ASSERT_EQ(22, monthView.weekList[3].dayList[0].day);
819         ASSERT_EQ(2, monthView.weekList[3].dayList[0].month);
820         ASSERT_EQ(2016, monthView.weekList[3].dayList[0].year);
821         ASSERT_EQ(true, monthView.weekList[3].dayList[0].isInMonth);
823         ASSERT_EQ(23, monthView.weekList[3].dayList[1].day);
824         ASSERT_EQ(2, monthView.weekList[3].dayList[1].month);
825         ASSERT_EQ(2016, monthView.weekList[3].dayList[1].year);
826         ASSERT_EQ(true, monthView.weekList[3].dayList[1].isInMonth);
828         ASSERT_EQ(24, monthView.weekList[3].dayList[2].day);
829         ASSERT_EQ(2, monthView.weekList[3].dayList[2].month);
830         ASSERT_EQ(2016, monthView.weekList[3].dayList[2].year);
831         ASSERT_EQ(true, monthView.weekList[3].dayList[2].isInMonth);
833         ASSERT_EQ(25, monthView.weekList[3].dayList[3].day);
834         ASSERT_EQ(2, monthView.weekList[3].dayList[3].month);
835         ASSERT_EQ(2016, monthView.weekList[3].dayList[3].year);
836         ASSERT_EQ(true, monthView.weekList[3].dayList[3].isInMonth);
838         ASSERT_EQ(26, monthView.weekList[3].dayList[4].day);
839         ASSERT_EQ(2, monthView.weekList[3].dayList[4].month);
840         ASSERT_EQ(2016, monthView.weekList[3].dayList[4].year);
841         ASSERT_EQ(true, monthView.weekList[3].dayList[4].isInMonth);
843         ASSERT_EQ(27, monthView.weekList[3].dayList[5].day);
844         ASSERT_EQ(2, monthView.weekList[3].dayList[5].month);
845         ASSERT_EQ(2016, monthView.weekList[3].dayList[5].year);
846         ASSERT_EQ(true, monthView.weekList[3].dayList[5].isInMonth);
848         ASSERT_EQ(28, monthView.weekList[3].dayList[6].day);
849         ASSERT_EQ(2, monthView.weekList[3].dayList[6].month);
850         ASSERT_EQ(2016, monthView.weekList[3].dayList[6].year); 
851         ASSERT_EQ(true, monthView.weekList[3].dayList[6].isInMonth);
852         
853         // Fifth week.
854         
855         ASSERT_EQ(29, monthView.weekList[4].dayList[0].day);
856         ASSERT_EQ(2, monthView.weekList[4].dayList[0].month);
857         ASSERT_EQ(2016, monthView.weekList[4].dayList[0].year);
858         ASSERT_EQ(true, monthView.weekList[4].dayList[0].isInMonth);
860         ASSERT_EQ(1, monthView.weekList[4].dayList[1].day);
861         ASSERT_EQ(3, monthView.weekList[4].dayList[1].month);
862         ASSERT_EQ(2016, monthView.weekList[4].dayList[1].year);
863         ASSERT_EQ(false, monthView.weekList[4].dayList[1].isInMonth);
865         ASSERT_EQ(2, monthView.weekList[4].dayList[2].day);
866         ASSERT_EQ(3, monthView.weekList[4].dayList[2].month);
867         ASSERT_EQ(2016, monthView.weekList[4].dayList[2].year);
868         ASSERT_EQ(false, monthView.weekList[4].dayList[2].isInMonth);
870         ASSERT_EQ(3, monthView.weekList[4].dayList[3].day);
871         ASSERT_EQ(3, monthView.weekList[4].dayList[3].month);
872         ASSERT_EQ(2016, monthView.weekList[4].dayList[3].year);
873         ASSERT_EQ(false, monthView.weekList[4].dayList[3].isInMonth);
875         ASSERT_EQ(4, monthView.weekList[4].dayList[4].day);
876         ASSERT_EQ(3, monthView.weekList[4].dayList[4].month);
877         ASSERT_EQ(2016, monthView.weekList[4].dayList[4].year);
878         ASSERT_EQ(false, monthView.weekList[4].dayList[4].isInMonth);
880         ASSERT_EQ(5, monthView.weekList[4].dayList[5].day);
881         ASSERT_EQ(3, monthView.weekList[4].dayList[5].month);
882         ASSERT_EQ(2016, monthView.weekList[4].dayList[5].year);
883         ASSERT_EQ(false, monthView.weekList[4].dayList[5].isInMonth);
885         ASSERT_EQ(6, monthView.weekList[4].dayList[6].day);
886         ASSERT_EQ(3, monthView.weekList[4].dayList[6].month);
887         ASSERT_EQ(2016, monthView.weekList[4].dayList[6].year);
888         ASSERT_EQ(false, monthView.weekList[4].dayList[6].isInMonth);
890         // Generate a month grid for February 2100 (not a leap year).
892         monthView = GenerateMonthGrid(2, 2100);
893         
894         // First week.
896         ASSERT_EQ(4, monthView.weekList.size());
898         ASSERT_EQ(1, monthView.weekList[0].dayList[0].day);
899         ASSERT_EQ(2, monthView.weekList[0].dayList[0].month);
900         ASSERT_EQ(2100, monthView.weekList[0].dayList[0].year);
901         ASSERT_EQ(true, monthView.weekList[0].dayList[0].isInMonth);
903         ASSERT_EQ(2, monthView.weekList[0].dayList[1].day);
904         ASSERT_EQ(2, monthView.weekList[0].dayList[1].month);
905         ASSERT_EQ(2100, monthView.weekList[0].dayList[1].year);
906         ASSERT_EQ(true, monthView.weekList[0].dayList[1].isInMonth);
908         ASSERT_EQ(3, monthView.weekList[0].dayList[2].day);
909         ASSERT_EQ(2, monthView.weekList[0].dayList[2].month);
910         ASSERT_EQ(2100, monthView.weekList[0].dayList[2].year);
911         ASSERT_EQ(true, monthView.weekList[0].dayList[2].isInMonth);
913         ASSERT_EQ(4, monthView.weekList[0].dayList[3].day);
914         ASSERT_EQ(2, monthView.weekList[0].dayList[3].month);
915         ASSERT_EQ(2100, monthView.weekList[0].dayList[3].year);
916         ASSERT_EQ(true, monthView.weekList[0].dayList[3].isInMonth);
918         ASSERT_EQ(5, monthView.weekList[0].dayList[4].day);
919         ASSERT_EQ(2, monthView.weekList[0].dayList[4].month);
920         ASSERT_EQ(2100, monthView.weekList[0].dayList[4].year);
921         ASSERT_EQ(true, monthView.weekList[0].dayList[4].isInMonth);
923         ASSERT_EQ(6, monthView.weekList[0].dayList[5].day);
924         ASSERT_EQ(2, monthView.weekList[0].dayList[5].month);
925         ASSERT_EQ(2100, monthView.weekList[0].dayList[5].year);
926         ASSERT_EQ(true, monthView.weekList[0].dayList[5].isInMonth);
928         ASSERT_EQ(7, monthView.weekList[0].dayList[6].day);
929         ASSERT_EQ(2, monthView.weekList[0].dayList[6].month);
930         ASSERT_EQ(2100, monthView.weekList[0].dayList[6].year);
931         ASSERT_EQ(true, monthView.weekList[0].dayList[6].isInMonth);
933         // Second week.
934         
935         ASSERT_EQ(8, monthView.weekList[1].dayList[0].day);
936         ASSERT_EQ(2, monthView.weekList[1].dayList[0].month);
937         ASSERT_EQ(2100, monthView.weekList[1].dayList[0].year);
938         ASSERT_EQ(true, monthView.weekList[1].dayList[0].isInMonth);
940         ASSERT_EQ(9, monthView.weekList[1].dayList[1].day);
941         ASSERT_EQ(2, monthView.weekList[1].dayList[1].month);
942         ASSERT_EQ(2100, monthView.weekList[1].dayList[1].year);
943         ASSERT_EQ(true, monthView.weekList[1].dayList[1].isInMonth);
945         ASSERT_EQ(10, monthView.weekList[1].dayList[2].day);
946         ASSERT_EQ(2, monthView.weekList[1].dayList[2].month);
947         ASSERT_EQ(2100, monthView.weekList[1].dayList[2].year);
948         ASSERT_EQ(true, monthView.weekList[1].dayList[2].isInMonth);
950         ASSERT_EQ(11, monthView.weekList[1].dayList[3].day);
951         ASSERT_EQ(2, monthView.weekList[1].dayList[3].month);
952         ASSERT_EQ(2100, monthView.weekList[1].dayList[3].year);
953         ASSERT_EQ(true, monthView.weekList[1].dayList[3].isInMonth);
955         ASSERT_EQ(12, monthView.weekList[1].dayList[4].day);
956         ASSERT_EQ(2, monthView.weekList[1].dayList[4].month);
957         ASSERT_EQ(2100, monthView.weekList[1].dayList[4].year);
958         ASSERT_EQ(true, monthView.weekList[1].dayList[4].isInMonth);
960         ASSERT_EQ(13, monthView.weekList[1].dayList[5].day);
961         ASSERT_EQ(2, monthView.weekList[1].dayList[5].month);
962         ASSERT_EQ(2100, monthView.weekList[1].dayList[5].year);
963         ASSERT_EQ(true, monthView.weekList[1].dayList[5].isInMonth);
965         ASSERT_EQ(14, monthView.weekList[1].dayList[6].day);
966         ASSERT_EQ(2, monthView.weekList[1].dayList[6].month);
967         ASSERT_EQ(2100, monthView.weekList[1].dayList[6].year);
968         ASSERT_EQ(true, monthView.weekList[1].dayList[6].isInMonth);
969         
970         // Third Week.
971         
972         ASSERT_EQ(15, monthView.weekList[2].dayList[0].day);
973         ASSERT_EQ(2, monthView.weekList[2].dayList[0].month);
974         ASSERT_EQ(2100, monthView.weekList[2].dayList[0].year);
975         ASSERT_EQ(true, monthView.weekList[2].dayList[0].isInMonth);
977         ASSERT_EQ(16, monthView.weekList[2].dayList[1].day);
978         ASSERT_EQ(2, monthView.weekList[2].dayList[1].month);
979         ASSERT_EQ(2100, monthView.weekList[2].dayList[1].year);
980         ASSERT_EQ(true, monthView.weekList[2].dayList[1].isInMonth);
982         ASSERT_EQ(17, monthView.weekList[2].dayList[2].day);
983         ASSERT_EQ(2, monthView.weekList[2].dayList[2].month);
984         ASSERT_EQ(2100, monthView.weekList[2].dayList[2].year);
985         ASSERT_EQ(true, monthView.weekList[2].dayList[2].isInMonth);
987         ASSERT_EQ(18, monthView.weekList[2].dayList[3].day);
988         ASSERT_EQ(2, monthView.weekList[2].dayList[3].month);
989         ASSERT_EQ(2100, monthView.weekList[2].dayList[3].year);
990         ASSERT_EQ(true, monthView.weekList[2].dayList[3].isInMonth);
992         ASSERT_EQ(19, monthView.weekList[2].dayList[4].day);
993         ASSERT_EQ(2, monthView.weekList[2].dayList[4].month);
994         ASSERT_EQ(2100, monthView.weekList[2].dayList[4].year);
995         ASSERT_EQ(true, monthView.weekList[2].dayList[4].isInMonth);
997         ASSERT_EQ(20, monthView.weekList[2].dayList[5].day);
998         ASSERT_EQ(2, monthView.weekList[2].dayList[5].month);
999         ASSERT_EQ(2100, monthView.weekList[2].dayList[5].year);
1000         ASSERT_EQ(true, monthView.weekList[2].dayList[5].isInMonth);
1002         ASSERT_EQ(21, monthView.weekList[2].dayList[6].day);
1003         ASSERT_EQ(2, monthView.weekList[2].dayList[6].month);
1004         ASSERT_EQ(2100, monthView.weekList[2].dayList[6].year);
1005         ASSERT_EQ(true, monthView.weekList[2].dayList[6].isInMonth);
1006         
1007         // Fourth week.
1008         
1009         ASSERT_EQ(22, monthView.weekList[3].dayList[0].day);
1010         ASSERT_EQ(2, monthView.weekList[3].dayList[0].month);
1011         ASSERT_EQ(2100, monthView.weekList[3].dayList[0].year);
1012         ASSERT_EQ(true, monthView.weekList[3].dayList[0].isInMonth);
1014         ASSERT_EQ(23, monthView.weekList[3].dayList[1].day);
1015         ASSERT_EQ(2, monthView.weekList[3].dayList[1].month);
1016         ASSERT_EQ(2100, monthView.weekList[3].dayList[1].year);
1017         ASSERT_EQ(true, monthView.weekList[3].dayList[1].isInMonth);
1019         ASSERT_EQ(24, monthView.weekList[3].dayList[2].day);
1020         ASSERT_EQ(2, monthView.weekList[3].dayList[2].month);
1021         ASSERT_EQ(2100, monthView.weekList[3].dayList[2].year);
1022         ASSERT_EQ(true, monthView.weekList[3].dayList[2].isInMonth);
1024         ASSERT_EQ(25, monthView.weekList[3].dayList[3].day);
1025         ASSERT_EQ(2, monthView.weekList[3].dayList[3].month);
1026         ASSERT_EQ(2100, monthView.weekList[3].dayList[3].year);
1027         ASSERT_EQ(true, monthView.weekList[3].dayList[3].isInMonth);
1029         ASSERT_EQ(26, monthView.weekList[3].dayList[4].day);
1030         ASSERT_EQ(2, monthView.weekList[3].dayList[4].month);
1031         ASSERT_EQ(2100, monthView.weekList[3].dayList[4].year);
1032         ASSERT_EQ(true, monthView.weekList[3].dayList[4].isInMonth);
1034         ASSERT_EQ(27, monthView.weekList[3].dayList[5].day);
1035         ASSERT_EQ(2, monthView.weekList[3].dayList[5].month);
1036         ASSERT_EQ(2100, monthView.weekList[3].dayList[5].year);
1037         ASSERT_EQ(true, monthView.weekList[3].dayList[5].isInMonth);
1039         ASSERT_EQ(28, monthView.weekList[3].dayList[6].day);
1040         ASSERT_EQ(2, monthView.weekList[3].dayList[6].month);
1041         ASSERT_EQ(2100, monthView.weekList[3].dayList[6].year); 
1042         ASSERT_EQ(true, monthView.weekList[3].dayList[6].isInMonth);
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