1 // xestiacalendar_commonfunctions.h - Xestia Calendar Common Functions Unit Tests
3 // (c) 2016-2017 Xestia Software Development.
5 // This file is part of Xestia Calendar.
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.
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.
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
32 virtual void TearDown()
37 TEST_F(CommonFunctionsTests, FileTests){
39 ASSERT_EQ(false, FileExists("iCalendarEvent-Missing.vcf"));
40 ASSERT_EQ(true, FileExists("iCalendarEvent-InvalidPermissions.vcf"));
44 TEST_F(CommonFunctionsTests, ProcessTextVectorsTests){
46 // Setup the objects to be used for processing.
48 vector<string> textPropertiesExample1;
49 vector<string> textValueExample1;
50 multimap<string, string> textExample1TestResult;
52 textPropertiesExample1.push_back("ATTENDEE");
53 textValueExample1.push_back("Example Attendee 1");
55 textPropertiesExample1.push_back("ATTENDEE");
56 textValueExample1.push_back("Example Attendee 2");
58 textPropertiesExample1.push_back("ATTENDEE");
59 textValueExample1.push_back("Example Attendee 3");
61 textPropertiesExample1.push_back("CATEGORIES");
62 textValueExample1.push_back("CATEGORY 1");
64 textPropertiesExample1.push_back("CATEGORIES");
65 textValueExample1.push_back("CATEGORY 2");
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.");
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");
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"));
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."));
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"));
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){
193 map<string, string> textExample1TestResult;
195 textExample1TestResult.insert(make_pair("RELATION", "NO"));
196 textExample1TestResult.insert(make_pair("TEST", "YES"));
197 textExample1TestResult.insert(make_pair("DATA", "SOMEDATA"));
199 ASSERT_EQ(textExample1TestResult, SplitValues("TEST;RELATION=NO;TEST=YES;DATA=SOMEDATA"));
203 TEST_F(CommonFunctionsTests, SplitNameValueTests){
205 PropertyNameValue nameValueResult;
207 nameValueResult = SplitNameValue("TEST=OK");
209 string propertyName = nameValueResult.name;
210 string propertyValue = nameValueResult.value;
212 ASSERT_EQ(propertyName, "TEST");
213 ASSERT_EQ(propertyValue, "OK");
217 TEST_F(CommonFunctionsTests, HexToInt){
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
234 result = HexToInt(&value1, &outputValue);
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);
247 result = HexToInt(&value4, &outputValue);
248 ASSERT_EQ(result, true);
249 ASSERT_EQ(outputValue, 255);
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);
259 result = HexToInt(&value7, &outputValue);
260 ASSERT_EQ(result, true);
261 ASSERT_EQ(outputValue, 30123);
263 result = HexToInt(&value8, &outputValue);
264 ASSERT_EQ(result, true);
265 ASSERT_EQ(outputValue, 684);
267 result = HexToInt(&value9, &outputValue);
268 ASSERT_EQ(result, false);
270 result = HexToInt(&value10, &outputValue);
271 ASSERT_EQ(result, false);
273 result = HexToInt(&value11, &outputValue);
274 ASSERT_EQ(result, false);
278 TEST_F(CommonFunctionsTests, SplitPathFilename){
280 // Setup the file split.
282 string pathFilenameOriginal = "/example/file/yay.txt";
286 SplitPathFilename(&pathFilenameOriginal, &path, &file);
288 ASSERT_EQ("/example/file/", path);
289 ASSERT_EQ("yay.txt", file);
291 pathFilenameOriginal = "/a/path/with/lots/of/bits/in/andthenthis.html";
295 SplitPathFilename(&pathFilenameOriginal, &path, &file);
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";
304 SplitPathFilename(&pathFilenameOriginal, &path, &file);
306 ASSERT_EQ("/one/more/for/a/laugh/", path);
307 ASSERT_EQ("hahaha.zip", file);
311 TEST_F(CommonFunctionsTests, ColourStruct){
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";
353 colour5 = colourInput1;
354 colour6 = colourInput2;
355 colour7 = colourInput3;
356 colour8 = colourInput4;
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){
381 string inputText1 = "This is an example text.";
382 string outputText1 = "This is an example text.";
383 string resultText1 = "";
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 = "";
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 = "";
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"
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 = "";
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.";
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).
458 ASSERT_EQ(30, PreviousMonthNumberofDays(12, 2015));
460 // Test the year 2016 (has a leap year).
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));
476 // Test the leap year section.
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));
484 ASSERT_EQ(28, PreviousMonthNumberofDays(3, 2015));
485 ASSERT_EQ(28, PreviousMonthNumberofDays(3, 2014));
486 ASSERT_EQ(28, PreviousMonthNumberofDays(3, 2013));
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));
512 TEST_F(CommonFunctionsTests, monthViewGenerator){
514 XCCalendarMonthViewGrid monthView = GenerateMonthGrid(6, 2016);
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);
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);
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);
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);
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);
701 // Test February 2016 (leap year).
703 monthView = GenerateMonthGrid(2, 2016);
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);
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);
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);
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);
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);
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);
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);
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);
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);