1
|
|
|
<?php |
2
|
|
|
namespace Assert\Tests; |
3
|
|
|
|
4
|
|
|
use Assert\Assertion; |
5
|
|
|
use Assert\AssertionFailedException; |
6
|
|
|
|
7
|
|
|
class AssertTest extends \PHPUnit_Framework_TestCase |
8
|
|
|
{ |
9
|
|
|
public static function dataInvalidFloat() |
10
|
|
|
{ |
11
|
|
|
return array( |
12
|
|
|
array(1), |
13
|
|
|
array(false), |
14
|
|
|
array("test"), |
15
|
|
|
array(null), |
16
|
|
|
array("1.23"), |
17
|
|
|
array("10"), |
18
|
|
|
); |
19
|
|
|
} |
20
|
|
|
|
21
|
|
|
/** |
22
|
|
|
* @dataProvider dataInvalidFloat |
23
|
|
|
*/ |
24
|
|
|
public function testInvalidFloat($nonFloat) |
25
|
|
|
{ |
26
|
|
|
$this->setExpectedException('Assert\AssertionFailedException', null, Assertion::INVALID_FLOAT); |
27
|
|
|
Assertion::float($nonFloat); |
28
|
|
|
} |
29
|
|
|
|
30
|
|
|
public function testValidFloat() |
31
|
|
|
{ |
32
|
|
|
Assertion::float(1.0); |
33
|
|
|
Assertion::float(0.1); |
34
|
|
|
Assertion::float(-1.1); |
35
|
|
|
} |
36
|
|
|
|
37
|
|
|
public static function dataInvalidInteger() |
38
|
|
|
{ |
39
|
|
|
return array( |
40
|
|
|
array(1.23), |
41
|
|
|
array(false), |
42
|
|
|
array("test"), |
43
|
|
|
array(null), |
44
|
|
|
array("1.23"), |
45
|
|
|
array("10"), |
46
|
|
|
array(new \DateTime()), |
47
|
|
|
); |
48
|
|
|
} |
49
|
|
|
|
50
|
|
|
/** |
51
|
|
|
* @dataProvider dataInvalidInteger |
52
|
|
|
*/ |
53
|
|
|
public function testInvalidInteger($nonInteger) |
54
|
|
|
{ |
55
|
|
|
$this->setExpectedException('Assert\AssertionFailedException', null, Assertion::INVALID_INTEGER); |
56
|
|
|
Assertion::integer($nonInteger); |
57
|
|
|
} |
58
|
|
|
|
59
|
|
|
public function testValidInteger() |
60
|
|
|
{ |
61
|
|
|
Assertion::integer(10); |
62
|
|
|
Assertion::integer(0); |
63
|
|
|
} |
64
|
|
|
|
65
|
|
|
public function testValidIntegerish() |
66
|
|
|
{ |
67
|
|
|
Assertion::integerish(10); |
68
|
|
|
Assertion::integerish("10"); |
69
|
|
|
} |
70
|
|
|
|
71
|
|
|
public static function dataInvalidIntegerish() |
72
|
|
|
{ |
73
|
|
|
return array( |
74
|
|
|
array(1.23), |
75
|
|
|
array(false), |
76
|
|
|
array("test"), |
77
|
|
|
array(null), |
78
|
|
|
array("1.23"), |
79
|
|
|
); |
80
|
|
|
} |
81
|
|
|
|
82
|
|
|
/** |
83
|
|
|
* @dataProvider dataInvalidIntegerish |
84
|
|
|
*/ |
85
|
|
|
public function testInvalidIntegerish($nonInteger) |
86
|
|
|
{ |
87
|
|
|
$this->setExpectedException('Assert\AssertionFailedException', null, Assertion::INVALID_INTEGERISH); |
88
|
|
|
Assertion::integerish($nonInteger); |
89
|
|
|
} |
90
|
|
|
|
91
|
|
|
public function testValidBoolean() |
92
|
|
|
{ |
93
|
|
|
Assertion::boolean(true); |
94
|
|
|
Assertion::boolean(false); |
95
|
|
|
} |
96
|
|
|
|
97
|
|
|
public function testInvalidBoolean() |
98
|
|
|
{ |
99
|
|
|
$this->setExpectedException('Assert\AssertionFailedException', null, Assertion::INVALID_BOOLEAN); |
100
|
|
|
Assertion::boolean(1); |
101
|
|
|
} |
102
|
|
|
|
103
|
|
|
public function testInvalidScalar() |
104
|
|
|
{ |
105
|
|
|
$this->setExpectedException('Assert\AssertionFailedException', null, Assertion::INVALID_SCALAR); |
106
|
|
|
Assertion::scalar(new \stdClass); |
107
|
|
|
} |
108
|
|
|
|
109
|
|
|
public function testValidScalar() |
110
|
|
|
{ |
111
|
|
|
Assertion::scalar("foo"); |
112
|
|
|
Assertion::scalar(52); |
113
|
|
|
Assertion::scalar(12.34); |
114
|
|
|
Assertion::scalar(false); |
115
|
|
|
} |
116
|
|
|
|
117
|
|
|
public static function dataInvalidNotEmpty() |
118
|
|
|
{ |
119
|
|
|
return array( |
120
|
|
|
array(""), |
121
|
|
|
array(false), |
122
|
|
|
array(0), |
123
|
|
|
array(null), |
124
|
|
|
array( array() ), |
125
|
|
|
); |
126
|
|
|
} |
127
|
|
|
|
128
|
|
|
/** |
129
|
|
|
* @dataProvider dataInvalidNotEmpty |
130
|
|
|
*/ |
131
|
|
|
public function testInvalidNotEmpty($value) |
132
|
|
|
{ |
133
|
|
|
$this->setExpectedException('Assert\AssertionFailedException', null, Assertion::VALUE_EMPTY); |
134
|
|
|
Assertion::notEmpty($value); |
135
|
|
|
} |
136
|
|
|
|
137
|
|
|
public function testNotEmpty() |
138
|
|
|
{ |
139
|
|
|
Assertion::notEmpty("test"); |
140
|
|
|
Assertion::notEmpty(1); |
141
|
|
|
Assertion::notEmpty(true); |
142
|
|
|
Assertion::notEmpty( array("foo") ); |
143
|
|
|
} |
144
|
|
|
|
145
|
|
|
public function testEmpty() |
146
|
|
|
{ |
147
|
|
|
Assertion::noContent(""); |
148
|
|
|
Assertion::noContent(0); |
149
|
|
|
Assertion::noContent(false); |
150
|
|
|
Assertion::noContent( array() ); |
151
|
|
|
} |
152
|
|
|
|
153
|
|
|
public static function dataInvalidEmpty() |
154
|
|
|
{ |
155
|
|
|
return array( |
156
|
|
|
array("foo"), |
157
|
|
|
array(true), |
158
|
|
|
array(12), |
159
|
|
|
array( array('foo') ), |
160
|
|
|
array( new \stdClass() ), |
161
|
|
|
); |
162
|
|
|
} |
163
|
|
|
|
164
|
|
|
/** |
165
|
|
|
* @dataProvider dataInvalidEmpty |
166
|
|
|
*/ |
167
|
|
|
public function testInvalidEmpty($value) |
168
|
|
|
{ |
169
|
|
|
$this->setExpectedException('Assert\AssertionFailedException', null, Assertion::VALUE_NOT_EMPTY); |
170
|
|
|
Assertion::noContent($value); |
171
|
|
|
} |
172
|
|
|
|
173
|
|
|
public function testNotNull() |
174
|
|
|
{ |
175
|
|
|
Assertion::notNull("1"); |
176
|
|
|
Assertion::notNull(1); |
177
|
|
|
Assertion::notNull(0); |
178
|
|
|
Assertion::notNull(array()); |
179
|
|
|
Assertion::notNull(false); |
180
|
|
|
} |
181
|
|
|
|
182
|
|
|
public function testInvalidNotNull() |
183
|
|
|
{ |
184
|
|
|
$this->setExpectedException('Assert\AssertionFailedException', null, Assertion::VALUE_NULL); |
185
|
|
|
Assertion::notNull(null); |
186
|
|
|
} |
187
|
|
|
|
188
|
|
|
public function testString() |
189
|
|
|
{ |
190
|
|
|
Assertion::string("test-string"); |
191
|
|
|
Assertion::string(""); |
192
|
|
|
} |
193
|
|
|
|
194
|
|
|
/** |
195
|
|
|
* @dataProvider dataInvalidString |
196
|
|
|
*/ |
197
|
|
|
public function testInvalidString($invalidString) |
198
|
|
|
{ |
199
|
|
|
$this->setExpectedException('Assert\AssertionFailedException', null, Assertion::INVALID_STRING); |
200
|
|
|
Assertion::string($invalidString); |
201
|
|
|
} |
202
|
|
|
|
203
|
|
|
public static function dataInvalidString() |
204
|
|
|
{ |
205
|
|
|
return array( |
206
|
|
|
array(1.23), |
207
|
|
|
array(false), |
208
|
|
|
array(new \ArrayObject), |
209
|
|
|
array(null), |
210
|
|
|
array(10), |
211
|
|
|
array(true), |
212
|
|
|
); |
213
|
|
|
} |
214
|
|
|
|
215
|
|
|
public function testInvalidRegex() |
216
|
|
|
{ |
217
|
|
|
$this->setExpectedException('Assert\AssertionFailedException', null, Assertion::INVALID_REGEX); |
218
|
|
|
Assertion::regex("foo", "(bar)"); |
219
|
|
|
} |
220
|
|
|
|
221
|
|
|
public function testInvalidRegexValueNotString() |
222
|
|
|
{ |
223
|
|
|
$this->setExpectedException('Assert\AssertionFailedException', null, Assertion::INVALID_STRING); |
224
|
|
|
Assertion::regex(array("foo"), "(bar)"); |
225
|
|
|
} |
226
|
|
|
|
227
|
|
|
public function testInvalidMinLength() |
228
|
|
|
{ |
229
|
|
|
$this->setExpectedException('Assert\AssertionFailedException', null, Assertion::INVALID_MIN_LENGTH); |
230
|
|
|
Assertion::minLength("foo", 4); |
231
|
|
|
} |
232
|
|
|
|
233
|
|
|
public function testValidMinLength() |
234
|
|
|
{ |
235
|
|
|
Assertion::minLength("foo", 3); |
236
|
|
|
Assertion::minLength("foo", 1); |
237
|
|
|
Assertion::minLength("foo", 0); |
238
|
|
|
Assertion::minLength("", 0); |
239
|
|
|
Assertion::minLength("址址", 2); |
240
|
|
|
} |
241
|
|
|
|
242
|
|
|
public function testInvalidMaxLength() |
243
|
|
|
{ |
244
|
|
|
$this->setExpectedException('Assert\AssertionFailedException', null, Assertion::INVALID_MAX_LENGTH); |
245
|
|
|
Assertion::maxLength("foo", 2); |
246
|
|
|
} |
247
|
|
|
|
248
|
|
|
public function testValidMaxLength() |
249
|
|
|
{ |
250
|
|
|
Assertion::maxLength("foo", 10); |
251
|
|
|
Assertion::maxLength("foo", 3); |
252
|
|
|
Assertion::maxLength("", 0); |
253
|
|
|
Assertion::maxLength("址址", 2); |
254
|
|
|
} |
255
|
|
|
|
256
|
|
|
public function testInvalidBetweenLengthMin() |
257
|
|
|
{ |
258
|
|
|
$this->setExpectedException('Assert\AssertionFailedException', null, Assertion::INVALID_MIN_LENGTH); |
259
|
|
|
Assertion::betweenLength("foo", 4, 100); |
260
|
|
|
} |
261
|
|
|
|
262
|
|
|
public function testInvalidBetweenLengthMax() |
263
|
|
|
{ |
264
|
|
|
$this->setExpectedException('Assert\AssertionFailedException', null, Assertion::INVALID_MAX_LENGTH); |
265
|
|
|
Assertion::betweenLength("foo", 0, 2); |
266
|
|
|
} |
267
|
|
|
|
268
|
|
|
public function testValidBetweenLength() |
269
|
|
|
{ |
270
|
|
|
Assertion::betweenLength("foo", 0, 3); |
271
|
|
|
Assertion::betweenLength("址址", 2, 2); |
272
|
|
|
} |
273
|
|
|
|
274
|
|
|
public function testInvalidStartsWith() |
275
|
|
|
{ |
276
|
|
|
$this->setExpectedException('Assert\AssertionFailedException', null, Assertion::INVALID_STRING_START); |
277
|
|
|
Assertion::startsWith("foo", "bar"); |
278
|
|
|
} |
279
|
|
|
|
280
|
|
|
public function testInvalidStartsWithDueToWrongEncoding() |
281
|
|
|
{ |
282
|
|
|
$this->setExpectedException('Assert\AssertionFailedException', null, Assertion::INVALID_STRING_START); |
283
|
|
|
Assertion::startsWith("址", "址址", null, null, 'ASCII'); |
|
|
|
|
284
|
|
|
} |
285
|
|
|
|
286
|
|
|
public function testValidStartsWith() |
287
|
|
|
{ |
288
|
|
|
Assertion::startsWith("foo", "foo"); |
289
|
|
|
Assertion::startsWith("foo", "fo"); |
290
|
|
|
Assertion::startsWith("foo", "f"); |
291
|
|
|
Assertion::startsWith("址foo", "址"); |
292
|
|
|
} |
293
|
|
|
|
294
|
|
|
public function testInvalidEndsWith() |
295
|
|
|
{ |
296
|
|
|
$this->setExpectedException('Assert\AssertionFailedException', null, Assertion::INVALID_STRING_END); |
297
|
|
|
Assertion::endsWith("foo", "bar"); |
298
|
|
|
} |
299
|
|
|
|
300
|
|
|
public function testInvalidEndsWithDueToWrongEncoding() |
301
|
|
|
{ |
302
|
|
|
$this->setExpectedException('Assert\AssertionFailedException', null, Assertion::INVALID_STRING_END); |
303
|
|
|
Assertion::endsWith("址", "址址", null, null, 'ASCII'); |
|
|
|
|
304
|
|
|
} |
305
|
|
|
|
306
|
|
|
public function testValidEndsWith() |
307
|
|
|
{ |
308
|
|
|
Assertion::endsWith("foo", "foo"); |
309
|
|
|
Assertion::endsWith("sonderbar", "bar"); |
310
|
|
|
Assertion::endsWith("opp", "p"); |
311
|
|
|
Assertion::endsWith("foo址", "址"); |
312
|
|
|
} |
313
|
|
|
|
314
|
|
|
public function testInvalidContains() |
315
|
|
|
{ |
316
|
|
|
$this->setExpectedException('Assert\AssertionFailedException', null, Assertion::INVALID_STRING_CONTAINS); |
317
|
|
|
Assertion::contains("foo", "bar"); |
318
|
|
|
} |
319
|
|
|
|
320
|
|
|
public function testValidContains() |
321
|
|
|
{ |
322
|
|
|
Assertion::contains("foo", "foo"); |
323
|
|
|
Assertion::contains("foo", "oo"); |
324
|
|
|
} |
325
|
|
|
|
326
|
|
|
public function testInvalidChoice() |
327
|
|
|
{ |
328
|
|
|
$this->setExpectedException('Assert\AssertionFailedException', null, Assertion::INVALID_CHOICE); |
329
|
|
|
Assertion::choice("foo", array("bar", "baz")); |
330
|
|
|
} |
331
|
|
|
|
332
|
|
|
public function testValidChoice() |
333
|
|
|
{ |
334
|
|
|
Assertion::choice("foo", array("foo")); |
335
|
|
|
} |
336
|
|
|
|
337
|
|
|
public function testInvalidInArray() |
338
|
|
|
{ |
339
|
|
|
$this->setExpectedException('Assert\AssertionFailedException', null, Assertion::INVALID_CHOICE); |
340
|
|
|
Assertion::inArray("bar", array("baz")); |
341
|
|
|
} |
342
|
|
|
|
343
|
|
|
public function testValidInArray() |
344
|
|
|
{ |
345
|
|
|
Assertion::inArray("foo", array("foo")); |
346
|
|
|
} |
347
|
|
|
|
348
|
|
|
public function testInvalidNumeric() |
349
|
|
|
{ |
350
|
|
|
$this->setExpectedException('Assert\AssertionFailedException', null, Assertion::INVALID_NUMERIC); |
351
|
|
|
Assertion::numeric("foo"); |
352
|
|
|
} |
353
|
|
|
|
354
|
|
|
public function testValidNumeric() |
355
|
|
|
{ |
356
|
|
|
Assertion::numeric("1"); |
357
|
|
|
Assertion::numeric(1); |
358
|
|
|
Assertion::numeric(1.23); |
359
|
|
|
} |
360
|
|
|
|
361
|
|
|
public static function dataInvalidArray() |
362
|
|
|
{ |
363
|
|
|
return array( |
364
|
|
|
array(null), |
365
|
|
|
array(false), |
366
|
|
|
array("test"), |
367
|
|
|
array(1), |
368
|
|
|
array(1.23), |
369
|
|
|
array(new \StdClass), |
370
|
|
|
array(fopen('php://memory', 'r')), |
371
|
|
|
); |
372
|
|
|
} |
373
|
|
|
|
374
|
|
|
/** |
375
|
|
|
* @dataProvider dataInvalidArray |
376
|
|
|
*/ |
377
|
|
|
public function testInvalidArray($value) |
378
|
|
|
{ |
379
|
|
|
$this->setExpectedException('Assert\AssertionFailedException', null, Assertion::INVALID_ARRAY); |
380
|
|
|
Assertion::isArray($value); |
381
|
|
|
} |
382
|
|
|
|
383
|
|
|
public function testValidArray() |
384
|
|
|
{ |
385
|
|
|
Assertion::isArray(array()); |
386
|
|
|
Assertion::isArray(array(1,2,3)); |
387
|
|
|
Assertion::isArray(array(array(),array())); |
388
|
|
|
} |
389
|
|
|
|
390
|
|
|
public function testInvalidKeyExists() |
391
|
|
|
{ |
392
|
|
|
$this->setExpectedException('Assert\AssertionFailedException', null, Assertion::INVALID_KEY_EXISTS); |
393
|
|
|
Assertion::keyExists(array("foo" => "bar"), "baz"); |
394
|
|
|
} |
395
|
|
|
|
396
|
|
|
public function testValidKeyExists() |
397
|
|
|
{ |
398
|
|
|
Assertion::keyExists(array("foo" => "bar"), "foo"); |
399
|
|
|
} |
400
|
|
|
|
401
|
|
|
public static function dataInvalidNotBlank() |
402
|
|
|
{ |
403
|
|
|
return array( |
404
|
|
|
array(""), |
405
|
|
|
array(" "), |
406
|
|
|
array("\t"), |
407
|
|
|
array("\n"), |
408
|
|
|
array("\r"), |
409
|
|
|
array(false), |
410
|
|
|
array(null), |
411
|
|
|
array( array() ), |
412
|
|
|
); |
413
|
|
|
} |
414
|
|
|
|
415
|
|
|
/** |
416
|
|
|
* @dataProvider dataInvalidNotBlank |
417
|
|
|
*/ |
418
|
|
|
public function testInvalidNotBlank($notBlank) |
419
|
|
|
{ |
420
|
|
|
$this->setExpectedException('Assert\AssertionFailedException', null, Assertion::INVALID_NOT_BLANK); |
421
|
|
|
Assertion::notBlank($notBlank); |
422
|
|
|
} |
423
|
|
|
|
424
|
|
|
public function testValidNotBlank() |
425
|
|
|
{ |
426
|
|
|
Assertion::notBlank("foo"); |
427
|
|
|
} |
428
|
|
|
|
429
|
|
|
public function testInvalidNotInstanceOf() |
430
|
|
|
{ |
431
|
|
|
$this->setExpectedException('Assert\AssertionFailedException', null, Assertion::INVALID_NOT_INSTANCE_OF); |
432
|
|
|
Assertion::notIsInstanceOf(new \stdClass, 'stdClass'); |
433
|
|
|
} |
434
|
|
|
|
435
|
|
|
public function testValidNotIsInstanceOf() |
436
|
|
|
{ |
437
|
|
|
Assertion::notIsInstanceOf(new \stdClass, 'PDO'); |
438
|
|
|
} |
439
|
|
|
|
440
|
|
|
public function testInvalidInstanceOf() |
441
|
|
|
{ |
442
|
|
|
$this->setExpectedException('Assert\AssertionFailedException', null, Assertion::INVALID_INSTANCE_OF); |
443
|
|
|
Assertion::isInstanceOf(new \stdClass, 'PDO'); |
444
|
|
|
} |
445
|
|
|
|
446
|
|
|
public function testValidInstanceOf() |
447
|
|
|
{ |
448
|
|
|
Assertion::isInstanceOf(new \stdClass, 'stdClass'); |
449
|
|
|
} |
450
|
|
|
|
451
|
|
|
public function testInvalidSubclassOf() |
452
|
|
|
{ |
453
|
|
|
$this->setExpectedException('Assert\AssertionFailedException', null, Assertion::INVALID_SUBCLASS_OF); |
454
|
|
|
Assertion::subclassOf(new \stdClass, 'PDO'); |
455
|
|
|
} |
456
|
|
|
|
457
|
|
|
public function testValidSubclassOf() |
458
|
|
|
{ |
459
|
|
|
Assertion::subclassOf(new ChildStdClass, 'stdClass'); |
460
|
|
|
} |
461
|
|
|
|
462
|
|
|
public function testInvalidRange() |
463
|
|
|
{ |
464
|
|
|
$this->setExpectedException('Assert\AssertionFailedException', null, Assertion::INVALID_RANGE); |
465
|
|
|
Assertion::range(1, 2, 3); |
466
|
|
|
Assertion::range(1.5, 2, 3); |
467
|
|
|
} |
468
|
|
|
|
469
|
|
|
public function testValidRange() |
470
|
|
|
{ |
471
|
|
|
Assertion::range(1, 1, 2); |
472
|
|
|
Assertion::range(2, 1, 2); |
473
|
|
|
Assertion::range(2, 0, 100); |
474
|
|
|
Assertion::range(2.5, 2.25, 2.75); |
475
|
|
|
} |
476
|
|
|
|
477
|
|
|
public function testInvalidEmail() |
478
|
|
|
{ |
479
|
|
|
$this->setExpectedException('Assert\AssertionFailedException', null, Assertion::INVALID_EMAIL); |
480
|
|
|
Assertion::email("foo"); |
481
|
|
|
} |
482
|
|
|
|
483
|
|
|
public function testValidEmail() |
484
|
|
|
{ |
485
|
|
|
Assertion::email("[email protected]"); |
486
|
|
|
} |
487
|
|
|
|
488
|
|
|
/** |
489
|
|
|
* @dataProvider dataInvalidUrl |
490
|
|
|
*/ |
491
|
|
|
public function testInvalidUrl($url) |
492
|
|
|
{ |
493
|
|
|
$this->setExpectedException('Assert\AssertionFailedException', null, Assertion::INVALID_URL); |
494
|
|
|
|
495
|
|
|
Assertion::url($url); |
496
|
|
|
} |
497
|
|
|
|
498
|
|
|
public static function dataInvalidUrl() |
499
|
|
|
{ |
500
|
|
|
return array( |
501
|
|
|
'null value' => array(""), |
502
|
|
|
'empty string' => array(" "), |
503
|
|
|
'no scheme' => array("url.de"), |
504
|
|
|
'unsupported scheme' => array("git://url.de"), |
505
|
|
|
'Http with query (no / between tld und ?)' => array("http://example.org?do=something"), |
506
|
|
|
'Http with query and port (no / between port und ?)' => array("http://example.org:8080?do=something"), |
507
|
|
|
); |
508
|
|
|
} |
509
|
|
|
|
510
|
|
|
/** |
511
|
|
|
* @dataProvider dataValidUrl |
512
|
|
|
*/ |
513
|
|
|
public function testValidUrl($url) |
514
|
|
|
{ |
515
|
|
|
Assertion::url($url); |
516
|
|
|
} |
517
|
|
|
|
518
|
|
|
public static function dataValidUrl() |
519
|
|
|
{ |
520
|
|
|
return array( |
521
|
|
|
'straight with Http' => array("http://example.org"), |
522
|
|
|
'Http with path' => array("http://example.org/do/something"), |
523
|
|
|
'Http with query' => array("http://example.org/index.php?do=something"), |
524
|
|
|
'Http with port' => array("http://example.org:8080"), |
525
|
|
|
'Http with all possibilities' => array("http://example.org:8080/do/something/index.php?do=something"), |
526
|
|
|
'straight with Https' => array("https://example.org"), |
527
|
|
|
); |
528
|
|
|
} |
529
|
|
|
|
530
|
|
|
public function testInvalidDigit() |
531
|
|
|
{ |
532
|
|
|
$this->setExpectedException('Assert\AssertionFailedException', null, Assertion::INVALID_DIGIT); |
533
|
|
|
Assertion::digit(-1); |
534
|
|
|
} |
535
|
|
|
|
536
|
|
|
public function testValidDigit() |
537
|
|
|
{ |
538
|
|
|
Assertion::digit(1); |
539
|
|
|
Assertion::digit(0); |
540
|
|
|
Assertion::digit("0"); |
541
|
|
|
} |
542
|
|
|
|
543
|
|
|
public function testValidAlnum() |
544
|
|
|
{ |
545
|
|
|
Assertion::alnum("a"); |
546
|
|
|
Assertion::alnum("a1"); |
547
|
|
|
Assertion::alnum("aasdf1234"); |
548
|
|
|
Assertion::alnum("a1b2c3"); |
549
|
|
|
} |
550
|
|
|
|
551
|
|
|
public function testInvalidAlnum() |
552
|
|
|
{ |
553
|
|
|
$this->setExpectedException('Assert\AssertionFailedException', null, Assertion::INVALID_ALNUM); |
554
|
|
|
Assertion::alnum("1a"); |
555
|
|
|
} |
556
|
|
|
|
557
|
|
|
public function testValidTrue() |
558
|
|
|
{ |
559
|
|
|
Assertion::true(1 == 1); |
560
|
|
|
} |
561
|
|
|
|
562
|
|
|
public function testInvalidTrue() |
563
|
|
|
{ |
564
|
|
|
$this->setExpectedException('Assert\AssertionFailedException', null, Assertion::INVALID_TRUE); |
565
|
|
|
Assertion::true(false); |
566
|
|
|
} |
567
|
|
|
|
568
|
|
|
public function testValidFalse() |
569
|
|
|
{ |
570
|
|
|
Assertion::false(1 == 0); |
571
|
|
|
} |
572
|
|
|
|
573
|
|
|
public function testInvalidFalse() |
574
|
|
|
{ |
575
|
|
|
$this->setExpectedException('Assert\AssertionFailedException', null, Assertion::INVALID_FALSE); |
576
|
|
|
Assertion::false(true); |
577
|
|
|
} |
578
|
|
|
|
579
|
|
|
public function testInvalidClass() |
580
|
|
|
{ |
581
|
|
|
$this->setExpectedException('Assert\AssertionFailedException', null, Assertion::INVALID_CLASS); |
582
|
|
|
Assertion::classExists("Foo"); |
583
|
|
|
} |
584
|
|
|
|
585
|
|
|
public function testValidClass() |
586
|
|
|
{ |
587
|
|
|
Assertion::classExists("\\Exception"); |
588
|
|
|
} |
589
|
|
|
|
590
|
|
|
public function testSame() |
591
|
|
|
{ |
592
|
|
|
Assertion::same(1,1); |
593
|
|
|
Assertion::same("foo","foo"); |
594
|
|
|
Assertion::same($obj = new \stdClass(), $obj); |
595
|
|
|
$this->setExpectedException('Assert\AssertionFailedException', null, Assertion::INVALID_SAME); |
596
|
|
|
Assertion::same(new \stdClass(), new \stdClass()); |
597
|
|
|
} |
598
|
|
|
|
599
|
|
|
public function testEq() |
600
|
|
|
{ |
601
|
|
|
Assertion::eq(1,"1"); |
602
|
|
|
Assertion::eq("foo",true); |
603
|
|
|
Assertion::eq($obj = new \stdClass(), $obj); |
604
|
|
|
$this->setExpectedException('Assert\AssertionFailedException', null, Assertion::INVALID_EQ); |
605
|
|
|
Assertion::eq("2", 1); |
606
|
|
|
} |
607
|
|
|
|
608
|
|
|
public function testNotEq() |
609
|
|
|
{ |
610
|
|
|
Assertion::NotEq("1", false); |
611
|
|
|
Assertion::NotEq(new \stdClass(), array()); |
612
|
|
|
$this->setExpectedException('Assert\AssertionFailedException', null, Assertion::INVALID_NOT_EQ); |
613
|
|
|
Assertion::NotEq("1", 1); |
614
|
|
|
} |
615
|
|
|
|
616
|
|
|
public function testNotSame() |
617
|
|
|
{ |
618
|
|
|
Assertion::notSame("1", 2); |
619
|
|
|
Assertion::notSame(new \stdClass(), array()); |
620
|
|
|
$this->setExpectedException('Assert\AssertionFailedException', null, Assertion::INVALID_NOT_SAME); |
621
|
|
|
Assertion::notSame(1, 1); |
622
|
|
|
} |
623
|
|
|
|
624
|
|
|
public function testMin() |
625
|
|
|
{ |
626
|
|
|
Assertion::min(1, 1); |
627
|
|
|
Assertion::min(2, 1); |
628
|
|
|
Assertion::min(2.5, 1); |
629
|
|
|
|
630
|
|
|
$this->setExpectedException('Assert\AssertionFailedException', null, Assertion::INVALID_MIN); |
631
|
|
|
Assertion::min(0, 1); |
632
|
|
|
} |
633
|
|
|
|
634
|
|
|
public function testMax() |
635
|
|
|
{ |
636
|
|
|
Assertion::max(1, 1); |
637
|
|
|
Assertion::max(0.5, 1); |
638
|
|
|
Assertion::max(0, 1); |
639
|
|
|
|
640
|
|
|
$this->setExpectedException('Assert\AssertionFailedException', null, Assertion::INVALID_MAX); |
641
|
|
|
Assertion::max(2, 1); |
642
|
|
|
} |
643
|
|
|
|
644
|
|
|
public function testNullOr() |
645
|
|
|
{ |
646
|
|
|
Assertion::nullOrMax(null, 1); |
647
|
|
|
Assertion::nullOrMax(null, 2); |
648
|
|
|
} |
649
|
|
|
|
650
|
|
|
public function testNullOrWithNoValueThrows() |
651
|
|
|
{ |
652
|
|
|
$this->setExpectedException('BadMethodCallException'); |
653
|
|
|
Assertion::nullOrMax(); |
|
|
|
|
654
|
|
|
} |
655
|
|
|
|
656
|
|
|
public function testLength() |
657
|
|
|
{ |
658
|
|
|
Assertion::length("asdf", 4); |
659
|
|
|
Assertion::length("", 0); |
660
|
|
|
} |
661
|
|
|
|
662
|
|
|
public static function dataLengthUtf8Characters() |
663
|
|
|
{ |
664
|
|
|
return array( |
665
|
|
|
array("址", 1), |
666
|
|
|
array("ل", 1), |
667
|
|
|
); |
668
|
|
|
} |
669
|
|
|
|
670
|
|
|
/** |
671
|
|
|
* @dataProvider dataLengthUtf8Characters |
672
|
|
|
*/ |
673
|
|
|
public function testLenghtUtf8Characters($value, $expected) |
674
|
|
|
{ |
675
|
|
|
Assertion::length($value, $expected); |
676
|
|
|
} |
677
|
|
|
|
678
|
|
|
public function testLengthFailed() |
679
|
|
|
{ |
680
|
|
|
$this->setExpectedException('Assert\AssertionFailedException', null, Assertion::INVALID_LENGTH); |
681
|
|
|
Assertion::length("asdf", 3); |
682
|
|
|
} |
683
|
|
|
|
684
|
|
|
public function testLengthValidForGivenEncoding() |
685
|
|
|
{ |
686
|
|
|
Assertion::length("址", 1, null, null, 'utf8'); |
|
|
|
|
687
|
|
|
} |
688
|
|
|
|
689
|
|
|
public function testFile() |
690
|
|
|
{ |
691
|
|
|
Assertion::file(__FILE__); |
692
|
|
|
} |
693
|
|
|
|
694
|
|
|
public function testFileWithEmptyFilename() |
695
|
|
|
{ |
696
|
|
|
$this->setExpectedException('Assert\AssertionFailedException', null, Assertion::VALUE_EMPTY); |
697
|
|
|
Assertion::file(""); |
698
|
|
|
} |
699
|
|
|
|
700
|
|
|
public function testFileDoesNotExists() |
701
|
|
|
{ |
702
|
|
|
$this->setExpectedException('Assert\AssertionFailedException', null, Assertion::INVALID_FILE); |
703
|
|
|
Assertion::file(__DIR__ . '/does-not-exists'); |
704
|
|
|
} |
705
|
|
|
|
706
|
|
|
public function testDirectory() |
707
|
|
|
{ |
708
|
|
|
Assertion::directory(__DIR__); |
709
|
|
|
|
710
|
|
|
$this->setExpectedException('Assert\AssertionFailedException', null, Assertion::INVALID_DIRECTORY); |
711
|
|
|
Assertion::directory(__DIR__ . '/does-not-exist'); |
712
|
|
|
} |
713
|
|
|
|
714
|
|
|
public function testReadable() |
715
|
|
|
{ |
716
|
|
|
Assertion::readable(__FILE__); |
717
|
|
|
|
718
|
|
|
$this->setExpectedException('Assert\AssertionFailedException', null, Assertion::INVALID_READABLE); |
719
|
|
|
Assertion::readable(__DIR__ . '/does-not-exist'); |
720
|
|
|
} |
721
|
|
|
|
722
|
|
|
public function testWriteable() |
723
|
|
|
{ |
724
|
|
|
Assertion::writeable(sys_get_temp_dir()); |
725
|
|
|
|
726
|
|
|
$this->setExpectedException('Assert\AssertionFailedException', null, Assertion::INVALID_WRITEABLE); |
727
|
|
|
Assertion::writeable(__DIR__ . '/does-not-exist'); |
728
|
|
|
} |
729
|
|
|
|
730
|
|
|
/** |
731
|
|
|
* @expectedException \BadMethodCallException |
732
|
|
|
* @expectedExceptionMessage No assertion |
733
|
|
|
*/ |
734
|
|
|
public function testFailedNullOrMethodCall() |
735
|
|
|
{ |
736
|
|
|
Assertion::NullOrAssertionDoesNotExist(); |
737
|
|
|
} |
738
|
|
|
|
739
|
|
|
public function testImplementsInterface() |
740
|
|
|
{ |
741
|
|
|
Assertion::implementsInterface( |
742
|
|
|
'\ArrayIterator', |
743
|
|
|
'\Traversable' |
744
|
|
|
); |
745
|
|
|
|
746
|
|
|
$this->setExpectedException('Assert\AssertionFailedException', null, Assertion::INTERFACE_NOT_IMPLEMENTED); |
747
|
|
|
Assertion::implementsInterface( |
748
|
|
|
'\Exception', |
749
|
|
|
'\Traversable' |
750
|
|
|
); |
751
|
|
|
} |
752
|
|
|
|
753
|
|
|
public function testImplementsInterfaceWithClassObject() |
754
|
|
|
{ |
755
|
|
|
$class = new \ArrayObject(); |
756
|
|
|
|
757
|
|
|
Assertion::implementsInterface( |
758
|
|
|
$class, |
759
|
|
|
'\Traversable' |
760
|
|
|
); |
761
|
|
|
|
762
|
|
|
$this->setExpectedException('Assert\AssertionFailedException', null, Assertion::INTERFACE_NOT_IMPLEMENTED); |
763
|
|
|
Assertion::implementsInterface( |
764
|
|
|
$class, |
765
|
|
|
'\SplObserver' |
766
|
|
|
); |
767
|
|
|
} |
768
|
|
|
|
769
|
|
|
/** |
770
|
|
|
* @dataProvider isJsonStringDataprovider |
771
|
|
|
*/ |
772
|
|
|
public function testIsJsonString($content) |
773
|
|
|
{ |
774
|
|
|
Assertion::isJsonString($content); |
775
|
|
|
} |
776
|
|
|
|
777
|
|
|
public static function isJsonStringDataprovider() |
778
|
|
|
{ |
779
|
|
|
return array( |
780
|
|
|
'»null« value' => array(json_encode(null)), |
781
|
|
|
'»false« value' => array(json_encode(false)), |
782
|
|
|
'array value' => array('["false"]'), |
783
|
|
|
'object value' => array('{"tux":"false"}'), |
784
|
|
|
); |
785
|
|
|
} |
786
|
|
|
|
787
|
|
|
/** |
788
|
|
|
* @dataProvider isJsonStringInvalidStringDataprovider |
789
|
|
|
*/ |
790
|
|
|
public function testIsJsonStringExpectingException($invalidString) |
791
|
|
|
{ |
792
|
|
|
$this->setExpectedException('Assert\AssertionFailedException', null, Assertion::INVALID_JSON_STRING); |
793
|
|
|
Assertion::isJsonString($invalidString); |
794
|
|
|
} |
795
|
|
|
|
796
|
|
|
public static function isJsonStringInvalidStringDataprovider() |
797
|
|
|
{ |
798
|
|
|
return array( |
799
|
|
|
'no json string' => array('invalid json encoded string'), |
800
|
|
|
'error in json string' => array('{invalid json encoded string}'), |
801
|
|
|
); |
802
|
|
|
} |
803
|
|
|
|
804
|
|
|
/** |
805
|
|
|
* @dataProvider providesValidUuids |
806
|
|
|
*/ |
807
|
|
|
public function testValidUuids($uuid) |
808
|
|
|
{ |
809
|
|
|
Assertion::uuid($uuid); |
810
|
|
|
} |
811
|
|
|
|
812
|
|
|
/** |
813
|
|
|
* @dataProvider providesInvalidUuids |
814
|
|
|
*/ |
815
|
|
|
public function testInvalidUuids($uuid) |
816
|
|
|
{ |
817
|
|
|
$this->setExpectedException('Assert\InvalidArgumentException'); |
818
|
|
|
Assertion::uuid($uuid); |
819
|
|
|
} |
820
|
|
|
|
821
|
|
|
static public function providesValidUuids() |
|
|
|
|
822
|
|
|
{ |
823
|
|
|
return array( |
824
|
|
|
array('ff6f8cb0-c57d-11e1-9b21-0800200c9a66'), |
825
|
|
|
array('ff6f8cb0-c57d-21e1-9b21-0800200c9a66'), |
826
|
|
|
array('ff6f8cb0-c57d-31e1-9b21-0800200c9a66'), |
827
|
|
|
array('ff6f8cb0-c57d-41e1-9b21-0800200c9a66'), |
828
|
|
|
array('ff6f8cb0-c57d-51e1-9b21-0800200c9a66'), |
829
|
|
|
array('FF6F8CB0-C57D-11E1-9B21-0800200C9A66'), |
830
|
|
|
); |
831
|
|
|
} |
832
|
|
|
|
833
|
|
|
static public function providesInvalidUuids() |
|
|
|
|
834
|
|
|
{ |
835
|
|
|
return array( |
836
|
|
|
array('zf6f8cb0-c57d-11e1-9b21-0800200c9a66'), |
837
|
|
|
array('af6f8cb0c57d11e19b210800200c9a66'), |
838
|
|
|
array('ff6f8cb0-c57da-51e1-9b21-0800200c9a66'), |
839
|
|
|
array('af6f8cb-c57d-11e1-9b21-0800200c9a66'), |
840
|
|
|
array('3f6f8cb0-c57d-11e1-9b21-0800200c9a6'), |
841
|
|
|
); |
842
|
|
|
} |
843
|
|
|
|
844
|
|
|
public function testValidNotEmptyKey() |
845
|
|
|
{ |
846
|
|
|
Assertion::notEmptyKey(array('keyExists' => 'notEmpty'), 'keyExists'); |
847
|
|
|
} |
848
|
|
|
|
849
|
|
|
/** |
850
|
|
|
* @dataProvider invalidNotEmptyKeyDataprovider |
851
|
|
|
*/ |
852
|
|
|
public function testInvalidNotEmptyKey($invalidArray, $key) |
853
|
|
|
{ |
854
|
|
|
$this->setExpectedException('Assert\InvalidArgumentException'); |
855
|
|
|
Assertion::notEmptyKey($invalidArray, $key); |
856
|
|
|
} |
857
|
|
|
|
858
|
|
|
public static function invalidNotEmptyKeyDataprovider() |
859
|
|
|
{ |
860
|
|
|
return array( |
861
|
|
|
'empty' => array(array('keyExists' => ''), 'keyExists'), |
862
|
|
|
'key not exists' => array(array('key' => 'notEmpty'), 'keyNotExists') |
863
|
|
|
); |
864
|
|
|
} |
865
|
|
|
|
866
|
|
|
public function testAllWithSimpleAssertion() |
867
|
|
|
{ |
868
|
|
|
Assertion::allTrue(array(true, true)); |
869
|
|
|
} |
870
|
|
|
|
871
|
|
|
public function testAllWithSimpleAssertionThrowsExceptionOnElementThatFailsAssertion() |
872
|
|
|
{ |
873
|
|
|
$this->setExpectedException('Assert\AssertionFailedException', null, Assertion::INVALID_TRUE); |
874
|
|
|
Assertion::allTrue(array(true, false)); |
875
|
|
|
} |
876
|
|
|
|
877
|
|
|
public function testAllWithComplexAssertion() |
878
|
|
|
{ |
879
|
|
|
Assertion::allIsInstanceOf(array(new \stdClass, new \stdClass), 'stdClass'); |
880
|
|
|
} |
881
|
|
|
|
882
|
|
|
public function testAllWithComplexAssertionThrowsExceptionOnElementThatFailsAssertion() |
883
|
|
|
{ |
884
|
|
|
$this->setExpectedException('Assert\AssertionFailedException', 'Assertion failed', Assertion::INVALID_INSTANCE_OF); |
885
|
|
|
|
886
|
|
|
Assertion::allIsInstanceOf(array(new \stdClass, new \stdClass), 'PDO', 'Assertion failed', 'foos'); |
887
|
|
|
} |
888
|
|
|
|
889
|
|
|
public function testAllWithNoValueThrows() |
890
|
|
|
{ |
891
|
|
|
$this->setExpectedException('BadMethodCallException'); |
892
|
|
|
Assertion::allTrue(); |
|
|
|
|
893
|
|
|
} |
894
|
|
|
|
895
|
|
|
public function testValidCount() |
896
|
|
|
{ |
897
|
|
|
Assertion::count(array('Hi'), 1); |
898
|
|
|
Assertion::count(new OneCountable(), 1); |
899
|
|
|
} |
900
|
|
|
|
901
|
|
|
public static function dataInvalidCount() |
902
|
|
|
{ |
903
|
|
|
return array( |
904
|
|
|
array(array('Hi', 'There'), 3), |
905
|
|
|
array(new OneCountable(), 2), |
906
|
|
|
); |
907
|
|
|
} |
908
|
|
|
|
909
|
|
|
/** |
910
|
|
|
* @dataProvider dataInvalidCount |
911
|
|
|
*/ |
912
|
|
|
public function testInvalidCount($countable, $count) |
913
|
|
|
{ |
914
|
|
|
$this->setExpectedException('Assert\AssertionFailedException', 'List does not contain exactly "'.$count.'" elements.', Assertion::INVALID_COUNT); |
915
|
|
|
Assertion::count($countable, $count); |
916
|
|
|
} |
917
|
|
|
|
918
|
|
|
public function testChoicesNotEmpty() |
919
|
|
|
{ |
920
|
|
|
Assertion::choicesNotEmpty( |
921
|
|
|
array('tux' => 'linux', 'Gnu' => 'dolphin'), |
922
|
|
|
array('tux') |
923
|
|
|
); |
924
|
|
|
} |
925
|
|
|
|
926
|
|
|
/** |
927
|
|
|
* @dataProvider invalidChoicesProvider |
928
|
|
|
*/ |
929
|
|
|
public function testChoicesNotEmptyExpectingException($values, $choices, $exceptionCode) |
930
|
|
|
{ |
931
|
|
|
$this->setExpectedException('Assert\AssertionFailedException', null, $exceptionCode); |
932
|
|
|
Assertion::choicesNotEmpty( |
933
|
|
|
$values, |
934
|
|
|
$choices |
935
|
|
|
); |
936
|
|
|
} |
937
|
|
|
|
938
|
|
|
public function invalidChoicesProvider() |
939
|
|
|
{ |
940
|
|
|
return array( |
941
|
|
|
'empty values' => array(array(), array('tux'), Assertion::VALUE_EMPTY), |
942
|
|
|
'empty recodes in $values' => array(array('tux' => ''), array('tux'), Assertion::VALUE_EMPTY), |
943
|
|
|
'choice not found in values' => array(array('tux' => ''), array('invalidChoice'), Assertion::INVALID_KEY_ISSET), |
944
|
|
|
); |
945
|
|
|
} |
946
|
|
|
|
947
|
|
|
public function testIsObject() |
948
|
|
|
{ |
949
|
|
|
Assertion::isObject(new \StdClass); |
950
|
|
|
} |
951
|
|
|
|
952
|
|
|
public function testIsObjectExpectingException() |
953
|
|
|
{ |
954
|
|
|
$this->setExpectedException('Assert\AssertionFailedException', null, Assertion::INVALID_OBJECT); |
955
|
|
|
Assertion::isObject('notAnObject'); |
956
|
|
|
} |
957
|
|
|
|
958
|
|
|
public function testMethodExists() |
959
|
|
|
{ |
960
|
|
|
Assertion::methodExists('methodExists', new Assertion()); |
961
|
|
|
} |
962
|
|
|
|
963
|
|
|
/** |
964
|
|
|
* @test |
965
|
|
|
*/ |
966
|
|
|
public function it_passes_values_and_constraints_to_exception() |
|
|
|
|
967
|
|
|
{ |
968
|
|
|
try { |
969
|
|
|
Assertion::range(0, 10, 20); |
970
|
|
|
|
971
|
|
|
$this->fail('Exception expected'); |
972
|
|
|
} catch (AssertionFailedException $e) { |
973
|
|
|
$this->assertEquals(0, $e->getValue()); |
974
|
|
|
$this->assertEquals(array('min' => 10, 'max' => 20), $e->getConstraints()); |
975
|
|
|
} |
976
|
|
|
} |
977
|
|
|
|
978
|
|
|
public function testLessThan() |
979
|
|
|
{ |
980
|
|
|
Assertion::lessThan(1, 2); |
981
|
|
|
Assertion::lessThan('aaa', 'bbb'); |
982
|
|
|
Assertion::lessThan('aaa', 'aaaa'); |
983
|
|
|
Assertion::lessThan(new \DateTime('today'), new \DateTime('tomorrow')); |
984
|
|
|
} |
985
|
|
|
|
986
|
|
|
public function invalidLessProvider() |
987
|
|
|
{ |
988
|
|
|
return array( |
989
|
|
|
array(2, 1), |
990
|
|
|
array(2, 2), |
991
|
|
|
array('aaa', 'aaa'), |
992
|
|
|
array('aaaa', 'aaa'), |
993
|
|
|
array(new \DateTime('today'), new \DateTime('yesterday')), |
994
|
|
|
array(new \DateTime('today'), new \DateTime('today')), |
995
|
|
|
); |
996
|
|
|
} |
997
|
|
|
|
998
|
|
|
/** |
999
|
|
|
* @dataProvider invalidLessProvider |
1000
|
|
|
*/ |
1001
|
|
|
public function testLessThanThrowsException($value, $limit) |
1002
|
|
|
{ |
1003
|
|
|
$this->setExpectedException('Assert\AssertionFailedException', null, Assertion::INVALID_LESS); |
1004
|
|
|
Assertion::lessThan($value, $limit); |
1005
|
|
|
} |
1006
|
|
|
|
1007
|
|
|
public function testLessOrEqualThan() |
1008
|
|
|
{ |
1009
|
|
|
Assertion::lessOrEqualThan(1, 2); |
1010
|
|
|
Assertion::lessOrEqualThan(1, 1); |
1011
|
|
|
Assertion::lessOrEqualThan('aaa', 'bbb'); |
1012
|
|
|
Assertion::lessOrEqualThan('aaa', 'aaaa'); |
1013
|
|
|
Assertion::lessOrEqualThan('aaa', 'aaa'); |
1014
|
|
|
Assertion::lessOrEqualThan(new \DateTime('today'), new \DateTime('tomorrow')); |
1015
|
|
|
Assertion::lessOrEqualThan(new \DateTime('today'), new \DateTime('today')); |
1016
|
|
|
} |
1017
|
|
|
|
1018
|
|
|
public function invalidLessOrEqualProvider() |
1019
|
|
|
{ |
1020
|
|
|
return array( |
1021
|
|
|
array(2, 1), |
1022
|
|
|
array('aaaa', 'aaa'), |
1023
|
|
|
array(new \DateTime('today'), new \DateTime('yesterday')), |
1024
|
|
|
); |
1025
|
|
|
} |
1026
|
|
|
|
1027
|
|
|
/** |
1028
|
|
|
* @dataProvider invalidLessOrEqualProvider |
1029
|
|
|
*/ |
1030
|
|
|
public function testLessOrEqualThanThrowsException($value, $limit) |
1031
|
|
|
{ |
1032
|
|
|
$this->setExpectedException('Assert\AssertionFailedException', null, Assertion::INVALID_LESS_OR_EQUAL); |
1033
|
|
|
Assertion::lessOrEqualThan($value, $limit); |
1034
|
|
|
} |
1035
|
|
|
|
1036
|
|
|
public function testGreaterThan() |
1037
|
|
|
{ |
1038
|
|
|
Assertion::greaterThan(2, 1); |
1039
|
|
|
Assertion::greaterThan('bbb', 'aaa'); |
1040
|
|
|
Assertion::greaterThan('aaaa', 'aaa'); |
1041
|
|
|
Assertion::greaterThan(new \DateTime('tomorrow'), new \DateTime('today')); |
1042
|
|
|
} |
1043
|
|
|
|
1044
|
|
|
public function invalidGreaterProvider() |
1045
|
|
|
{ |
1046
|
|
|
return array( |
1047
|
|
|
array(1, 2), |
1048
|
|
|
array(2, 2), |
1049
|
|
|
array('aaa', 'aaa'), |
1050
|
|
|
array('aaa', 'aaaa'), |
1051
|
|
|
array(new \DateTime('yesterday'), new \DateTime('today')), |
1052
|
|
|
array(new \DateTime('today'), new \DateTime('today')), |
1053
|
|
|
); |
1054
|
|
|
} |
1055
|
|
|
|
1056
|
|
|
/** |
1057
|
|
|
* @dataProvider validDateProvider |
1058
|
|
|
*/ |
1059
|
|
|
public function testValidDate($value, $format) |
1060
|
|
|
{ |
1061
|
|
|
Assertion::date($value, $format); |
1062
|
|
|
} |
1063
|
|
|
|
1064
|
|
|
public function validDateProvider() |
1065
|
|
|
{ |
1066
|
|
|
return array( |
1067
|
|
|
array('2012-03-13', 'Y-m-d'), |
1068
|
|
|
array('29.02.2012 12:03:36.432563', 'd.m.Y H:i:s.u'), |
1069
|
|
|
array('13.08.2015 17:08:23 Thu Thursday th 224 August Aug 8 15 17 432563 UTC UTC', 'd.m.Y H:i:s D l S z F M n y H u e T'), |
1070
|
|
|
array('1439486158', 'U') |
1071
|
|
|
); |
1072
|
|
|
} |
1073
|
|
|
|
1074
|
|
|
/** |
1075
|
|
|
* @dataProvider invalidGreaterProvider |
1076
|
|
|
*/ |
1077
|
|
|
public function testGreaterThanThrowsException($value, $limit) |
1078
|
|
|
{ |
1079
|
|
|
$this->setExpectedException('Assert\AssertionFailedException', null, Assertion::INVALID_GREATER); |
1080
|
|
|
Assertion::greaterThan($value, $limit); |
1081
|
|
|
} |
1082
|
|
|
|
1083
|
|
|
public function testGreaterOrEqualThan() |
1084
|
|
|
{ |
1085
|
|
|
Assertion::greaterOrEqualThan(2, 1); |
1086
|
|
|
Assertion::greaterOrEqualThan(1, 1); |
1087
|
|
|
Assertion::greaterOrEqualThan('bbb', 'aaa'); |
1088
|
|
|
Assertion::greaterOrEqualThan('aaaa', 'aaa'); |
1089
|
|
|
Assertion::greaterOrEqualThan('aaa', 'aaa'); |
1090
|
|
|
Assertion::greaterOrEqualThan(new \DateTime('tomorrow'), new \DateTime('today')); |
1091
|
|
|
Assertion::greaterOrEqualThan(new \DateTime('today'), new \DateTime('today')); |
1092
|
|
|
} |
1093
|
|
|
|
1094
|
|
|
public function invalidGreaterOrEqualProvider() |
1095
|
|
|
{ |
1096
|
|
|
return array( |
1097
|
|
|
array(1, 2), |
1098
|
|
|
array('aaa', 'aaaa'), |
1099
|
|
|
array(new \DateTime('yesterday'), new \DateTime('tomorrow')), |
1100
|
|
|
); |
1101
|
|
|
} |
1102
|
|
|
|
1103
|
|
|
/** |
1104
|
|
|
* @dataProvider invalidGreaterOrEqualProvider |
1105
|
|
|
* |
1106
|
|
|
* @param mixed $value |
1107
|
|
|
* @param mixed $limit |
1108
|
|
|
*/ |
1109
|
|
|
public function testGreaterOrEqualThanThrowsException($value, $limit) |
1110
|
|
|
{ |
1111
|
|
|
$this->setExpectedException('Assert\AssertionFailedException', null, Assertion::INVALID_GREATER_OR_EQUAL); |
1112
|
|
|
Assertion::greaterOrEqualThan($value, $limit); |
1113
|
|
|
} |
1114
|
|
|
|
1115
|
|
|
/** |
1116
|
|
|
* @dataProvider invalidDateProvider |
1117
|
|
|
*/ |
1118
|
|
|
public function testInvalidDate($value, $format) |
1119
|
|
|
{ |
1120
|
|
|
$this->setExpectedException('Assert\AssertionFailedException', null, Assertion::INVALID_DATE); |
1121
|
|
|
Assertion::date($value, $format); |
1122
|
|
|
} |
1123
|
|
|
|
1124
|
|
|
public function invalidDateProvider() |
1125
|
|
|
{ |
1126
|
|
|
return array( |
1127
|
|
|
array('this is not the date', 'Y-m-d'), |
1128
|
|
|
array('2011-02-29', 'Y-m-d'), |
1129
|
|
|
array('2012.02.29 12:60:36.432563', 'Y.m.d H:i:s.u') |
1130
|
|
|
); |
1131
|
|
|
} |
1132
|
|
|
} |
1133
|
|
|
|
1134
|
|
|
class ChildStdClass extends \stdClass |
|
|
|
|
1135
|
|
|
{ |
1136
|
|
|
|
1137
|
|
|
} |
1138
|
|
|
|
1139
|
|
|
class OneCountable implements \Countable |
|
|
|
|
1140
|
|
|
{ |
1141
|
|
|
public function count() |
1142
|
|
|
{ |
1143
|
|
|
return 1; |
1144
|
|
|
} |
1145
|
|
|
} |
1146
|
|
|
|
This check compares calls to functions or methods with their respective definitions. If the call has more arguments than are defined, it raises an issue.
If a function is defined several times with a different number of parameters, the check may pick up the wrong definition and report false positives. One codebase where this has been known to happen is Wordpress.
In this case you can add the
@ignore
PhpDoc annotation to the duplicate definition and it will be ignored.