AddTest::testAddMonthPassingArg()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 4
rs 10
cc 1
eloc 2
nc 1
nop 0
1
<?php
2
3
namespace HMLB\Date\Tests\Date;
4
5
use HMLB\Date\Date;
6
use HMLB\Date\Tests\AbstractTestCase;
7
8
class AddTest extends AbstractTestCase
9
{
10
    public function testAddYearsPositive()
11
    {
12
        $this->assertSame(1976, Date::createFromDate(1975)->addYears(1)->getYear());
13
    }
14
15
    public function testAddYearsZero()
16
    {
17
        $this->assertSame(1975, Date::createFromDate(1975)->addYears(0)->getYear());
18
    }
19
20
    public function testAddYearsNegative()
21
    {
22
        $this->assertSame(1974, Date::createFromDate(1975)->addYears(-1)->getYear());
23
    }
24
25
    public function testAddYear()
26
    {
27
        $this->assertSame(1976, Date::createFromDate(1975)->addYear()->getYear());
28
    }
29
30
    public function testAddMonthsPositive()
31
    {
32
        $this->assertSame(1, Date::createFromDate(1975, 12)->addMonths(1)->getMonth());
33
    }
34
35
    public function testAddMonthsZero()
36
    {
37
        $this->assertSame(12, Date::createFromDate(1975, 12)->addMonths(0)->getMonth());
38
    }
39
40
    public function testAddMonthsNegative()
41
    {
42
        $this->assertSame(11, Date::createFromDate(1975, 12, 1)->addMonths(-1)->getMonth());
43
    }
44
45
    public function testAddMonth()
46
    {
47
        $this->assertSame(1, Date::createFromDate(1975, 12)->addMonth()->getMonth());
48
    }
49
50
    public function testAddMonthWithOverflow()
51
    {
52
        $this->assertSame(3, Date::createFromDate(2012, 1, 31)->addMonth()->getMonth());
53
    }
54
55
    public function testAddMonthsNoOverflowPositive()
56
    {
57
        $this->assertSame('2012-02-29', Date::createFromDate(2012, 1, 31)->addMonthNoOverflow()->toDateString());
58
        $this->assertSame('2012-03-31', Date::createFromDate(2012, 1, 31)->addMonthsNoOverflow(2)->toDateString());
59
        $this->assertSame('2012-03-29', Date::createFromDate(2012, 2, 29)->addMonthNoOverflow()->toDateString());
60
        $this->assertSame('2012-02-29', Date::createFromDate(2011, 12, 31)->addMonthsNoOverflow(2)->toDateString());
61
    }
62
63
    public function testAddMonthsNoOverflowZero()
64
    {
65
        $this->assertSame(12, Date::createFromDate(1975, 12)->addMonths(0)->getMonth());
66
    }
67
68
    public function testAddMonthsNoOverflowNegative()
69
    {
70
        $this->assertSame('2012-01-29', Date::createFromDate(2012, 2, 29)->addMonthsNoOverflow(-1)->toDateString());
71
        $this->assertSame('2012-01-31', Date::createFromDate(2012, 3, 31)->addMonthsNoOverflow(-2)->toDateString());
72
        $this->assertSame('2012-02-29', Date::createFromDate(2012, 3, 31)->addMonthsNoOverflow(-1)->toDateString());
73
        $this->assertSame('2011-12-31', Date::createFromDate(2012, 1, 31)->addMonthsNoOverflow(-1)->toDateString());
74
    }
75
76
    public function testAddDaysPositive()
77
    {
78
        $this->assertSame(1, Date::createFromDate(1975, 5, 31)->addDays(1)->getDay());
79
    }
80
81
    public function testAddDaysZero()
82
    {
83
        $this->assertSame(31, Date::createFromDate(1975, 5, 31)->addDays(0)->getDay());
84
    }
85
86
    public function testAddDaysNegative()
87
    {
88
        $this->assertSame(30, Date::createFromDate(1975, 5, 31)->addDays(-1)->getDay());
89
    }
90
91
    public function testAddDay()
92
    {
93
        $this->assertSame(1, Date::createFromDate(1975, 5, 31)->addDay()->getDay());
94
    }
95
96
    public function testAddWeekdaysPositive()
97
    {
98
        $dt = Date::create(2012, 1, 4, 13, 2, 1)->addWeekdays(9);
99
100
        $this->assertSame(17, $dt->getDay());
101
102
        // test for phpbug id 54909
103
        $this->assertSame(13, $dt->getHour());
104
        $this->assertSame(2, $dt->getMinute());
105
        $this->assertSame(1, $dt->getSecond());
106
    }
107
108
    public function testAddWeekdaysZero()
109
    {
110
        $this->assertSame(4, Date::createFromDate(2012, 1, 4)->addWeekdays(0)->getDay());
111
    }
112
113
    public function testAddWeekdaysNegative()
114
    {
115
        $this->assertSame(18, Date::createFromDate(2012, 1, 31)->addWeekdays(-9)->getDay());
116
    }
117
118
    public function testAddWeekday()
119
    {
120
        $this->assertSame(9, Date::createFromDate(2012, 1, 6)->addWeekday()->getDay());
121
    }
122
123
    public function testAddWeekdayDuringWeekend()
124
    {
125
        $this->assertSame(9, Date::createFromDate(2012, 1, 7)->addWeekday()->getDay());
126
    }
127
128
    public function testAddWeeksPositive()
129
    {
130
        $this->assertSame(28, Date::createFromDate(1975, 5, 21)->addWeeks(1)->getDay());
131
    }
132
133
    public function testAddWeeksZero()
134
    {
135
        $this->assertSame(21, Date::createFromDate(1975, 5, 21)->addWeeks(0)->getDay());
136
    }
137
138
    public function testAddWeeksNegative()
139
    {
140
        $this->assertSame(14, Date::createFromDate(1975, 5, 21)->addWeeks(-1)->getDay());
141
    }
142
143
    public function testAddWeek()
144
    {
145
        $this->assertSame(28, Date::createFromDate(1975, 5, 21)->addWeek()->getDay());
146
    }
147
148
    public function testAddHoursPositive()
149
    {
150
        $this->assertSame(1, Date::createFromTime(0)->addHours(1)->getHour());
151
    }
152
153
    public function testAddHoursZero()
154
    {
155
        $this->assertSame(0, Date::createFromTime(0)->addHours(0)->getHour());
156
    }
157
158
    public function testAddHoursNegative()
159
    {
160
        $this->assertSame(23, Date::createFromTime(0)->addHours(-1)->getHour());
161
    }
162
163
    public function testAddHour()
164
    {
165
        $this->assertSame(1, Date::createFromTime(0)->addHour()->getHour());
166
    }
167
168
    public function testAddMinutesPositive()
169
    {
170
        $this->assertSame(1, Date::createFromTime(0, 0)->addMinutes(1)->getMinute());
171
    }
172
173
    public function testAddMinutesZero()
174
    {
175
        $this->assertSame(0, Date::createFromTime(0, 0)->addMinutes(0)->getMinute());
176
    }
177
178
    public function testAddMinutesNegative()
179
    {
180
        $this->assertSame(59, Date::createFromTime(0, 0)->addMinutes(-1)->getMinute());
181
    }
182
183
    public function testAddMinute()
184
    {
185
        $this->assertSame(1, Date::createFromTime(0, 0)->addMinute()->getMinute());
186
    }
187
188
    public function testAddSecondsPositive()
189
    {
190
        $this->assertSame(1, Date::createFromTime(0, 0, 0)->addSeconds(1)->getSecond());
191
    }
192
193
    public function testAddSecondsZero()
194
    {
195
        $this->assertSame(0, Date::createFromTime(0, 0, 0)->addSeconds(0)->getSecond());
196
    }
197
198
    public function testAddSecondsNegative()
199
    {
200
        $this->assertSame(59, Date::createFromTime(0, 0, 0)->addSeconds(-1)->getSecond());
201
    }
202
203
    public function testAddSecond()
204
    {
205
        $this->assertSame(1, Date::createFromTime(0, 0, 0)->addSecond()->getSecond());
206
    }
207
208
    /***** Test non plural methods with non default args *****/
209
210
    public function testAddYearPassingArg()
211
    {
212
        $this->assertSame(1977, Date::createFromDate(1975)->addYear(2)->getYear());
213
    }
214
215
    public function testAddMonthPassingArg()
216
    {
217
        $this->assertSame(7, Date::createFromDate(1975, 5, 1)->addMonth(2)->getMonth());
218
    }
219
220
    public function testAddMonthsNoOverflowPassingArg()
221
    {
222
        $dt = Date::createFromDate(2010, 12, 31)->addMonthsNoOverflow(2);
223
        $this->assertSame(2011, $dt->getYear());
224
        $this->assertSame(2, $dt->getMonth());
225
        $this->assertSame(28, $dt->getDay());
226
    }
227
228
    public function testAddDayPassingArg()
229
    {
230
        $this->assertSame(12, Date::createFromDate(1975, 5, 10)->addDay(2)->getDay());
231
    }
232
233
    public function testAddHourPassingArg()
234
    {
235
        $this->assertSame(2, Date::createFromTime(0)->addHour(2)->getHour());
236
    }
237
238
    public function testAddMinutePassingArg()
239
    {
240
        $this->assertSame(2, Date::createFromTime(0)->addMinute(2)->getMinute());
241
    }
242
243
    public function testAddSecondPassingArg()
244
    {
245
        $this->assertSame(2, Date::createFromTime(0)->addSecond(2)->getSecond());
246
    }
247
}
248