diff --git a/composer.json b/composer.json new file mode 100644 index 0000000..55d2ee0 --- /dev/null +++ b/composer.json @@ -0,0 +1,25 @@ +{ + "name": "vegvari/calendartest", + "description": "Calendar Test", + "license": "MIT", + "authors": [ + { + "name": "Romeo Vegvari", + "email": "romeo@vegvari.hu" + } + ], + "minimum-stability": "stable", + "require": { + "php": ">=5.6" + }, + "autoload": { + "psr-4": { + "Calendar\\": "src/" + } + }, + "autoload-dev": { + "psr-4": { + "Calendar\\": "test/" + } + } +} diff --git a/phpcs.xml b/phpcs.xml new file mode 100644 index 0000000..9be813c --- /dev/null +++ b/phpcs.xml @@ -0,0 +1,21 @@ + + + ./src + ./test + + + + + + + + + + + + + + + + + diff --git a/phpmd.xml b/phpmd.xml new file mode 100644 index 0000000..20c29d9 --- /dev/null +++ b/phpmd.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/phpunit.xml b/phpunit.xml new file mode 100644 index 0000000..fea734f --- /dev/null +++ b/phpunit.xml @@ -0,0 +1,27 @@ + + + + + + + + + + ./test/ + + + + + + ./ + + ./test + ./vendor + + + + diff --git a/src/CalendarInterface.php b/src/CalendarInterface.php new file mode 100644 index 0000000..06a4aff --- /dev/null +++ b/src/CalendarInterface.php @@ -0,0 +1,62 @@ + 9 because March starts on week 9) + * + * @return int + */ + public function getFirstWeek(); + + /** + * Get the number of days in this month + * + * @return int + */ + public function getNumberOfDaysInThisMonth(); + + /** + * Get the number of days in the previous month + * + * @return int + */ + public function getNumberOfDaysInPreviousMonth(); + + /** + * Get the calendar array + * + * @return array + */ + public function getCalendar(); +} diff --git a/test/CalendarTest.php b/test/CalendarTest.php new file mode 100644 index 0000000..4e3c97f --- /dev/null +++ b/test/CalendarTest.php @@ -0,0 +1,379 @@ +assertSame($day, $calendar->getDay()); + $this->assertSame($weekday, $calendar->getWeekDay()); + $this->assertSame($first_weekday, $calendar->getFirstWeekDay()); + $this->assertSame($number_of_days, $calendar->getNumberOfDaysInThisMonth()); + $this->assertSame($number_of_days_prev, $calendar->getNumberOfDaysInPreviousMonth()); + + $this->assertSame($result, $calendar->getCalendar()); + } + + public function dataProvider() + { + return [ + ['2016-01-01', 1, 5, 5, 31, 31, [ + 53 => [28 => false, 29 => false, 30 => false, 31 => false, 1 => false, 2 => false, 3 => false, ], + 1 => [4 => false, 5 => false, 6 => false, 7 => false, 8 => false, 9 => false, 10 => false, ], + 2 => [11 => false, 12 => false, 13 => false, 14 => false, 15 => false, 16 => false, 17 => false, ], + 3 => [18 => false, 19 => false, 20 => false, 21 => false, 22 => false, 23 => false, 24 => false, ], + 4 => [25 => false, 26 => false, 27 => false, 28 => false, 29 => false, 30 => false, 31 => false, ], + ]], + + ['2016-01-03', 3, 7, 5, 31, 31, [ + 53 => [28 => false, 29 => false, 30 => false, 31 => false, 1 => false, 2 => false, 3 => false, ], + 1 => [4 => false, 5 => false, 6 => false, 7 => false, 8 => false, 9 => false, 10 => false, ], + 2 => [11 => false, 12 => false, 13 => false, 14 => false, 15 => false, 16 => false, 17 => false, ], + 3 => [18 => false, 19 => false, 20 => false, 21 => false, 22 => false, 23 => false, 24 => false, ], + 4 => [25 => false, 26 => false, 27 => false, 28 => false, 29 => false, 30 => false, 31 => false, ], + ]], + + ['2016-01-04', 4, 1, 5, 31, 31, [ + 53 => [28 => true, 29 => true, 30 => true, 31 => true, 1 => true, 2 => true, 3 => true, ], + 1 => [4 => false, 5 => false, 6 => false, 7 => false, 8 => false, 9 => false, 10 => false, ], + 2 => [11 => false, 12 => false, 13 => false, 14 => false, 15 => false, 16 => false, 17 => false, ], + 3 => [18 => false, 19 => false, 20 => false, 21 => false, 22 => false, 23 => false, 24 => false, ], + 4 => [25 => false, 26 => false, 27 => false, 28 => false, 29 => false, 30 => false, 31 => false, ], + ]], + + ['2016-01-05', 5, 2, 5, 31, 31, [ + 53 => [28 => true, 29 => true, 30 => true, 31 => true, 1 => true, 2 => true, 3 => true, ], + 1 => [4 => false, 5 => false, 6 => false, 7 => false, 8 => false, 9 => false, 10 => false, ], + 2 => [11 => false, 12 => false, 13 => false, 14 => false, 15 => false, 16 => false, 17 => false, ], + 3 => [18 => false, 19 => false, 20 => false, 21 => false, 22 => false, 23 => false, 24 => false, ], + 4 => [25 => false, 26 => false, 27 => false, 28 => false, 29 => false, 30 => false, 31 => false, ], + ]], + + ['2016-01-06', 6, 3, 5, 31, 31, [ + 53 => [28 => true, 29 => true, 30 => true, 31 => true, 1 => true, 2 => true, 3 => true, ], + 1 => [4 => false, 5 => false, 6 => false, 7 => false, 8 => false, 9 => false, 10 => false, ], + 2 => [11 => false, 12 => false, 13 => false, 14 => false, 15 => false, 16 => false, 17 => false, ], + 3 => [18 => false, 19 => false, 20 => false, 21 => false, 22 => false, 23 => false, 24 => false, ], + 4 => [25 => false, 26 => false, 27 => false, 28 => false, 29 => false, 30 => false, 31 => false, ], + ]], + + ['2016-01-07', 7, 4, 5, 31, 31, [ + 53 => [28 => true, 29 => true, 30 => true, 31 => true, 1 => true, 2 => true, 3 => true, ], + 1 => [4 => false, 5 => false, 6 => false, 7 => false, 8 => false, 9 => false, 10 => false, ], + 2 => [11 => false, 12 => false, 13 => false, 14 => false, 15 => false, 16 => false, 17 => false, ], + 3 => [18 => false, 19 => false, 20 => false, 21 => false, 22 => false, 23 => false, 24 => false, ], + 4 => [25 => false, 26 => false, 27 => false, 28 => false, 29 => false, 30 => false, 31 => false, ], + ]], + + ['2016-01-08', 8, 5, 5, 31, 31, [ + 53 => [28 => true, 29 => true, 30 => true, 31 => true, 1 => true, 2 => true, 3 => true, ], + 1 => [4 => false, 5 => false, 6 => false, 7 => false, 8 => false, 9 => false, 10 => false, ], + 2 => [11 => false, 12 => false, 13 => false, 14 => false, 15 => false, 16 => false, 17 => false, ], + 3 => [18 => false, 19 => false, 20 => false, 21 => false, 22 => false, 23 => false, 24 => false, ], + 4 => [25 => false, 26 => false, 27 => false, 28 => false, 29 => false, 30 => false, 31 => false, ], + ]], + + ['2016-01-09', 9, 6, 5, 31, 31, [ + 53 => [28 => true, 29 => true, 30 => true, 31 => true, 1 => true, 2 => true, 3 => true, ], + 1 => [4 => false, 5 => false, 6 => false, 7 => false, 8 => false, 9 => false, 10 => false, ], + 2 => [11 => false, 12 => false, 13 => false, 14 => false, 15 => false, 16 => false, 17 => false, ], + 3 => [18 => false, 19 => false, 20 => false, 21 => false, 22 => false, 23 => false, 24 => false, ], + 4 => [25 => false, 26 => false, 27 => false, 28 => false, 29 => false, 30 => false, 31 => false, ], + ]], + + ['2016-01-10', 10, 7, 5, 31, 31, [ + 53 => [28 => true, 29 => true, 30 => true, 31 => true, 1 => true, 2 => true, 3 => true, ], + 1 => [4 => false, 5 => false, 6 => false, 7 => false, 8 => false, 9 => false, 10 => false, ], + 2 => [11 => false, 12 => false, 13 => false, 14 => false, 15 => false, 16 => false, 17 => false, ], + 3 => [18 => false, 19 => false, 20 => false, 21 => false, 22 => false, 23 => false, 24 => false, ], + 4 => [25 => false, 26 => false, 27 => false, 28 => false, 29 => false, 30 => false, 31 => false, ], + ]], + + ['2016-01-11', 11, 1, 5, 31, 31, [ + 53 => [28 => false, 29 => false, 30 => false, 31 => false, 1 => false, 2 => false, 3 => false, ], + 1 => [4 => true, 5 => true, 6 => true, 7 => true, 8 => true, 9 => true, 10 => true, ], + 2 => [11 => false, 12 => false, 13 => false, 14 => false, 15 => false, 16 => false, 17 => false, ], + 3 => [18 => false, 19 => false, 20 => false, 21 => false, 22 => false, 23 => false, 24 => false, ], + 4 => [25 => false, 26 => false, 27 => false, 28 => false, 29 => false, 30 => false, 31 => false, ], + ]], + + ['2016-01-17', 17, 7, 5, 31, 31, [ + 53 => [28 => false, 29 => false, 30 => false, 31 => false, 1 => false, 2 => false, 3 => false, ], + 1 => [4 => true, 5 => true, 6 => true, 7 => true, 8 => true, 9 => true, 10 => true, ], + 2 => [11 => false, 12 => false, 13 => false, 14 => false, 15 => false, 16 => false, 17 => false, ], + 3 => [18 => false, 19 => false, 20 => false, 21 => false, 22 => false, 23 => false, 24 => false, ], + 4 => [25 => false, 26 => false, 27 => false, 28 => false, 29 => false, 30 => false, 31 => false, ], + ]], + + ['2016-01-25', 25, 1, 5, 31, 31, [ + 53 => [28 => false, 29 => false, 30 => false, 31 => false, 1 => false, 2 => false, 3 => false, ], + 1 => [4 => false, 5 => false, 6 => false, 7 => false, 8 => false, 9 => false, 10 => false, ], + 2 => [11 => false, 12 => false, 13 => false, 14 => false, 15 => false, 16 => false, 17 => false, ], + 3 => [18 => true, 19 => true, 20 => true, 21 => true, 22 => true, 23 => true, 24 => true, ], + 4 => [25 => false, 26 => false, 27 => false, 28 => false, 29 => false, 30 => false, 31 => false, ], + ]], + + ['2016-01-31', 31, 7, 5, 31, 31, [ + 53 => [28 => false, 29 => false, 30 => false, 31 => false, 1 => false, 2 => false, 3 => false, ], + 1 => [4 => false, 5 => false, 6 => false, 7 => false, 8 => false, 9 => false, 10 => false, ], + 2 => [11 => false, 12 => false, 13 => false, 14 => false, 15 => false, 16 => false, 17 => false, ], + 3 => [18 => true, 19 => true, 20 => true, 21 => true, 22 => true, 23 => true, 24 => true, ], + 4 => [25 => false, 26 => false, 27 => false, 28 => false, 29 => false, 30 => false, 31 => false, ], + ]], + + ['2016-02-01', 1, 1, 1, 29, 31, [ + 5 => [1 => false, 2 => false, 3 => false, 4 => false, 5 => false, 6 => false, 7 => false, ], + 6 => [8 => false, 9 => false, 10 => false, 11 => false, 12 => false, 13 => false, 14 => false, ], + 7 => [15 => false, 16 => false, 17 => false, 18 => false, 19 => false, 20 => false, 21 => false, ], + 8 => [22 => false, 23 => false, 24 => false, 25 => false, 26 => false, 27 => false, 28 => false, ], + 9 => [29 => false, 1 => false, 2 => false, 3 => false, 4 => false, 5 => false, 6 => false, ], + ]], + + ['2016-02-08', 8, 1, 1, 29, 31, [ + 5 => [1 => true, 2 => true, 3 => true, 4 => true, 5 => true, 6 => true, 7 => true, ], + 6 => [8 => false, 9 => false, 10 => false, 11 => false, 12 => false, 13 => false, 14 => false, ], + 7 => [15 => false, 16 => false, 17 => false, 18 => false, 19 => false, 20 => false, 21 => false, ], + 8 => [22 => false, 23 => false, 24 => false, 25 => false, 26 => false, 27 => false, 28 => false, ], + 9 => [29 => false, 1 => false, 2 => false, 3 => false, 4 => false, 5 => false, 6 => false, ], + ]], + + ['2016-02-29', 29, 1, 1, 29, 31, [ + 5 => [1 => false, 2 => false, 3 => false, 4 => false, 5 => false, 6 => false, 7 => false, ], + 6 => [8 => false, 9 => false, 10 => false, 11 => false, 12 => false, 13 => false, 14 => false, ], + 7 => [15 => false, 16 => false, 17 => false, 18 => false, 19 => false, 20 => false, 21 => false, ], + 8 => [22 => true, 23 => true, 24 => true, 25 => true, 26 => true, 27 => true, 28 => true, ], + 9 => [29 => false, 1 => false, 2 => false, 3 => false, 4 => false, 5 => false, 6 => false, ], + ]], + + ['2016-03-07', 7, 1, 2, 31, 29, [ + 9 => [29 => true, 1 => true, 2 => true, 3 => true, 4 => true, 5 => true, 6 => true, ], + 10 => [7 => false, 8 => false, 9 => false, 10 => false, 11 => false, 12 => false, 13 => false, ], + 11 => [14 => false, 15 => false, 16 => false, 17 => false, 18 => false, 19 => false, 20 => false, ], + 12 => [21 => false, 22 => false, 23 => false, 24 => false, 25 => false, 26 => false, 27 => false, ], + 13 => [28 => false, 29 => false, 30 => false, 31 => false, 1 => false, 2 => false, 3 => false, ], + ]], + + ['2016-04-01', 1, 5, 5, 30, 31, [ + 13 => [28 => false, 29 => false, 30 => false, 31 => false, 1 => false, 2 => false, 3 => false, ], + 14 => [4 => false, 5 => false, 6 => false, 7 => false, 8 => false, 9 => false, 10 => false, ], + 15 => [11 => false, 12 => false, 13 => false, 14 => false, 15 => false, 16 => false, 17 => false, ], + 16 => [18 => false, 19 => false, 20 => false, 21 => false, 22 => false, 23 => false, 24 => false, ], + 17 => [25 => false, 26 => false, 27 => false, 28 => false, 29 => false, 30 => false, 1 => false, ], + ]], + + ['2016-04-04', 4, 1, 5, 30, 31, [ + 13 => [28 => true, 29 => true, 30 => true, 31 => true, 1 => true, 2 => true, 3 => true, ], + 14 => [4 => false, 5 => false, 6 => false, 7 => false, 8 => false, 9 => false, 10 => false, ], + 15 => [11 => false, 12 => false, 13 => false, 14 => false, 15 => false, 16 => false, 17 => false, ], + 16 => [18 => false, 19 => false, 20 => false, 21 => false, 22 => false, 23 => false, 24 => false, ], + 17 => [25 => false, 26 => false, 27 => false, 28 => false, 29 => false, 30 => false, 1 => false, ], + ]], + + ['2016-05-01', 1, 7, 7, 31, 30, [ + 17 => [25 => false, 26 => false, 27 => false, 28 => false, 29 => false, 30 => false, 1 => false, ], + 18 => [2 => false, 3 => false, 4 => false, 5 => false, 6 => false, 7 => false, 8 => false, ], + 19 => [9 => false, 10 => false, 11 => false, 12 => false, 13 => false, 14 => false, 15 => false, ], + 20 => [16 => false, 17 => false, 18 => false, 19 => false, 20 => false, 21 => false, 22 => false, ], + 21 => [23 => false, 24 => false, 25 => false, 26 => false, 27 => false, 28 => false, 29 => false, ], + 22 => [30 => false, 31 => false, 1 => false, 2 => false, 3 => false, 4 => false, 5 => false, ], + ]], + + ['2016-05-30', 30, 1, 7, 31, 30, [ + 17 => [25 => false, 26 => false, 27 => false, 28 => false, 29 => false, 30 => false, 1 => false, ], + 18 => [2 => false, 3 => false, 4 => false, 5 => false, 6 => false, 7 => false, 8 => false, ], + 19 => [9 => false, 10 => false, 11 => false, 12 => false, 13 => false, 14 => false, 15 => false, ], + 20 => [16 => false, 17 => false, 18 => false, 19 => false, 20 => false, 21 => false, 22 => false, ], + 21 => [23 => true, 24 => true, 25 => true, 26 => true, 27 => true, 28 => true, 29 => true, ], + 22 => [30 => false, 31 => false, 1 => false, 2 => false, 3 => false, 4 => false, 5 => false, ], + ]], + + ['2016-05-31', 31, 2, 7, 31, 30, [ + 17 => [25 => false, 26 => false, 27 => false, 28 => false, 29 => false, 30 => false, 1 => false, ], + 18 => [2 => false, 3 => false, 4 => false, 5 => false, 6 => false, 7 => false, 8 => false, ], + 19 => [9 => false, 10 => false, 11 => false, 12 => false, 13 => false, 14 => false, 15 => false, ], + 20 => [16 => false, 17 => false, 18 => false, 19 => false, 20 => false, 21 => false, 22 => false, ], + 21 => [23 => true, 24 => true, 25 => true, 26 => true, 27 => true, 28 => true, 29 => true, ], + 22 => [30 => false, 31 => false, 1 => false, 2 => false, 3 => false, 4 => false, 5 => false, ], + ]], + + ['2016-06-22', 22, 3, 3, 30, 31, [ + 22 => [30 => false, 31 => false, 1 => false, 2 => false, 3 => false, 4 => false, 5 => false, ], + 23 => [6 => false, 7 => false, 8 => false, 9 => false, 10 => false, 11 => false, 12 => false, ], + 24 => [13 => true, 14 => true, 15 => true, 16 => true, 17 => true, 18 => true, 19 => true, ], + 25 => [20 => false, 21 => false, 22 => false, 23 => false, 24 => false, 25 => false, 26 => false, ], + 26 => [27 => false, 28 => false, 29 => false, 30 => false, 1 => false, 2 => false, 3 => false, ], + ]], + + ['2016-07-17', 17, 7, 5, 31, 30, [ + 26 => [27 => false, 28 => false, 29 => false, 30 => false, 1 => false, 2 => false, 3 => false, ], + 27 => [4 => true, 5 => true, 6 => true, 7 => true, 8 => true, 9 => true, 10 => true, ], + 28 => [11 => false, 12 => false, 13 => false, 14 => false, 15 => false, 16 => false, 17 => false, ], + 29 => [18 => false, 19 => false, 20 => false, 21 => false, 22 => false, 23 => false, 24 => false, ], + 30 => [25 => false, 26 => false, 27 => false, 28 => false, 29 => false, 30 => false, 31 => false, ], + ]], + + ['2016-07-31', 31, 7, 5, 31, 30, [ + 26 => [27 => false, 28 => false, 29 => false, 30 => false, 1 => false, 2 => false, 3 => false, ], + 27 => [4 => false, 5 => false, 6 => false, 7 => false, 8 => false, 9 => false, 10 => false, ], + 28 => [11 => false, 12 => false, 13 => false, 14 => false, 15 => false, 16 => false, 17 => false, ], + 29 => [18 => true, 19 => true, 20 => true, 21 => true, 22 => true, 23 => true, 24 => true, ], + 30 => [25 => false, 26 => false, 27 => false, 28 => false, 29 => false, 30 => false, 31 => false, ], + ]], + + ['2016-08-01', 1, 1, 1, 31, 31, [ + 31 => [1 => false, 2 => false, 3 => false, 4 => false, 5 => false, 6 => false, 7 => false], + 32 => [8 => false, 9 => false, 10 => false, 11 => false, 12 => false, 13 => false, 14 => false], + 33 => [15 => false, 16 => false, 17 => false, 18 => false, 19 => false, 20 => false, 21 => false], + 34 => [22 => false, 23 => false, 24 => false, 25 => false, 26 => false, 27 => false, 28 => false], + 35 => [29 => false, 30 => false, 31 => false, 1 => false, 2 => false, 3 => false, 4 => false, ], + ]], + + ['2016-08-29', 29, 1, 1, 31, 31, [ + 31 => [1 => false, 2 => false, 3 => false, 4 => false, 5 => false, 6 => false, 7 => false], + 32 => [8 => false, 9 => false, 10 => false, 11 => false, 12 => false, 13 => false, 14 => false], + 33 => [15 => false, 16 => false, 17 => false, 18 => false, 19 => false, 20 => false, 21 => false], + 34 => [22 => true, 23 => true, 24 => true, 25 => true, 26 => true, 27 => true, 28 => true], + 35 => [29 => false, 30 => false, 31 => false, 1 => false, 2 => false, 3 => false, 4 => false, ], + ]], + + ['2016-08-31', 31, 3, 1, 31, 31, [ + 31 => [1 => false, 2 => false, 3 => false, 4 => false, 5 => false, 6 => false, 7 => false], + 32 => [8 => false, 9 => false, 10 => false, 11 => false, 12 => false, 13 => false, 14 => false], + 33 => [15 => false, 16 => false, 17 => false, 18 => false, 19 => false, 20 => false, 21 => false], + 34 => [22 => true, 23 => true, 24 => true, 25 => true, 26 => true, 27 => true, 28 => true], + 35 => [29 => false, 30 => false, 31 => false, 1 => false, 2 => false, 3 => false, 4 => false, ], + ]], + + ['2016-09-03', 3, 6, 4, 30, 31, [ + 35 => [29 => false, 30 => false, 31 => false, 1 => false, 2 => false, 3 => false, 4 => false, ], + 36 => [5 => false, 6 => false, 7 => false, 8 => false, 9 => false, 10 => false, 11 => false, ], + 37 => [12 => false, 13 => false, 14 => false, 15 => false, 16 => false, 17 => false, 18 => false, ], + 38 => [19 => false, 20 => false, 21 => false, 22 => false, 23 => false, 24 => false, 25 => false, ], + 39 => [26 => false, 27 => false, 28 => false, 29 => false, 30 => false, 1 => false, 2 => false, ], + ]], + + ['2016-09-06', 6, 2, 4, 30, 31, [ + 35 => [29 => true, 30 => true, 31 => true, 1 => true, 2 => true, 3 => true, 4 => true, ], + 36 => [5 => false, 6 => false, 7 => false, 8 => false, 9 => false, 10 => false, 11 => false, ], + 37 => [12 => false, 13 => false, 14 => false, 15 => false, 16 => false, 17 => false, 18 => false, ], + 38 => [19 => false, 20 => false, 21 => false, 22 => false, 23 => false, 24 => false, 25 => false, ], + 39 => [26 => false, 27 => false, 28 => false, 29 => false, 30 => false, 1 => false, 2 => false, ], + ]], + + ['2016-10-12', 12, 3, 6, 31, 30, [ + 39 => [26 => false, 27 => false, 28 => false, 29 => false, 30 => false, 1 => false, 2 => false, ], + 40 => [3 => true, 4 => true, 5 => true, 6 => true, 7 => true, 8 => true, 9 => true, ], + 41 => [10 => false, 11 => false, 12 => false, 13 => false, 14 => false, 15 => false, 16 => false, ], + 42 => [17 => false, 18 => false, 19 => false, 20 => false, 21 => false, 22 => false, 23 => false, ], + 43 => [24 => false, 25 => false, 26 => false, 27 => false, 28 => false, 29 => false, 30 => false, ], + 44 => [31 => false, 1 => false, 2 => false, 3 => false, 4 => false, 5 => false, 6 => false, ], + ]], + + ['2016-10-31', 31, 1, 6, 31, 30, [ + 39 => [26 => false, 27 => false, 28 => false, 29 => false, 30 => false, 1 => false, 2 => false, ], + 40 => [3 => false, 4 => false, 5 => false, 6 => false, 7 => false, 8 => false, 9 => false, ], + 41 => [10 => false, 11 => false, 12 => false, 13 => false, 14 => false, 15 => false, 16 => false, ], + 42 => [17 => false, 18 => false, 19 => false, 20 => false, 21 => false, 22 => false, 23 => false, ], + 43 => [24 => true, 25 => true, 26 => true, 27 => true, 28 => true, 29 => true, 30 => true, ], + 44 => [31 => false, 1 => false, 2 => false, 3 => false, 4 => false, 5 => false, 6 => false, ], + ]], + + ['2016-11-01', 1, 2, 2, 30, 31, [ + 44 => [31 => false, 1 => false, 2 => false, 3 => false, 4 => false, 5 => false, 6 => false, ], + 45 => [7 => false, 8 => false, 9 => false, 10 => false, 11 => false, 12 => false, 13 => false, ], + 46 => [14 => false, 15 => false, 16 => false, 17 => false, 18 => false, 19 => false, 20 => false, ], + 47 => [21 => false, 22 => false, 23 => false, 24 => false, 25 => false, 26 => false, 27 => false, ], + 48 => [28 => false, 29 => false, 30 => false, 1 => false, 2 => false, 3 => false, 4 => false, ], + ]], + + ['2016-11-13', 13, 7, 2, 30, 31, [ + 44 => [31 => true, 1 => true, 2 => true, 3 => true, 4 => true, 5 => true, 6 => true, ], + 45 => [7 => false, 8 => false, 9 => false, 10 => false, 11 => false, 12 => false, 13 => false, ], + 46 => [14 => false, 15 => false, 16 => false, 17 => false, 18 => false, 19 => false, 20 => false, ], + 47 => [21 => false, 22 => false, 23 => false, 24 => false, 25 => false, 26 => false, 27 => false, ], + 48 => [28 => false, 29 => false, 30 => false, 1 => false, 2 => false, 3 => false, 4 => false, ], + ]], + + ['2016-11-10', 10, 4, 2, 30, 31, [ + 44 => [31 => true, 1 => true, 2 => true, 3 => true, 4 => true, 5 => true, 6 => true, ], + 45 => [7 => false, 8 => false, 9 => false, 10 => false, 11 => false, 12 => false, 13 => false, ], + 46 => [14 => false, 15 => false, 16 => false, 17 => false, 18 => false, 19 => false, 20 => false, ], + 47 => [21 => false, 22 => false, 23 => false, 24 => false, 25 => false, 26 => false, 27 => false, ], + 48 => [28 => false, 29 => false, 30 => false, 1 => false, 2 => false, 3 => false, 4 => false, ], + ]], + + ['2016-12-10', 10, 6, 4, 31, 30, [ + 48 => [28 => true, 29 => true, 30 => true, 1 => true, 2 => true, 3 => true, 4 => true, ], + 49 => [5 => false, 6 => false, 7 => false, 8 => false, 9 => false, 10 => false, 11 => false, ], + 50 => [12 => false, 13 => false, 14 => false, 15 => false, 16 => false, 17 => false, 18 => false, ], + 51 => [19 => false, 20 => false, 21 => false, 22 => false, 23 => false, 24 => false, 25 => false, ], + 52 => [26 => false, 27 => false, 28 => false, 29 => false, 30 => false, 31 => false, 1 => false, ], + ]], + + ['2016-12-31', 31, 6, 4, 31, 30, [ + 48 => [28 => false, 29 => false, 30 => false, 1 => false, 2 => false, 3 => false, 4 => false, ], + 49 => [5 => false, 6 => false, 7 => false, 8 => false, 9 => false, 10 => false, 11 => false, ], + 50 => [12 => false, 13 => false, 14 => false, 15 => false, 16 => false, 17 => false, 18 => false, ], + 51 => [19 => true, 20 => true, 21 => true, 22 => true, 23 => true, 24 => true, 25 => true, ], + 52 => [26 => false, 27 => false, 28 => false, 29 => false, 30 => false, 31 => false, 1 => false, ], + ]], + + ['2015-12-01', 1, 2, 2, 31, 30, [ + 49 => [30 => false, 1 => false, 2 => false, 3 => false, 4 => false, 5 => false, 6 => false, ], + 50 => [7 => false, 8 => false, 9 => false, 10 => false, 11 => false, 12 => false, 13 => false, ], + 51 => [14 => false, 15 => false, 16 => false, 17 => false, 18 => false, 19 => false, 20 => false, ], + 52 => [21 => false, 22 => false, 23 => false, 24 => false, 25 => false, 26 => false, 27 => false, ], + 53 => [28 => false, 29 => false, 30 => false, 31 => false, 1 => false, 2 => false, 3 => false, ], + ]], + + ['2015-12-31', 31, 4, 2, 31, 30, [ + 49 => [30 => false, 1 => false, 2 => false, 3 => false, 4 => false, 5 => false, 6 => false, ], + 50 => [7 => false, 8 => false, 9 => false, 10 => false, 11 => false, 12 => false, 13 => false, ], + 51 => [14 => false, 15 => false, 16 => false, 17 => false, 18 => false, 19 => false, 20 => false, ], + 52 => [21 => true, 22 => true, 23 => true, 24 => true, 25 => true, 26 => true, 27 => true, ], + 53 => [28 => false, 29 => false, 30 => false, 31 => false, 1 => false, 2 => false, 3 => false, ], + ]], + + ['2010-02-01', 1, 1, 1, 28, 31, [ + 5 => [1 => false, 2 => false, 3 => false, 4 => false, 5 => false, 6 => false, 7 => false], + 6 => [8 => false, 9 => false, 10 => false, 11 => false, 12 => false, 13 => false, 14 => false], + 7 => [15 => false, 16 => false, 17 => false, 18 => false, 19 => false, 20 => false, 21 => false], + 8 => [22 => false, 23 => false, 24 => false, 25 => false, 26 => false, 27 => false, 28 => false], + ]], + + ['2010-03-01', 1, 1, 1, 31, 28, [ + 9 => [1 => false, 2 => false, 3 => false, 4 => false, 5 => false, 6 => false, 7 => false], + 10 => [8 => false, 9 => false, 10 => false, 11 => false, 12 => false, 13 => false, 14 => false], + 11 => [15 => false, 16 => false, 17 => false, 18 => false, 19 => false, 20 => false, 21 => false], + 12 => [22 => false, 23 => false, 24 => false, 25 => false, 26 => false, 27 => false, 28 => false], + 13 => [29 => false, 30 => false, 31 => false, 1 => false, 2 => false, 3 => false, 4 => false], + ]], + ]; + } +}