Completed
Push — master ( 96d573...f9f049 )
by Ehsan
07:54
created

testConstraintNotLessThanOrEqual2()   B

Complexity

Conditions 2
Paths 2

Size

Total Lines 24
Code Lines 13

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 13
nc 2
nop 0
dl 0
loc 24
rs 8.9713
c 0
b 0
f 0
1
<?php
2
/*
3
 * This file is part of PHPUnit.
4
 *
5
 * (c) Sebastian Bergmann <[email protected]>
6
 *
7
 * For the full copyright and license information, please view the LICENSE
8
 * file that was distributed with this source code.
9
 */
10
11
namespace PHPUnit\Framework;
12
13
use PHPUnit\Framework\Constraint\Count;
14
use PHPUnit\Framework\Constraint\IsEmpty;
15
use PHPUnit\Framework\Constraint\SameSize;
16
use PHPUnit\Framework\Constraint\TraversableContains;
17
use PHPUnit\Util\Filter;
18
19
class ConstraintTest extends TestCase
20
{
21
    public function testConstraintArrayHasKey()
22
    {
23
        $constraint = Assert::arrayHasKey(0);
24
25
        $this->assertFalse($constraint->evaluate([], '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate(array(), '', true) targeting PHPUnit\Framework\Constr...\Constraint::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertFalse() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
26
        $this->assertEquals('has the key 0', $constraint->toString());
27
        $this->assertCount(1, $constraint);
28
29
        try {
30
            $constraint->evaluate([]);
31
        } catch (ExpectationFailedException $e) {
32
            $this->assertEquals(
33
                <<<EOF
34
Failed asserting that an array has the key 0.
35
36
EOF
37
                ,
38
                TestFailure::exceptionToString($e)
39
            );
40
41
            return;
42
        }
43
44
        $this->fail();
45
    }
46
47
    public function testConstraintArrayHasKey2()
48
    {
49
        $constraint = Assert::arrayHasKey(0);
50
51
        try {
52
            $constraint->evaluate([], 'custom message');
53
        } catch (ExpectationFailedException $e) {
54
            $this->assertEquals(
55
                <<<EOF
56
custom message\nFailed asserting that an array has the key 0.
57
58
EOF
59
                ,
60
                TestFailure::exceptionToString($e)
61
            );
62
63
            return;
64
        }
65
66
        $this->fail();
67
    }
68
69
    public function testConstraintArrayNotHasKey()
70
    {
71
        $constraint = Assert::logicalNot(
72
            Assert::arrayHasKey(0)
73
        );
74
75
        $this->assertFalse($constraint->evaluate([0 => 1], '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate(array(0 => 1), '', true) targeting PHPUnit\Framework\Constr...\LogicalNot::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertFalse() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
76
        $this->assertEquals('does not have the key 0', $constraint->toString());
77
        $this->assertCount(1, $constraint);
78
79
        try {
80
            $constraint->evaluate([0 => 1]);
81
        } catch (ExpectationFailedException $e) {
82
            $this->assertEquals(
83
                <<<EOF
84
Failed asserting that an array does not have the key 0.
85
86
EOF
87
                ,
88
                TestFailure::exceptionToString($e)
89
            );
90
91
            return;
92
        }
93
94
        $this->fail();
95
    }
96
97
    public function testConstraintArrayNotHasKey2()
98
    {
99
        $constraint = Assert::logicalNot(
100
            Assert::arrayHasKey(0)
101
        );
102
103
        try {
104
            $constraint->evaluate([0], 'custom message');
105
        } catch (ExpectationFailedException $e) {
106
            $this->assertEquals(
107
                <<<EOF
108
custom message
109
Failed asserting that an array does not have the key 0.
110
111
EOF
112
                ,
113
                TestFailure::exceptionToString($e)
114
            );
115
116
            return;
117
        }
118
119
        $this->fail();
120
    }
121
122
    public function testConstraintIsReadable()
123
    {
124
        $constraint = Assert::isReadable();
125
126
        $this->assertFalse($constraint->evaluate('foo', '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate('foo', '', true) targeting PHPUnit\Framework\Constr...\Constraint::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertFalse() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
127
        $this->assertEquals('is readable', $constraint->toString());
128
        $this->assertCount(1, $constraint);
129
130
        try {
131
            $constraint->evaluate('foo');
132
        } catch (ExpectationFailedException $e) {
133
            $this->assertEquals(
134
                <<<EOF
135
Failed asserting that "foo" is readable.
136
137
EOF
138
                ,
139
                TestFailure::exceptionToString($e)
140
            );
141
142
            return;
143
        }
144
145
        $this->fail();
146
    }
147
148
    public function testConstraintIsWritable()
149
    {
150
        $constraint = Assert::isWritable();
151
152
        $this->assertFalse($constraint->evaluate('foo', '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate('foo', '', true) targeting PHPUnit\Framework\Constr...\Constraint::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertFalse() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
153
        $this->assertEquals('is writable', $constraint->toString());
154
        $this->assertCount(1, $constraint);
155
156
        try {
157
            $constraint->evaluate('foo');
158
        } catch (ExpectationFailedException $e) {
159
            $this->assertEquals(
160
                <<<EOF
161
Failed asserting that "foo" is writable.
162
163
EOF
164
                ,
165
                TestFailure::exceptionToString($e)
166
            );
167
168
            return;
169
        }
170
171
        $this->fail();
172
    }
173
174
    public function testConstraintDirectoryExists()
175
    {
176
        $constraint = Assert::directoryExists();
177
178
        $this->assertFalse($constraint->evaluate('foo', '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate('foo', '', true) targeting PHPUnit\Framework\Constr...\Constraint::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertFalse() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
179
        $this->assertEquals('directory exists', $constraint->toString());
180
        $this->assertCount(1, $constraint);
181
182
        try {
183
            $constraint->evaluate('foo');
184
        } catch (ExpectationFailedException $e) {
185
            $this->assertEquals(
186
                <<<EOF
187
Failed asserting that directory "foo" exists.
188
189
EOF
190
                ,
191
                TestFailure::exceptionToString($e)
192
            );
193
194
            return;
195
        }
196
197
        $this->fail();
198
    }
199
200
    public function testConstraintFileExists()
201
    {
202
        $constraint = Assert::fileExists();
203
204
        $this->assertFalse($constraint->evaluate('foo', '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate('foo', '', true) targeting PHPUnit\Framework\Constr...\Constraint::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertFalse() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
205
        $this->assertEquals('file exists', $constraint->toString());
206
        $this->assertCount(1, $constraint);
207
208
        try {
209
            $constraint->evaluate('foo');
210
        } catch (ExpectationFailedException $e) {
211
            $this->assertEquals(
212
                <<<EOF
213
Failed asserting that file "foo" exists.
214
215
EOF
216
                ,
217
                TestFailure::exceptionToString($e)
218
            );
219
220
            return;
221
        }
222
223
        $this->fail();
224
    }
225
226
    public function testConstraintFileExists2()
227
    {
228
        $constraint = Assert::fileExists();
229
230
        try {
231
            $constraint->evaluate('foo', 'custom message');
232
        } catch (ExpectationFailedException $e) {
233
            $this->assertEquals(
234
                <<<EOF
235
custom message
236
Failed asserting that file "foo" exists.
237
238
EOF
239
                ,
240
                TestFailure::exceptionToString($e)
241
            );
242
243
            return;
244
        }
245
246
        $this->fail();
247
    }
248
249
    public function testConstraintFileNotExists()
250
    {
251
        $file = \dirname(__DIR__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . 'ClassWithNonPublicAttributes.php';
252
253
        $constraint = Assert::logicalNot(
254
            Assert::fileExists()
255
        );
256
257
        $this->assertFalse($constraint->evaluate($file, '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate($file, '', true) targeting PHPUnit\Framework\Constr...\LogicalNot::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertFalse() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
258
        $this->assertEquals('file does not exist', $constraint->toString());
259
        $this->assertCount(1, $constraint);
260
261
        try {
262
            $constraint->evaluate($file);
263
        } catch (ExpectationFailedException $e) {
264
            $this->assertEquals(
265
                <<<EOF
266
Failed asserting that file "$file" does not exist.
267
268
EOF
269
                ,
270
                TestFailure::exceptionToString($e)
271
            );
272
273
            return;
274
        }
275
276
        $this->fail();
277
    }
278
279
    public function testConstraintFileNotExists2()
280
    {
281
        $file = \dirname(__DIR__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . 'ClassWithNonPublicAttributes.php';
282
283
        $constraint = Assert::logicalNot(
284
            Assert::fileExists()
285
        );
286
287
        try {
288
            $constraint->evaluate($file, 'custom message');
289
        } catch (ExpectationFailedException $e) {
290
            $this->assertEquals(
291
                <<<EOF
292
custom message
293
Failed asserting that file "$file" does not exist.
294
295
EOF
296
                ,
297
                TestFailure::exceptionToString($e)
298
            );
299
300
            return;
301
        }
302
303
        $this->fail();
304
    }
305
306
    public function testConstraintGreaterThan()
307
    {
308
        $constraint = Assert::greaterThan(1);
309
310
        $this->assertFalse($constraint->evaluate(0, '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate(0, '', true) targeting PHPUnit\Framework\Constr...\Constraint::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertFalse() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
311
        $this->assertTrue($constraint->evaluate(2, '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate(2, '', true) targeting PHPUnit\Framework\Constr...\Constraint::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertTrue() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
312
        $this->assertEquals('is greater than 1', $constraint->toString());
313
        $this->assertCount(1, $constraint);
314
315
        try {
316
            $constraint->evaluate(0);
317
        } catch (ExpectationFailedException $e) {
318
            $this->assertEquals(
319
                <<<EOF
320
Failed asserting that 0 is greater than 1.
321
322
EOF
323
                ,
324
                TestFailure::exceptionToString($e)
325
            );
326
327
            return;
328
        }
329
330
        $this->fail();
331
    }
332
333
    public function testConstraintGreaterThan2()
334
    {
335
        $constraint = Assert::greaterThan(1);
336
337
        try {
338
            $constraint->evaluate(0, 'custom message');
339
        } catch (ExpectationFailedException $e) {
340
            $this->assertEquals(
341
                <<<EOF
342
custom message
343
Failed asserting that 0 is greater than 1.
344
345
EOF
346
                ,
347
                TestFailure::exceptionToString($e)
348
            );
349
350
            return;
351
        }
352
353
        $this->fail();
354
    }
355
356
    public function testConstraintNotGreaterThan()
357
    {
358
        $constraint = Assert::logicalNot(
359
            Assert::greaterThan(1)
360
        );
361
362
        $this->assertTrue($constraint->evaluate(1, '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate(1, '', true) targeting PHPUnit\Framework\Constr...\LogicalNot::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertTrue() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
363
        $this->assertEquals('is not greater than 1', $constraint->toString());
364
        $this->assertCount(1, $constraint);
365
366
        try {
367
            $constraint->evaluate(2);
368
        } catch (ExpectationFailedException $e) {
369
            $this->assertEquals(
370
                <<<EOF
371
Failed asserting that 2 is not greater than 1.
372
373
EOF
374
                ,
375
                TestFailure::exceptionToString($e)
376
            );
377
378
            return;
379
        }
380
381
        $this->fail();
382
    }
383
384
    public function testConstraintNotGreaterThan2()
385
    {
386
        $constraint = Assert::logicalNot(
387
            Assert::greaterThan(1)
388
        );
389
390
        try {
391
            $constraint->evaluate(2, 'custom message');
392
        } catch (ExpectationFailedException $e) {
393
            $this->assertEquals(
394
                <<<EOF
395
custom message
396
Failed asserting that 2 is not greater than 1.
397
398
EOF
399
                ,
400
                TestFailure::exceptionToString($e)
401
            );
402
403
            return;
404
        }
405
406
        $this->fail();
407
    }
408
409
    public function testConstraintGreaterThanOrEqual()
410
    {
411
        $constraint = Assert::greaterThanOrEqual(1);
412
413
        $this->assertTrue($constraint->evaluate(1, '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate(1, '', true) targeting PHPUnit\Framework\Constraint\LogicalOr::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertTrue() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
414
        $this->assertFalse($constraint->evaluate(0, '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate(0, '', true) targeting PHPUnit\Framework\Constraint\LogicalOr::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertFalse() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
415
        $this->assertEquals('is equal to 1 or is greater than 1', $constraint->toString());
416
        $this->assertCount(2, $constraint);
417
418
        try {
419
            $constraint->evaluate(0);
420
        } catch (ExpectationFailedException $e) {
421
            $this->assertEquals(
422
                <<<EOF
423
Failed asserting that 0 is equal to 1 or is greater than 1.
424
425
EOF
426
                ,
427
                TestFailure::exceptionToString($e)
428
            );
429
430
            return;
431
        }
432
433
        $this->fail();
434
    }
435
436
    public function testConstraintGreaterThanOrEqual2()
437
    {
438
        $constraint = Assert::greaterThanOrEqual(1);
439
440
        try {
441
            $constraint->evaluate(0, 'custom message');
442
        } catch (ExpectationFailedException $e) {
443
            $this->assertEquals(
444
                <<<EOF
445
custom message
446
Failed asserting that 0 is equal to 1 or is greater than 1.
447
448
EOF
449
                ,
450
                TestFailure::exceptionToString($e)
451
            );
452
453
            return;
454
        }
455
456
        $this->fail();
457
    }
458
459
    public function testConstraintNotGreaterThanOrEqual()
460
    {
461
        $constraint = Assert::logicalNot(
462
            Assert::greaterThanOrEqual(1)
463
        );
464
465
        $this->assertFalse($constraint->evaluate(1, '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate(1, '', true) targeting PHPUnit\Framework\Constr...\LogicalNot::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertFalse() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
466
        $this->assertEquals('not( is equal to 1 or is greater than 1 )', $constraint->toString());
467
        $this->assertCount(2, $constraint);
468
469
        try {
470
            $constraint->evaluate(1);
471
        } catch (ExpectationFailedException $e) {
472
            $this->assertEquals(
473
                <<<EOF
474
Failed asserting that not( 1 is equal to 1 or is greater than 1 ).
475
476
EOF
477
                ,
478
                TestFailure::exceptionToString($e)
479
            );
480
481
            return;
482
        }
483
484
        $this->fail();
485
    }
486
487
    public function testConstraintNotGreaterThanOrEqual2()
488
    {
489
        $constraint = Assert::logicalNot(
490
            Assert::greaterThanOrEqual(1)
491
        );
492
493
        try {
494
            $constraint->evaluate(1, 'custom message');
495
        } catch (ExpectationFailedException $e) {
496
            $this->assertEquals(
497
                <<<EOF
498
custom message
499
Failed asserting that not( 1 is equal to 1 or is greater than 1 ).
500
501
EOF
502
                ,
503
                TestFailure::exceptionToString($e)
504
            );
505
506
            return;
507
        }
508
509
        $this->fail();
510
    }
511
512
    public function testConstraintIsAnything()
513
    {
514
        $constraint = Assert::anything();
515
516
        $this->assertTrue($constraint->evaluate(null, '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate(null, '', true) targeting PHPUnit\Framework\Constr...\IsAnything::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertTrue() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
517
        $this->assertNull($constraint->evaluate(null));
518
        $this->assertEquals('is anything', $constraint->toString());
519
        $this->assertCount(0, $constraint);
520
    }
521
522
    public function testConstraintNotIsAnything()
523
    {
524
        $constraint = Assert::logicalNot(
525
            Assert::anything()
526
        );
527
528
        $this->assertFalse($constraint->evaluate(null, '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate(null, '', true) targeting PHPUnit\Framework\Constr...\LogicalNot::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertFalse() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
529
        $this->assertEquals('is not anything', $constraint->toString());
530
        $this->assertCount(0, $constraint);
531
532
        try {
533
            $constraint->evaluate(null);
534
        } catch (ExpectationFailedException $e) {
535
            $this->assertEquals(
536
                <<<EOF
537
Failed asserting that null is not anything.
538
539
EOF
540
                ,
541
                TestFailure::exceptionToString($e)
542
            );
543
544
            return;
545
        }
546
547
        $this->fail();
548
    }
549
550
    public function testConstraintIsEqual()
551
    {
552
        $constraint = Assert::equalTo(1);
553
554
        $this->assertTrue($constraint->evaluate(1, '', true));
555
        $this->assertFalse($constraint->evaluate(0, '', true));
556
        $this->assertEquals('is equal to 1', $constraint->toString());
557
        $this->assertCount(1, $constraint);
558
559
        try {
560
            $constraint->evaluate(0);
561
        } catch (ExpectationFailedException $e) {
562
            $this->assertEquals(
563
                <<<EOF
564
Failed asserting that 0 matches expected 1.
565
566
EOF
567
                ,
568
                TestFailure::exceptionToString($e)
569
            );
570
571
            return;
572
        }
573
574
        $this->fail();
575
    }
576
577
    public function isEqualProvider()
578
    {
579
        $a      = new \stdClass;
580
        $a->foo = 'bar';
581
        $b      = new \stdClass;
582
        $ahash  = \spl_object_hash($a);
583
        $bhash  = \spl_object_hash($b);
584
585
        $c               = new \stdClass;
586
        $c->foo          = 'bar';
587
        $c->int          = 1;
588
        $c->array        = [0, [1], [2], 3];
589
        $c->related      = new \stdClass;
590
        $c->related->foo = "a\nb\nc\nd\ne\nf\ng\nh\ni\nj\nk";
591
        $c->self         = $c;
592
        $c->c            = $c;
593
        $d               = new \stdClass;
594
        $d->foo          = 'bar';
595
        $d->int          = 2;
596
        $d->array        = [0, [4], [2], 3];
597
        $d->related      = new \stdClass;
598
        $d->related->foo = "a\np\nc\nd\ne\nf\ng\nh\ni\nw\nk";
599
        $d->self         = $d;
600
        $d->c            = $c;
601
602
        $storage1 = new \SplObjectStorage;
603
        $storage1->attach($a);
604
        $storage1->attach($b);
605
        $storage2 = new \SplObjectStorage;
606
        $storage2->attach($b);
607
        $storage1hash = \spl_object_hash($storage1);
608
        $storage2hash = \spl_object_hash($storage2);
609
610
        $dom1                     = new \DOMDocument;
611
        $dom1->preserveWhiteSpace = false;
612
        $dom1->loadXML('<root></root>');
613
        $dom2                     = new \DOMDocument;
614
        $dom2->preserveWhiteSpace = false;
615
        $dom2->loadXML('<root><foo/></root>');
616
617
        $data = [
618
            [1, 0, <<<EOF
619
Failed asserting that 0 matches expected 1.
620
621
EOF
622
            ],
623
            [1.1, 0, <<<EOF
624
Failed asserting that 0 matches expected 1.1.
625
626
EOF
627
            ],
628
            ['a', 'b', <<<EOF
629
Failed asserting that two strings are equal.
630
--- Expected
631
+++ Actual
632
@@ @@
633
-'a'
634
+'b'
635
636
EOF
637
            ],
638
            ["a\nb\nc\nd\ne\nf\ng\nh\ni\nj\nk", "a\np\nc\nd\ne\nf\ng\nh\ni\nw\nk", <<<EOF
639
Failed asserting that two strings are equal.
640
--- Expected
641
+++ Actual
642
@@ @@
643
 'a\\n
644
-b\\n
645
+p\\n
646
@@ @@
647
 i\\n
648
-j\\n
649
+w\\n
650
 k'
651
652
EOF
653
            ],
654
            [1, [0], <<<EOF
655
Array (...) does not match expected type "integer".
656
657
EOF
658
            ],
659
            [[0], 1, <<<EOF
660
1 does not match expected type "array".
661
662
EOF
663
            ],
664
            [[0], [1], <<<EOF
665
Failed asserting that two arrays are equal.
666
--- Expected
667
+++ Actual
668
@@ @@
669
 Array (
670
-    0 => 0
671
+    0 => 1
672
 )
673
674
EOF
675
            ],
676
            [[true], ['true'], <<<EOF
677
Failed asserting that two arrays are equal.
678
--- Expected
679
+++ Actual
680
@@ @@
681
 Array (
682
-    0 => true
683
+    0 => 'true'
684
 )
685
686
EOF
687
            ],
688
            [[0, [1], [2], 3], [0, [4], [2], 3], <<<EOF
689
Failed asserting that two arrays are equal.
690
--- Expected
691
+++ Actual
692
@@ @@
693
 Array (
694
     0 => 0
695
     1 => Array (
696
-        0 => 1
697
+        0 => 4
698
     )
699
     2 => Array (...)
700
     3 => 3
701
 )
702
703
EOF
704
            ],
705
            [$a, [0], <<<EOF
706
Array (...) does not match expected type "object".
707
708
EOF
709
            ],
710
            [[0], $a, <<<EOF
711
stdClass Object (...) does not match expected type "array".
712
713
EOF
714
            ],
715
            [$a, $b, <<<EOF
716
Failed asserting that two objects are equal.
717
--- Expected
718
+++ Actual
719
@@ @@
720
 stdClass Object (
721
-    'foo' => 'bar'
722
 )
723
724
EOF
725
            ],
726
            [$c, $d, <<<EOF
727
Failed asserting that two objects are equal.
728
--- Expected
729
+++ Actual
730
@@ @@
731
 stdClass Object (
732
     'foo' => 'bar'
733
-    'int' => 1
734
+    'int' => 2
735
     'array' => Array (
736
         0 => 0
737
         1 => Array (
738
-            0 => 1
739
+            0 => 4
740
@@ @@
741
         'foo' => 'a\\n
742
-        b\\n
743
+        p\\n
744
@@ @@
745
         i\\n
746
-        j\\n
747
+        w\\n
748
         k'
749
     )
750
     'self' => stdClass Object (...)
751
     'c' => stdClass Object (...)
752
 )
753
754
EOF
755
            ],
756
            [$dom1, $dom2, <<<EOF
757
Failed asserting that two DOM documents are equal.
758
--- Expected
759
+++ Actual
760
@@ @@
761
 <?xml version="1.0"?>
762
-<root/>
763
+<root>
764
+  <foo/>
765
+</root>
766
767
EOF
768
            ],
769
            [
770
              new \DateTime('2013-03-29 04:13:35', new \DateTimeZone('America/New_York')),
771
              new \DateTime('2013-03-29 04:13:35', new \DateTimeZone('America/Chicago')),
772
              <<<EOF
773
Failed asserting that two DateTime objects are equal.
774
--- Expected
775
+++ Actual
776
@@ @@
777
-2013-03-29T04:13:35.000000-0400
778
+2013-03-29T04:13:35.000000-0500
779
780
EOF
781
            ],
782
        ];
783
784
        if (PHP_MAJOR_VERSION < 7) {
785
            $data[] = [$storage1, $storage2, <<<EOF
786
Failed asserting that two objects are equal.
787
--- Expected
788
+++ Actual
789
@@ @@
790
-SplObjectStorage Object &$storage1hash (
791
-    '$ahash' => Array &0 (
792
-        'obj' => stdClass Object &$ahash (
793
-            'foo' => 'bar'
794
-        )
795
-        'inf' => null
796
-    )
797
-    '$bhash' => Array &1 (
798
+SplObjectStorage Object &$storage2hash (
799
+    '$bhash' => Array &0 (
800
         'obj' => stdClass Object &$bhash ()
801
         'inf' => null
802
     )
803
 )
804
805
EOF
806
            ];
807
        } else {
808
            $data[] = [$storage1, $storage2, <<<EOF
809
Failed asserting that two objects are equal.
810
--- Expected
811
+++ Actual
812
@@ @@
813
-SplObjectStorage Object &$storage1hash (
814
-    '$ahash' => Array &0 (
815
-        'obj' => stdClass Object &$ahash (
816
-            'foo' => 'bar'
817
-        )
818
-        'inf' => null
819
-    )
820
-    '$bhash' => Array &1 (
821
+SplObjectStorage Object &$storage2hash (
822
+    '$bhash' => Array &0 (
823
         'obj' => stdClass Object &$bhash ()
824
         'inf' => null
825
     )
826
 )
827
828
EOF
829
            ];
830
        }
831
832
        return $data;
833
    }
834
835
    /**
836
     * @dataProvider isEqualProvider
837
     */
838
    public function testConstraintIsEqual2($expected, $actual, $message)
839
    {
840
        $constraint = Assert::equalTo($expected);
841
842
        try {
843
            $constraint->evaluate($actual, 'custom message');
844
        } catch (ExpectationFailedException $e) {
845
            $this->assertEquals(
846
                "custom message\n$message",
847
                $this->trimnl(TestFailure::exceptionToString($e))
848
            );
849
850
            return;
851
        }
852
853
        $this->fail();
854
    }
855
856
    public function testConstraintIsNotEqual()
857
    {
858
        $constraint = Assert::logicalNot(
859
            Assert::equalTo(1)
860
        );
861
862
        $this->assertTrue($constraint->evaluate(0, '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate(0, '', true) targeting PHPUnit\Framework\Constr...\LogicalNot::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertTrue() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
863
        $this->assertFalse($constraint->evaluate(1, '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate(1, '', true) targeting PHPUnit\Framework\Constr...\LogicalNot::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertFalse() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
864
        $this->assertEquals('is not equal to 1', $constraint->toString());
865
        $this->assertCount(1, $constraint);
866
867
        try {
868
            $constraint->evaluate(1);
869
        } catch (ExpectationFailedException $e) {
870
            $this->assertEquals(
871
                <<<EOF
872
Failed asserting that 1 is not equal to 1.
873
874
EOF
875
                ,
876
                TestFailure::exceptionToString($e)
877
            );
878
879
            return;
880
        }
881
882
        $this->fail();
883
    }
884
885
    public function testConstraintIsNotEqual2()
886
    {
887
        $constraint = Assert::logicalNot(
888
            Assert::equalTo(1)
889
        );
890
891
        try {
892
            $constraint->evaluate(1, 'custom message');
893
        } catch (ExpectationFailedException $e) {
894
            $this->assertEquals(
895
                <<<EOF
896
custom message
897
Failed asserting that 1 is not equal to 1.
898
899
EOF
900
                ,
901
                TestFailure::exceptionToString($e)
902
            );
903
904
            return;
905
        }
906
907
        $this->fail();
908
    }
909
910
    public function testConstraintIsIdentical()
911
    {
912
        $a = new \stdClass;
913
        $b = new \stdClass;
914
915
        $constraint = Assert::identicalTo($a);
916
917
        $this->assertFalse($constraint->evaluate($b, '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate($b, '', true) targeting PHPUnit\Framework\Constr...IsIdentical::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertFalse() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
918
        $this->assertTrue($constraint->evaluate($a, '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate($a, '', true) targeting PHPUnit\Framework\Constr...IsIdentical::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertTrue() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
919
        $this->assertEquals('is identical to an object of class "stdClass"', $constraint->toString());
920
        $this->assertCount(1, $constraint);
921
922
        try {
923
            $constraint->evaluate($b);
924
        } catch (ExpectationFailedException $e) {
925
            $this->assertEquals(
926
                <<<EOF
927
Failed asserting that two variables reference the same object.
928
929
EOF
930
                ,
931
                TestFailure::exceptionToString($e)
932
            );
933
934
            return;
935
        }
936
937
        $this->fail();
938
    }
939
940
    public function testConstraintIsIdentical2()
941
    {
942
        $a = new \stdClass;
943
        $b = new \stdClass;
944
945
        $constraint = Assert::identicalTo($a);
946
947
        try {
948
            $constraint->evaluate($b, 'custom message');
949
        } catch (ExpectationFailedException $e) {
950
            $this->assertEquals(
951
                <<<EOF
952
custom message
953
Failed asserting that two variables reference the same object.
954
955
EOF
956
                ,
957
                TestFailure::exceptionToString($e)
958
            );
959
960
            return;
961
        }
962
963
        $this->fail();
964
    }
965
966
    public function testConstraintIsIdentical3()
967
    {
968
        $constraint = Assert::identicalTo('a');
969
970
        try {
971
            $constraint->evaluate('b', 'custom message');
972
        } catch (ExpectationFailedException $e) {
973
            $this->assertEquals(
974
                <<<EOF
975
custom message
976
Failed asserting that two strings are identical.
977
--- Expected
978
+++ Actual
979
@@ @@
980
-'a'
981
+'b'
982
983
EOF
984
                ,
985
                TestFailure::exceptionToString($e)
986
            );
987
988
            return;
989
        }
990
991
        $this->fail();
992
    }
993
994
    public function testConstraintIsNotIdentical()
995
    {
996
        $a = new \stdClass;
997
        $b = new \stdClass;
998
999
        $constraint = Assert::logicalNot(
1000
            Assert::identicalTo($a)
1001
        );
1002
1003
        $this->assertTrue($constraint->evaluate($b, '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate($b, '', true) targeting PHPUnit\Framework\Constr...\LogicalNot::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertTrue() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
1004
        $this->assertFalse($constraint->evaluate($a, '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate($a, '', true) targeting PHPUnit\Framework\Constr...\LogicalNot::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertFalse() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
1005
        $this->assertEquals('is not identical to an object of class "stdClass"', $constraint->toString());
1006
        $this->assertCount(1, $constraint);
1007
1008
        try {
1009
            $constraint->evaluate($a);
1010
        } catch (ExpectationFailedException $e) {
1011
            $this->assertEquals(
1012
                <<<EOF
1013
Failed asserting that two variables don't reference the same object.
1014
1015
EOF
1016
                ,
1017
                $this->trimnl(TestFailure::exceptionToString($e))
1018
            );
1019
1020
            return;
1021
        }
1022
1023
        $this->fail();
1024
    }
1025
1026
    public function testConstraintIsNotIdentical2()
1027
    {
1028
        $a = new \stdClass;
1029
1030
        $constraint = Assert::logicalNot(
1031
            Assert::identicalTo($a)
1032
        );
1033
1034
        try {
1035
            $constraint->evaluate($a, 'custom message');
1036
        } catch (ExpectationFailedException $e) {
1037
            $this->assertEquals(
1038
                <<<EOF
1039
custom message
1040
Failed asserting that two variables don't reference the same object.
1041
1042
EOF
1043
                ,
1044
                TestFailure::exceptionToString($e)
1045
            );
1046
1047
            return;
1048
        }
1049
1050
        $this->fail();
1051
    }
1052
1053
    public function testConstraintIsNotIdentical3()
1054
    {
1055
        $constraint = Assert::logicalNot(
1056
            Assert::identicalTo('a')
1057
        );
1058
1059
        try {
1060
            $constraint->evaluate('a', 'custom message');
1061
        } catch (ExpectationFailedException $e) {
1062
            $this->assertEquals(
1063
                <<<EOF
1064
custom message
1065
Failed asserting that two strings are not identical.
1066
1067
EOF
1068
                ,
1069
                $this->trimnl(TestFailure::exceptionToString($e))
1070
            );
1071
1072
            return;
1073
        }
1074
1075
        $this->fail();
1076
    }
1077
1078
    public function testConstraintIsInstanceOf()
1079
    {
1080
        $constraint = Assert::isInstanceOf(\Exception::class);
1081
1082
        $this->assertFalse($constraint->evaluate(new \stdClass, '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate(new \stdClass(), '', true) targeting PHPUnit\Framework\Constr...\Constraint::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertFalse() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
1083
        $this->assertTrue($constraint->evaluate(new \Exception, '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate(new \Exception(), '', true) targeting PHPUnit\Framework\Constr...\Constraint::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertTrue() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
1084
        $this->assertEquals('is instance of class "Exception"', $constraint->toString());
1085
        $this->assertCount(1, $constraint);
1086
1087
        $interfaceConstraint = Assert::isInstanceOf(\Countable::class);
1088
        $this->assertFalse($interfaceConstraint->evaluate(new \stdClass, '', true));
0 ignored issues
show
Bug introduced by
It seems like $interfaceConstraint->ev... \stdClass(), '', true) targeting PHPUnit\Framework\Constr...\Constraint::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertFalse() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
1089
        $this->assertTrue($interfaceConstraint->evaluate(new \ArrayObject, '', true));
0 ignored issues
show
Bug introduced by
It seems like $interfaceConstraint->ev...rrayObject(), '', true) targeting PHPUnit\Framework\Constr...\Constraint::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertTrue() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
1090
        $this->assertEquals('is instance of interface "Countable"', $interfaceConstraint->toString());
1091
1092
        try {
1093
            $constraint->evaluate(new \stdClass);
1094
        } catch (ExpectationFailedException $e) {
1095
            $this->assertEquals(
1096
                <<<EOF
1097
Failed asserting that stdClass Object () is an instance of class "Exception".
1098
1099
EOF
1100
                ,
1101
                TestFailure::exceptionToString($e)
1102
            );
1103
1104
            return;
1105
        }
1106
1107
        $this->fail();
1108
    }
1109
1110
    public function testConstraintIsInstanceOf2()
1111
    {
1112
        $constraint = Assert::isInstanceOf(\Exception::class);
1113
1114
        try {
1115
            $constraint->evaluate(new \stdClass, 'custom message');
1116
        } catch (ExpectationFailedException $e) {
1117
            $this->assertEquals(
1118
                <<<EOF
1119
custom message
1120
Failed asserting that stdClass Object () is an instance of class "Exception".
1121
1122
EOF
1123
                ,
1124
                TestFailure::exceptionToString($e)
1125
            );
1126
1127
            return;
1128
        }
1129
1130
        $this->fail();
1131
    }
1132
1133
    public function testConstraintIsNotInstanceOf()
1134
    {
1135
        $constraint = Assert::logicalNot(
1136
            Assert::isInstanceOf(\stdClass::class)
1137
        );
1138
1139
        $this->assertFalse($constraint->evaluate(new \stdClass, '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate(new \stdClass(), '', true) targeting PHPUnit\Framework\Constr...\LogicalNot::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertFalse() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
1140
        $this->assertTrue($constraint->evaluate(new Exception, '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate(ne...\Exception(), '', true) targeting PHPUnit\Framework\Constr...\LogicalNot::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertTrue() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
1141
        $this->assertEquals('is not instance of class "stdClass"', $constraint->toString());
1142
        $this->assertCount(1, $constraint);
1143
1144
        try {
1145
            $constraint->evaluate(new \stdClass);
1146
        } catch (ExpectationFailedException $e) {
1147
            $this->assertEquals(
1148
                <<<EOF
1149
Failed asserting that stdClass Object () is not an instance of class "stdClass".
1150
1151
EOF
1152
                ,
1153
                TestFailure::exceptionToString($e)
1154
            );
1155
1156
            return;
1157
        }
1158
1159
        $this->fail();
1160
    }
1161
1162
    public function testConstraintIsNotInstanceOf2()
1163
    {
1164
        $constraint = Assert::logicalNot(
1165
            Assert::isInstanceOf(\stdClass::class)
1166
        );
1167
1168
        try {
1169
            $constraint->evaluate(new \stdClass, 'custom message');
1170
        } catch (ExpectationFailedException $e) {
1171
            $this->assertEquals(
1172
                <<<EOF
1173
custom message
1174
Failed asserting that stdClass Object () is not an instance of class "stdClass".
1175
1176
EOF
1177
                ,
1178
                TestFailure::exceptionToString($e)
1179
            );
1180
1181
            return;
1182
        }
1183
1184
        $this->fail();
1185
    }
1186
1187
    public function testConstraintIsType()
1188
    {
1189
        $constraint = Assert::isType('string');
1190
1191
        $this->assertFalse($constraint->evaluate(0, '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate(0, '', true) targeting PHPUnit\Framework\Constr...\Constraint::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertFalse() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
1192
        $this->assertTrue($constraint->evaluate('', '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate('', '', true) targeting PHPUnit\Framework\Constr...\Constraint::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertTrue() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
1193
        $this->assertEquals('is of type "string"', $constraint->toString());
1194
        $this->assertCount(1, $constraint);
1195
1196
        try {
1197
            $constraint->evaluate(new \stdClass);
1198
        } catch (ExpectationFailedException $e) {
1199
            $this->assertStringMatchesFormat(
1200
                <<<EOF
1201
Failed asserting that stdClass Object &%x () is of type "string".
1202
1203
EOF
1204
                ,
1205
                $this->trimnl(TestFailure::exceptionToString($e))
1206
            );
1207
1208
            return;
1209
        }
1210
1211
        $this->fail();
1212
    }
1213
1214
    public function testConstraintIsType2()
1215
    {
1216
        $constraint = Assert::isType('string');
1217
1218
        try {
1219
            $constraint->evaluate(new \stdClass, 'custom message');
1220
        } catch (ExpectationFailedException $e) {
1221
            $this->assertStringMatchesFormat(
1222
                <<<EOF
1223
custom message
1224
Failed asserting that stdClass Object &%x () is of type "string".
1225
1226
EOF
1227
                ,
1228
                $this->trimnl(TestFailure::exceptionToString($e))
1229
            );
1230
1231
            return;
1232
        }
1233
1234
        $this->fail();
1235
    }
1236
1237
    public function resources()
1238
    {
1239
        $fh = \fopen(__FILE__, 'r');
1240
        \fclose($fh);
1241
1242
        return [
1243
            'open resource'     => [\fopen(__FILE__, 'r')],
1244
            'closed resource'   => [$fh],
1245
        ];
1246
    }
1247
1248
    /**
1249
     * @dataProvider resources
1250
     */
1251
    public function testConstraintIsResourceTypeEvaluatesCorrectlyWithResources($resource)
1252
    {
1253
        $constraint = Assert::isType('resource');
1254
1255
        $this->assertTrue($constraint->evaluate($resource, '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate($resource, '', true) targeting PHPUnit\Framework\Constr...\Constraint::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertTrue() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
1256
1257
        @\fclose($resource);
0 ignored issues
show
Security Best Practice introduced by
It seems like you do not handle an error condition here. This can introduce security issues, and is generally not recommended.

If you suppress an error, we recommend checking for the error condition explicitly:

// For example instead of
@mkdir($dir);

// Better use
if (@mkdir($dir) === false) {
    throw new \RuntimeException('The directory '.$dir.' could not be created.');
}
Loading history...
1258
    }
1259
1260
    public function testConstraintIsNotType()
1261
    {
1262
        $constraint = Assert::logicalNot(
1263
            Assert::isType('string')
1264
        );
1265
1266
        $this->assertTrue($constraint->evaluate(0, '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate(0, '', true) targeting PHPUnit\Framework\Constr...\LogicalNot::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertTrue() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
1267
        $this->assertFalse($constraint->evaluate('', '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate('', '', true) targeting PHPUnit\Framework\Constr...\LogicalNot::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertFalse() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
1268
        $this->assertEquals('is not of type "string"', $constraint->toString());
1269
        $this->assertCount(1, $constraint);
1270
1271
        try {
1272
            $constraint->evaluate('');
1273
        } catch (ExpectationFailedException $e) {
1274
            $this->assertEquals(
1275
                <<<EOF
1276
Failed asserting that '' is not of type "string".
1277
1278
EOF
1279
                ,
1280
                TestFailure::exceptionToString($e)
1281
            );
1282
1283
            return;
1284
        }
1285
1286
        $this->fail();
1287
    }
1288
1289
    public function testConstraintIsNotType2()
1290
    {
1291
        $constraint = Assert::logicalNot(
1292
            Assert::isType('string')
1293
        );
1294
1295
        try {
1296
            $constraint->evaluate('', 'custom message');
1297
        } catch (ExpectationFailedException $e) {
1298
            $this->assertEquals(
1299
                <<<EOF
1300
custom message
1301
Failed asserting that '' is not of type "string".
1302
1303
EOF
1304
                ,
1305
                TestFailure::exceptionToString($e)
1306
            );
1307
1308
            return;
1309
        }
1310
1311
        $this->fail();
1312
    }
1313
1314
    public function testConstraintIsNull()
1315
    {
1316
        $constraint = Assert::isNull();
1317
1318
        $this->assertFalse($constraint->evaluate(0, '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate(0, '', true) targeting PHPUnit\Framework\Constr...\Constraint::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertFalse() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
1319
        $this->assertTrue($constraint->evaluate(null, '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate(null, '', true) targeting PHPUnit\Framework\Constr...\Constraint::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertTrue() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
1320
        $this->assertEquals('is null', $constraint->toString());
1321
        $this->assertCount(1, $constraint);
1322
1323
        try {
1324
            $constraint->evaluate(0);
1325
        } catch (ExpectationFailedException $e) {
1326
            $this->assertEquals(
1327
                <<<EOF
1328
Failed asserting that 0 is null.
1329
1330
EOF
1331
                ,
1332
                TestFailure::exceptionToString($e)
1333
            );
1334
1335
            return;
1336
        }
1337
1338
        $this->fail();
1339
    }
1340
1341
    public function testConstraintIsNull2()
1342
    {
1343
        $constraint = Assert::isNull();
1344
1345
        try {
1346
            $constraint->evaluate(0, 'custom message');
1347
        } catch (ExpectationFailedException $e) {
1348
            $this->assertEquals(
1349
                <<<EOF
1350
custom message
1351
Failed asserting that 0 is null.
1352
1353
EOF
1354
                ,
1355
                TestFailure::exceptionToString($e)
1356
            );
1357
1358
            return;
1359
        }
1360
1361
        $this->fail();
1362
    }
1363
1364
    public function testConstraintIsNotNull()
1365
    {
1366
        $constraint = Assert::logicalNot(
1367
            Assert::isNull()
1368
        );
1369
1370
        $this->assertFalse($constraint->evaluate(null, '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate(null, '', true) targeting PHPUnit\Framework\Constr...\LogicalNot::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertFalse() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
1371
        $this->assertTrue($constraint->evaluate(0, '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate(0, '', true) targeting PHPUnit\Framework\Constr...\LogicalNot::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertTrue() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
1372
        $this->assertEquals('is not null', $constraint->toString());
1373
        $this->assertCount(1, $constraint);
1374
1375
        try {
1376
            $constraint->evaluate(null);
1377
        } catch (ExpectationFailedException $e) {
1378
            $this->assertEquals(
1379
                <<<EOF
1380
Failed asserting that null is not null.
1381
1382
EOF
1383
                ,
1384
                TestFailure::exceptionToString($e)
1385
            );
1386
1387
            return;
1388
        }
1389
1390
        $this->fail();
1391
    }
1392
1393
    public function testConstraintIsNotNull2()
1394
    {
1395
        $constraint = Assert::logicalNot(
1396
            Assert::isNull()
1397
        );
1398
1399
        try {
1400
            $constraint->evaluate(null, 'custom message');
1401
        } catch (ExpectationFailedException $e) {
1402
            $this->assertEquals(
1403
                <<<EOF
1404
custom message
1405
Failed asserting that null is not null.
1406
1407
EOF
1408
                ,
1409
                TestFailure::exceptionToString($e)
1410
            );
1411
1412
            return;
1413
        }
1414
1415
        $this->fail();
1416
    }
1417
1418
    public function testConstraintLessThan()
1419
    {
1420
        $constraint = Assert::lessThan(1);
1421
1422
        $this->assertTrue($constraint->evaluate(0, '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate(0, '', true) targeting PHPUnit\Framework\Constr...\Constraint::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertTrue() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
1423
        $this->assertFalse($constraint->evaluate(1, '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate(1, '', true) targeting PHPUnit\Framework\Constr...\Constraint::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertFalse() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
1424
        $this->assertEquals('is less than 1', $constraint->toString());
1425
        $this->assertCount(1, $constraint);
1426
1427
        try {
1428
            $constraint->evaluate(1);
1429
        } catch (ExpectationFailedException $e) {
1430
            $this->assertEquals(
1431
                <<<EOF
1432
Failed asserting that 1 is less than 1.
1433
1434
EOF
1435
                ,
1436
                TestFailure::exceptionToString($e)
1437
            );
1438
1439
            return;
1440
        }
1441
1442
        $this->fail();
1443
    }
1444
1445
    public function testConstraintLessThan2()
1446
    {
1447
        $constraint = Assert::lessThan(1);
1448
1449
        try {
1450
            $constraint->evaluate(1, 'custom message');
1451
        } catch (ExpectationFailedException $e) {
1452
            $this->assertEquals(
1453
                <<<EOF
1454
custom message
1455
Failed asserting that 1 is less than 1.
1456
1457
EOF
1458
                ,
1459
                TestFailure::exceptionToString($e)
1460
            );
1461
1462
            return;
1463
        }
1464
1465
        $this->fail();
1466
    }
1467
1468
    public function testConstraintNotLessThan()
1469
    {
1470
        $constraint = Assert::logicalNot(
1471
            Assert::lessThan(1)
1472
        );
1473
1474
        $this->assertTrue($constraint->evaluate(1, '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate(1, '', true) targeting PHPUnit\Framework\Constr...\LogicalNot::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertTrue() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
1475
        $this->assertFalse($constraint->evaluate(0, '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate(0, '', true) targeting PHPUnit\Framework\Constr...\LogicalNot::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertFalse() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
1476
        $this->assertEquals('is not less than 1', $constraint->toString());
1477
        $this->assertCount(1, $constraint);
1478
1479
        try {
1480
            $constraint->evaluate(0);
1481
        } catch (ExpectationFailedException $e) {
1482
            $this->assertEquals(
1483
                <<<EOF
1484
Failed asserting that 0 is not less than 1.
1485
1486
EOF
1487
                ,
1488
                TestFailure::exceptionToString($e)
1489
            );
1490
1491
            return;
1492
        }
1493
1494
        $this->fail();
1495
    }
1496
1497
    public function testConstraintNotLessThan2()
1498
    {
1499
        $constraint = Assert::logicalNot(
1500
            Assert::lessThan(1)
1501
        );
1502
1503
        try {
1504
            $constraint->evaluate(0, 'custom message');
1505
        } catch (ExpectationFailedException $e) {
1506
            $this->assertEquals(
1507
                <<<EOF
1508
custom message
1509
Failed asserting that 0 is not less than 1.
1510
1511
EOF
1512
                ,
1513
                TestFailure::exceptionToString($e)
1514
            );
1515
1516
            return;
1517
        }
1518
1519
        $this->fail();
1520
    }
1521
1522
    public function testConstraintLessThanOrEqual()
1523
    {
1524
        $constraint = Assert::lessThanOrEqual(1);
1525
1526
        $this->assertTrue($constraint->evaluate(1, '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate(1, '', true) targeting PHPUnit\Framework\Constraint\LogicalOr::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertTrue() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
1527
        $this->assertFalse($constraint->evaluate(2, '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate(2, '', true) targeting PHPUnit\Framework\Constraint\LogicalOr::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertFalse() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
1528
        $this->assertEquals('is equal to 1 or is less than 1', $constraint->toString());
1529
        $this->assertCount(2, $constraint);
1530
1531
        try {
1532
            $constraint->evaluate(2);
1533
        } catch (ExpectationFailedException $e) {
1534
            $this->assertEquals(
1535
                <<<EOF
1536
Failed asserting that 2 is equal to 1 or is less than 1.
1537
1538
EOF
1539
                ,
1540
                TestFailure::exceptionToString($e)
1541
            );
1542
1543
            return;
1544
        }
1545
1546
        $this->fail();
1547
    }
1548
1549
    public function testConstraintCallback()
1550
    {
1551
        $closureReflect = function ($parameter) {
1552
            return $parameter;
1553
        };
1554
1555
        $closureWithoutParameter = function () {
1556
            return true;
1557
        };
1558
1559
        $constraint = Assert::callback($closureWithoutParameter);
1560
        $this->assertTrue($constraint->evaluate('', '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate('', '', true) targeting PHPUnit\Framework\Constr...\Constraint::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertTrue() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
1561
1562
        $constraint = Assert::callback($closureReflect);
1563
        $this->assertTrue($constraint->evaluate(true, '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate(true, '', true) targeting PHPUnit\Framework\Constr...\Constraint::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertTrue() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
1564
        $this->assertFalse($constraint->evaluate(false, '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate(false, '', true) targeting PHPUnit\Framework\Constr...\Constraint::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertFalse() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
1565
1566
        $callback   = [$this, 'callbackReturningTrue'];
1567
        $constraint = Assert::callback($callback);
1568
        $this->assertTrue($constraint->evaluate(false, '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate(false, '', true) targeting PHPUnit\Framework\Constr...\Constraint::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertTrue() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
1569
1570
        $callback   = [self::class, 'staticCallbackReturningTrue'];
1571
        $constraint = Assert::callback($callback);
1572
        $this->assertTrue($constraint->evaluate(null, '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate(null, '', true) targeting PHPUnit\Framework\Constr...\Constraint::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertTrue() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
1573
1574
        $this->assertEquals('is accepted by specified callback', $constraint->toString());
1575
    }
1576
1577
    public function testConstraintCallbackFailure()
1578
    {
1579
        $constraint = Assert::callback(function () {
1580
            return false;
1581
        });
1582
1583
        $this->expectException(ExpectationFailedException::class);
1584
        $this->expectExceptionMessage('Failed asserting that \'This fails\' is accepted by specified callback.');
1585
1586
        $constraint->evaluate('This fails');
1587
    }
1588
1589
    public function callbackReturningTrue()
1590
    {
1591
        return true;
1592
    }
1593
1594
    public static function staticCallbackReturningTrue()
1595
    {
1596
        return true;
1597
    }
1598
1599
    public function testConstraintLessThanOrEqual2()
1600
    {
1601
        $constraint = Assert::lessThanOrEqual(1);
1602
1603
        try {
1604
            $constraint->evaluate(2, 'custom message');
1605
        } catch (ExpectationFailedException $e) {
1606
            $this->assertEquals(
1607
                <<<EOF
1608
custom message
1609
Failed asserting that 2 is equal to 1 or is less than 1.
1610
1611
EOF
1612
                ,
1613
                TestFailure::exceptionToString($e)
1614
            );
1615
1616
            return;
1617
        }
1618
1619
        $this->fail();
1620
    }
1621
1622
    public function testConstraintNotLessThanOrEqual()
1623
    {
1624
        $constraint = Assert::logicalNot(
1625
            Assert::lessThanOrEqual(1)
1626
        );
1627
1628
        $this->assertTrue($constraint->evaluate(2, '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate(2, '', true) targeting PHPUnit\Framework\Constr...\LogicalNot::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertTrue() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
1629
        $this->assertFalse($constraint->evaluate(1, '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate(1, '', true) targeting PHPUnit\Framework\Constr...\LogicalNot::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertFalse() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
1630
        $this->assertEquals('not( is equal to 1 or is less than 1 )', $constraint->toString());
1631
        $this->assertCount(2, $constraint);
1632
1633
        try {
1634
            $constraint->evaluate(1);
1635
        } catch (ExpectationFailedException $e) {
1636
            $this->assertEquals(
1637
                <<<EOF
1638
Failed asserting that not( 1 is equal to 1 or is less than 1 ).
1639
1640
EOF
1641
                ,
1642
                TestFailure::exceptionToString($e)
1643
            );
1644
1645
            return;
1646
        }
1647
1648
        $this->fail();
1649
    }
1650
1651
    public function testConstraintNotLessThanOrEqual2()
1652
    {
1653
        $constraint = Assert::logicalNot(
1654
            Assert::lessThanOrEqual(1)
1655
        );
1656
1657
        try {
1658
            $constraint->evaluate(1, 'custom message');
1659
        } catch (ExpectationFailedException $e) {
1660
            $this->assertEquals(
1661
                <<<EOF
1662
custom message
1663
Failed asserting that not( 1 is equal to 1 or is less than 1 ).
1664
1665
EOF
1666
                ,
1667
                TestFailure::exceptionToString($e)
1668
            );
1669
1670
            return;
1671
        }
1672
1673
        $this->fail();
1674
    }
1675
1676
    public function testConstraintClassHasAttribute()
1677
    {
1678
        $constraint = Assert::classHasAttribute('privateAttribute');
1679
1680
        $this->assertTrue($constraint->evaluate(\ClassWithNonPublicAttributes::class, '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate(\C...butes::class, '', true) targeting PHPUnit\Framework\Constr...\Constraint::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertTrue() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
1681
        $this->assertFalse($constraint->evaluate(\stdClass::class, '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate(\stdClass::class, '', true) targeting PHPUnit\Framework\Constr...\Constraint::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertFalse() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
1682
        $this->assertEquals('has attribute "privateAttribute"', $constraint->toString());
1683
        $this->assertCount(1, $constraint);
1684
1685
        try {
1686
            $constraint->evaluate(\stdClass::class);
1687
        } catch (ExpectationFailedException $e) {
1688
            $this->assertEquals(
1689
                <<<EOF
1690
Failed asserting that class "stdClass" has attribute "privateAttribute".
1691
1692
EOF
1693
                ,
1694
                TestFailure::exceptionToString($e)
1695
            );
1696
1697
            return;
1698
        }
1699
1700
        $this->fail();
1701
    }
1702
1703
    public function testConstraintClassHasAttribute2()
1704
    {
1705
        $constraint = Assert::classHasAttribute('privateAttribute');
1706
1707
        try {
1708
            $constraint->evaluate(\stdClass::class, 'custom message');
1709
        } catch (ExpectationFailedException $e) {
1710
            $this->assertEquals(
1711
                <<<EOF
1712
custom message
1713
Failed asserting that class "stdClass" has attribute "privateAttribute".
1714
1715
EOF
1716
                ,
1717
                TestFailure::exceptionToString($e)
1718
            );
1719
1720
            return;
1721
        }
1722
1723
        $this->fail();
1724
    }
1725
1726
    public function testConstraintClassNotHasAttribute()
1727
    {
1728
        $constraint = Assert::logicalNot(
1729
            Assert::classHasAttribute('privateAttribute')
1730
        );
1731
1732
        $this->assertTrue($constraint->evaluate(\stdClass::class, '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate(\stdClass::class, '', true) targeting PHPUnit\Framework\Constr...\LogicalNot::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertTrue() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
1733
        $this->assertFalse($constraint->evaluate(\ClassWithNonPublicAttributes::class, '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate(\C...butes::class, '', true) targeting PHPUnit\Framework\Constr...\LogicalNot::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertFalse() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
1734
        $this->assertEquals('does not have attribute "privateAttribute"', $constraint->toString());
1735
        $this->assertCount(1, $constraint);
1736
1737
        try {
1738
            $constraint->evaluate(\ClassWithNonPublicAttributes::class);
1739
        } catch (ExpectationFailedException $e) {
1740
            $this->assertEquals(
1741
                <<<EOF
1742
Failed asserting that class "ClassWithNonPublicAttributes" does not have attribute "privateAttribute".
1743
1744
EOF
1745
                ,
1746
                TestFailure::exceptionToString($e)
1747
            );
1748
1749
            return;
1750
        }
1751
1752
        $this->fail();
1753
    }
1754
1755
    public function testConstraintClassNotHasAttribute2()
1756
    {
1757
        $constraint = Assert::logicalNot(
1758
            Assert::classHasAttribute('privateAttribute')
1759
        );
1760
1761
        try {
1762
            $constraint->evaluate(\ClassWithNonPublicAttributes::class, 'custom message');
1763
        } catch (ExpectationFailedException $e) {
1764
            $this->assertEquals(
1765
                <<<EOF
1766
custom message
1767
Failed asserting that class "ClassWithNonPublicAttributes" does not have attribute "privateAttribute".
1768
1769
EOF
1770
                ,
1771
                TestFailure::exceptionToString($e)
1772
            );
1773
1774
            return;
1775
        }
1776
1777
        $this->fail();
1778
    }
1779
1780
    public function testConstraintClassHasStaticAttribute()
1781
    {
1782
        $constraint = Assert::classHasStaticAttribute('privateStaticAttribute');
1783
1784
        $this->assertTrue($constraint->evaluate(\ClassWithNonPublicAttributes::class, '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate(\C...butes::class, '', true) targeting PHPUnit\Framework\Constr...\Constraint::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertTrue() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
1785
        $this->assertFalse($constraint->evaluate(\stdClass::class, '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate(\stdClass::class, '', true) targeting PHPUnit\Framework\Constr...\Constraint::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertFalse() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
1786
        $this->assertEquals('has static attribute "privateStaticAttribute"', $constraint->toString());
1787
        $this->assertCount(1, $constraint);
1788
1789
        try {
1790
            $constraint->evaluate(\stdClass::class);
1791
        } catch (ExpectationFailedException $e) {
1792
            $this->assertEquals(
1793
                <<<EOF
1794
Failed asserting that class "stdClass" has static attribute "privateStaticAttribute".
1795
1796
EOF
1797
                ,
1798
                TestFailure::exceptionToString($e)
1799
            );
1800
1801
            return;
1802
        }
1803
1804
        $this->fail();
1805
    }
1806
1807
    public function testConstraintClassHasStaticAttribute2()
1808
    {
1809
        $constraint = Assert::classHasStaticAttribute('foo');
1810
1811
        try {
1812
            $constraint->evaluate(\stdClass::class, 'custom message');
1813
        } catch (ExpectationFailedException $e) {
1814
            $this->assertEquals(
1815
                <<<EOF
1816
custom message
1817
Failed asserting that class "stdClass" has static attribute "foo".
1818
1819
EOF
1820
                ,
1821
                TestFailure::exceptionToString($e)
1822
            );
1823
1824
            return;
1825
        }
1826
1827
        $this->fail();
1828
    }
1829
1830
    public function testConstraintClassNotHasStaticAttribute()
1831
    {
1832
        $constraint = Assert::logicalNot(
1833
            Assert::classHasStaticAttribute('privateStaticAttribute')
1834
        );
1835
1836
        $this->assertTrue($constraint->evaluate(\stdClass::class, '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate(\stdClass::class, '', true) targeting PHPUnit\Framework\Constr...\LogicalNot::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertTrue() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
1837
        $this->assertFalse($constraint->evaluate(\ClassWithNonPublicAttributes::class, '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate(\C...butes::class, '', true) targeting PHPUnit\Framework\Constr...\LogicalNot::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertFalse() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
1838
        $this->assertEquals('does not have static attribute "privateStaticAttribute"', $constraint->toString());
1839
        $this->assertCount(1, $constraint);
1840
1841
        try {
1842
            $constraint->evaluate(\ClassWithNonPublicAttributes::class);
1843
        } catch (ExpectationFailedException $e) {
1844
            $this->assertEquals(
1845
                <<<EOF
1846
Failed asserting that class "ClassWithNonPublicAttributes" does not have static attribute "privateStaticAttribute".
1847
1848
EOF
1849
                ,
1850
                TestFailure::exceptionToString($e)
1851
            );
1852
1853
            return;
1854
        }
1855
1856
        $this->fail();
1857
    }
1858
1859
    public function testConstraintClassNotHasStaticAttribute2()
1860
    {
1861
        $constraint = Assert::logicalNot(
1862
            Assert::classHasStaticAttribute('privateStaticAttribute')
1863
        );
1864
1865
        try {
1866
            $constraint->evaluate(\ClassWithNonPublicAttributes::class, 'custom message');
1867
        } catch (ExpectationFailedException $e) {
1868
            $this->assertEquals(
1869
                <<<EOF
1870
custom message
1871
Failed asserting that class "ClassWithNonPublicAttributes" does not have static attribute "privateStaticAttribute".
1872
1873
EOF
1874
                ,
1875
                TestFailure::exceptionToString($e)
1876
            );
1877
1878
            return;
1879
        }
1880
1881
        $this->fail();
1882
    }
1883
1884
    public function testConstraintObjectHasAttribute()
1885
    {
1886
        $constraint = Assert::objectHasAttribute('privateAttribute');
1887
1888
        $this->assertTrue($constraint->evaluate(new \ClassWithNonPublicAttributes, '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate(ne...Attributes(), '', true) targeting PHPUnit\Framework\Constr...\Constraint::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertTrue() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
1889
        $this->assertFalse($constraint->evaluate(new \stdClass, '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate(new \stdClass(), '', true) targeting PHPUnit\Framework\Constr...\Constraint::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertFalse() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
1890
        $this->assertEquals('has attribute "privateAttribute"', $constraint->toString());
1891
        $this->assertCount(1, $constraint);
1892
1893
        try {
1894
            $constraint->evaluate(new \stdClass);
1895
        } catch (ExpectationFailedException $e) {
1896
            $this->assertEquals(
1897
                <<<EOF
1898
Failed asserting that object of class "stdClass" has attribute "privateAttribute".
1899
1900
EOF
1901
                ,
1902
                TestFailure::exceptionToString($e)
1903
            );
1904
1905
            return;
1906
        }
1907
1908
        $this->fail();
1909
    }
1910
1911
    public function testConstraintObjectHasAttribute2()
1912
    {
1913
        $constraint = Assert::objectHasAttribute('privateAttribute');
1914
1915
        try {
1916
            $constraint->evaluate(new \stdClass, 'custom message');
1917
        } catch (ExpectationFailedException $e) {
1918
            $this->assertEquals(
1919
                <<<EOF
1920
custom message
1921
Failed asserting that object of class "stdClass" has attribute "privateAttribute".
1922
1923
EOF
1924
                ,
1925
                TestFailure::exceptionToString($e)
1926
            );
1927
1928
            return;
1929
        }
1930
1931
        $this->fail();
1932
    }
1933
1934
    public function testConstraintObjectNotHasAttribute()
1935
    {
1936
        $constraint = Assert::logicalNot(
1937
            Assert::objectHasAttribute('privateAttribute')
1938
        );
1939
1940
        $this->assertTrue($constraint->evaluate(new \stdClass, '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate(new \stdClass(), '', true) targeting PHPUnit\Framework\Constr...\LogicalNot::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertTrue() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
1941
        $this->assertFalse($constraint->evaluate(new \ClassWithNonPublicAttributes, '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate(ne...Attributes(), '', true) targeting PHPUnit\Framework\Constr...\LogicalNot::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertFalse() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
1942
        $this->assertEquals('does not have attribute "privateAttribute"', $constraint->toString());
1943
        $this->assertCount(1, $constraint);
1944
1945
        try {
1946
            $constraint->evaluate(new \ClassWithNonPublicAttributes);
1947
        } catch (ExpectationFailedException $e) {
1948
            $this->assertEquals(
1949
                <<<EOF
1950
Failed asserting that object of class "ClassWithNonPublicAttributes" does not have attribute "privateAttribute".
1951
1952
EOF
1953
                ,
1954
                TestFailure::exceptionToString($e)
1955
            );
1956
1957
            return;
1958
        }
1959
1960
        $this->fail();
1961
    }
1962
1963
    public function testConstraintObjectNotHasAttribute2()
1964
    {
1965
        $constraint = Assert::logicalNot(
1966
            Assert::objectHasAttribute('privateAttribute')
1967
        );
1968
1969
        try {
1970
            $constraint->evaluate(new \ClassWithNonPublicAttributes, 'custom message');
1971
        } catch (ExpectationFailedException $e) {
1972
            $this->assertEquals(
1973
                <<<EOF
1974
custom message
1975
Failed asserting that object of class "ClassWithNonPublicAttributes" does not have attribute "privateAttribute".
1976
1977
EOF
1978
                ,
1979
                TestFailure::exceptionToString($e)
1980
            );
1981
1982
            return;
1983
        }
1984
1985
        $this->fail();
1986
    }
1987
1988
    public function testConstraintRegularExpression()
1989
    {
1990
        $constraint = Assert::matchesRegularExpression('/foo/');
1991
1992
        $this->assertFalse($constraint->evaluate('barbazbar', '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate('barbazbar', '', true) targeting PHPUnit\Framework\Constr...\Constraint::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertFalse() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
1993
        $this->assertTrue($constraint->evaluate('barfoobar', '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate('barfoobar', '', true) targeting PHPUnit\Framework\Constr...\Constraint::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertTrue() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
1994
        $this->assertEquals('matches PCRE pattern "/foo/"', $constraint->toString());
1995
        $this->assertCount(1, $constraint);
1996
1997
        try {
1998
            $constraint->evaluate('barbazbar');
1999
        } catch (ExpectationFailedException $e) {
2000
            $this->assertEquals(
2001
                <<<EOF
2002
Failed asserting that 'barbazbar' matches PCRE pattern "/foo/".
2003
2004
EOF
2005
                ,
2006
                TestFailure::exceptionToString($e)
2007
            );
2008
2009
            return;
2010
        }
2011
2012
        $this->fail();
2013
    }
2014
2015
    public function testConstraintRegularExpression2()
2016
    {
2017
        $constraint = Assert::matchesRegularExpression('/foo/');
2018
2019
        try {
2020
            $constraint->evaluate('barbazbar', 'custom message');
2021
        } catch (ExpectationFailedException $e) {
2022
            $this->assertEquals(
2023
                <<<EOF
2024
custom message
2025
Failed asserting that 'barbazbar' matches PCRE pattern "/foo/".
2026
2027
EOF
2028
                ,
2029
                TestFailure::exceptionToString($e)
2030
            );
2031
2032
            return;
2033
        }
2034
2035
        $this->fail();
2036
    }
2037
2038
    public function testConstraintPCRENotMatch()
2039
    {
2040
        $constraint = Assert::logicalNot(
2041
            Assert::matchesRegularExpression('/foo/')
2042
        );
2043
2044
        $this->assertTrue($constraint->evaluate('barbazbar', '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate('barbazbar', '', true) targeting PHPUnit\Framework\Constr...\LogicalNot::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertTrue() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
2045
        $this->assertFalse($constraint->evaluate('barfoobar', '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate('barfoobar', '', true) targeting PHPUnit\Framework\Constr...\LogicalNot::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertFalse() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
2046
        $this->assertEquals('does not match PCRE pattern "/foo/"', $constraint->toString());
2047
        $this->assertCount(1, $constraint);
2048
2049
        try {
2050
            $constraint->evaluate('barfoobar');
2051
        } catch (ExpectationFailedException $e) {
2052
            $this->assertEquals(
2053
                <<<EOF
2054
Failed asserting that 'barfoobar' does not match PCRE pattern "/foo/".
2055
2056
EOF
2057
                ,
2058
                TestFailure::exceptionToString($e)
2059
            );
2060
2061
            return;
2062
        }
2063
2064
        $this->fail();
2065
    }
2066
2067
    public function testConstraintPCRENotMatch2()
2068
    {
2069
        $constraint = Assert::logicalNot(
2070
            Assert::matchesRegularExpression('/foo/')
2071
        );
2072
2073
        try {
2074
            $constraint->evaluate('barfoobar', 'custom message');
2075
        } catch (ExpectationFailedException $e) {
2076
            $this->assertEquals(
2077
                <<<EOF
2078
custom message
2079
Failed asserting that 'barfoobar' does not match PCRE pattern "/foo/".
2080
2081
EOF
2082
                ,
2083
                TestFailure::exceptionToString($e)
2084
            );
2085
2086
            return;
2087
        }
2088
2089
        $this->fail();
2090
    }
2091
2092
    public function testConstraintStringMatches()
2093
    {
2094
        $constraint = Assert::matches('*%c*');
2095
        $this->assertFalse($constraint->evaluate('**', '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate('**', '', true) targeting PHPUnit\Framework\Constr...\Constraint::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertFalse() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
2096
        $this->assertTrue($constraint->evaluate('***', '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate('***', '', true) targeting PHPUnit\Framework\Constr...\Constraint::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertTrue() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
2097
        $this->assertEquals('matches PCRE pattern "/^\*.\*$/s"', $constraint->toString());
2098
        $this->assertCount(1, $constraint);
2099
    }
2100
2101
    public function testConstraintStringMatches2()
2102
    {
2103
        $constraint = Assert::matches('*%s*');
2104
        $this->assertFalse($constraint->evaluate('**', '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate('**', '', true) targeting PHPUnit\Framework\Constr...\Constraint::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertFalse() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
2105
        $this->assertTrue($constraint->evaluate('***', '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate('***', '', true) targeting PHPUnit\Framework\Constr...\Constraint::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertTrue() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
2106
        $this->assertEquals('matches PCRE pattern "/^\*[^\r\n]+\*$/s"', $constraint->toString());
2107
        $this->assertCount(1, $constraint);
2108
    }
2109
2110
    public function testConstraintStringMatches3()
2111
    {
2112
        $constraint = Assert::matches('*%i*');
2113
        $this->assertFalse($constraint->evaluate('**', '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate('**', '', true) targeting PHPUnit\Framework\Constr...\Constraint::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertFalse() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
2114
        $this->assertTrue($constraint->evaluate('*0*', '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate('*0*', '', true) targeting PHPUnit\Framework\Constr...\Constraint::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertTrue() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
2115
        $this->assertEquals('matches PCRE pattern "/^\*[+-]?\d+\*$/s"', $constraint->toString());
2116
        $this->assertCount(1, $constraint);
2117
    }
2118
2119
    public function testConstraintStringMatches4()
2120
    {
2121
        $constraint = Assert::matches('*%d*');
2122
        $this->assertFalse($constraint->evaluate('**', '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate('**', '', true) targeting PHPUnit\Framework\Constr...\Constraint::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertFalse() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
2123
        $this->assertTrue($constraint->evaluate('*0*', '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate('*0*', '', true) targeting PHPUnit\Framework\Constr...\Constraint::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertTrue() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
2124
        $this->assertEquals('matches PCRE pattern "/^\*\d+\*$/s"', $constraint->toString());
2125
        $this->assertCount(1, $constraint);
2126
    }
2127
2128
    public function testConstraintStringMatches5()
2129
    {
2130
        $constraint = Assert::matches('*%x*');
2131
        $this->assertFalse($constraint->evaluate('**', '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate('**', '', true) targeting PHPUnit\Framework\Constr...\Constraint::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertFalse() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
2132
        $this->assertTrue($constraint->evaluate('*0f0f0f*', '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate('*0f0f0f*', '', true) targeting PHPUnit\Framework\Constr...\Constraint::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertTrue() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
2133
        $this->assertEquals('matches PCRE pattern "/^\*[0-9a-fA-F]+\*$/s"', $constraint->toString());
2134
        $this->assertCount(1, $constraint);
2135
    }
2136
2137
    public function testConstraintStringMatches6()
2138
    {
2139
        $constraint = Assert::matches('*%f*');
2140
        $this->assertFalse($constraint->evaluate('**', '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate('**', '', true) targeting PHPUnit\Framework\Constr...\Constraint::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertFalse() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
2141
        $this->assertTrue($constraint->evaluate('*1.0*', '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate('*1.0*', '', true) targeting PHPUnit\Framework\Constr...\Constraint::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertTrue() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
2142
        $this->assertEquals('matches PCRE pattern "/^\*[+-]?\.?\d+\.?\d*(?:[Ee][+-]?\d+)?\*$/s"', $constraint->toString());
2143
        $this->assertCount(1, $constraint);
2144
    }
2145
2146
    public function testConstraintStringStartsWith()
2147
    {
2148
        $constraint = Assert::stringStartsWith('prefix');
2149
2150
        $this->assertFalse($constraint->evaluate('foo', '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate('foo', '', true) targeting PHPUnit\Framework\Constr...\Constraint::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertFalse() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
2151
        $this->assertTrue($constraint->evaluate('prefixfoo', '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate('prefixfoo', '', true) targeting PHPUnit\Framework\Constr...\Constraint::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertTrue() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
2152
        $this->assertEquals('starts with "prefix"', $constraint->toString());
2153
        $this->assertCount(1, $constraint);
2154
2155
        try {
2156
            $constraint->evaluate('foo');
2157
        } catch (ExpectationFailedException $e) {
2158
            $this->assertEquals(
2159
                <<<EOF
2160
Failed asserting that 'foo' starts with "prefix".
2161
2162
EOF
2163
                ,
2164
                TestFailure::exceptionToString($e)
2165
            );
2166
2167
            return;
2168
        }
2169
2170
        $this->fail();
2171
    }
2172
2173
    public function testConstraintStringStartsWith2()
2174
    {
2175
        $constraint = Assert::stringStartsWith('prefix');
2176
2177
        try {
2178
            $constraint->evaluate('foo', 'custom message');
2179
        } catch (ExpectationFailedException $e) {
2180
            $this->assertEquals(
2181
                <<<EOF
2182
custom message\nFailed asserting that 'foo' starts with "prefix".
2183
2184
EOF
2185
                ,
2186
                TestFailure::exceptionToString($e)
2187
            );
2188
2189
            return;
2190
        }
2191
2192
        $this->fail();
2193
    }
2194
2195
    public function testConstraintStringStartsNotWith()
2196
    {
2197
        $constraint = Assert::logicalNot(
2198
            Assert::stringStartsWith('prefix')
2199
        );
2200
2201
        $this->assertTrue($constraint->evaluate('foo', '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate('foo', '', true) targeting PHPUnit\Framework\Constr...\LogicalNot::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertTrue() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
2202
        $this->assertFalse($constraint->evaluate('prefixfoo', '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate('prefixfoo', '', true) targeting PHPUnit\Framework\Constr...\LogicalNot::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertFalse() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
2203
        $this->assertEquals('starts not with "prefix"', $constraint->toString());
2204
        $this->assertCount(1, $constraint);
2205
2206
        try {
2207
            $constraint->evaluate('prefixfoo');
2208
        } catch (ExpectationFailedException $e) {
2209
            $this->assertEquals(
2210
                <<<EOF
2211
Failed asserting that 'prefixfoo' starts not with "prefix".
2212
2213
EOF
2214
                ,
2215
                TestFailure::exceptionToString($e)
2216
            );
2217
2218
            return;
2219
        }
2220
2221
        $this->fail();
2222
    }
2223
2224
    public function testConstraintStringStartsNotWith2()
2225
    {
2226
        $constraint = Assert::logicalNot(
2227
            Assert::stringStartsWith('prefix')
2228
        );
2229
2230
        try {
2231
            $constraint->evaluate('prefixfoo', 'custom message');
2232
        } catch (ExpectationFailedException $e) {
2233
            $this->assertEquals(
2234
                <<<EOF
2235
custom message
2236
Failed asserting that 'prefixfoo' starts not with "prefix".
2237
2238
EOF
2239
                ,
2240
                TestFailure::exceptionToString($e)
2241
            );
2242
2243
            return;
2244
        }
2245
2246
        $this->fail();
2247
    }
2248
2249
    public function testConstraintStringContains()
2250
    {
2251
        $constraint = Assert::stringContains('foo');
2252
2253
        $this->assertFalse($constraint->evaluate('barbazbar', '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate('barbazbar', '', true) targeting PHPUnit\Framework\Constr...\Constraint::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertFalse() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
2254
        $this->assertTrue($constraint->evaluate('barfoobar', '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate('barfoobar', '', true) targeting PHPUnit\Framework\Constr...\Constraint::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertTrue() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
2255
        $this->assertEquals('contains "foo"', $constraint->toString());
2256
        $this->assertCount(1, $constraint);
2257
2258
        try {
2259
            $constraint->evaluate('barbazbar');
2260
        } catch (ExpectationFailedException $e) {
2261
            $this->assertEquals(
2262
                <<<EOF
2263
Failed asserting that 'barbazbar' contains "foo".
2264
2265
EOF
2266
                ,
2267
                TestFailure::exceptionToString($e)
2268
            );
2269
2270
            return;
2271
        }
2272
2273
        $this->fail();
2274
    }
2275
2276
    public function testConstraintStringContainsWhenIgnoreCase()
2277
    {
2278
        $constraint = Assert::stringContains('oryginał', true);
2279
2280
        $this->assertFalse($constraint->evaluate('oryginal', '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate('oryginal', '', true) targeting PHPUnit\Framework\Constr...\Constraint::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertFalse() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
2281
        $this->assertTrue($constraint->evaluate('ORYGINAŁ', '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate('ORYGINAŁ', '', true) targeting PHPUnit\Framework\Constr...\Constraint::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertTrue() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
2282
        $this->assertTrue($constraint->evaluate('oryginał', '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate('oryginał', '', true) targeting PHPUnit\Framework\Constr...\Constraint::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertTrue() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
2283
        $this->assertEquals('contains "oryginał"', $constraint->toString());
2284
        $this->assertEquals(1, \count($constraint));
2285
2286
        $this->expectException(ExpectationFailedException::class);
2287
2288
        $constraint->evaluate('oryginal');
2289
    }
2290
2291
    public function testConstraintStringContainsForUtf8StringWhenNotIgnoreCase()
2292
    {
2293
        $constraint = Assert::stringContains('oryginał', false);
2294
2295
        $this->assertFalse($constraint->evaluate('oryginal', '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate('oryginal', '', true) targeting PHPUnit\Framework\Constr...\Constraint::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertFalse() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
2296
        $this->assertFalse($constraint->evaluate('ORYGINAŁ', '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate('ORYGINAŁ', '', true) targeting PHPUnit\Framework\Constr...\Constraint::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertFalse() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
2297
        $this->assertTrue($constraint->evaluate('oryginał', '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate('oryginał', '', true) targeting PHPUnit\Framework\Constr...\Constraint::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertTrue() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
2298
        $this->assertEquals('contains "oryginał"', $constraint->toString());
2299
        $this->assertEquals(1, \count($constraint));
2300
2301
        $this->expectException(ExpectationFailedException::class);
2302
2303
        $constraint->evaluate('oryginal');
2304
    }
2305
2306
    public function testConstraintStringContains2()
2307
    {
2308
        $constraint = Assert::stringContains('foo');
2309
2310
        try {
2311
            $constraint->evaluate('barbazbar', 'custom message');
2312
        } catch (ExpectationFailedException $e) {
2313
            $this->assertEquals(
2314
                <<<EOF
2315
custom message
2316
Failed asserting that 'barbazbar' contains "foo".
2317
2318
EOF
2319
                ,
2320
                TestFailure::exceptionToString($e)
2321
            );
2322
2323
            return;
2324
        }
2325
2326
        $this->fail();
2327
    }
2328
2329
    public function testConstraintStringNotContains()
2330
    {
2331
        $constraint = Assert::logicalNot(
2332
            Assert::stringContains('foo')
2333
        );
2334
2335
        $this->assertTrue($constraint->evaluate('barbazbar', '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate('barbazbar', '', true) targeting PHPUnit\Framework\Constr...\LogicalNot::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertTrue() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
2336
        $this->assertFalse($constraint->evaluate('barfoobar', '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate('barfoobar', '', true) targeting PHPUnit\Framework\Constr...\LogicalNot::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertFalse() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
2337
        $this->assertEquals('does not contain "foo"', $constraint->toString());
2338
        $this->assertCount(1, $constraint);
2339
2340
        try {
2341
            $constraint->evaluate('barfoobar');
2342
        } catch (ExpectationFailedException $e) {
2343
            $this->assertEquals(
2344
                <<<EOF
2345
Failed asserting that 'barfoobar' does not contain "foo".
2346
2347
EOF
2348
                ,
2349
                TestFailure::exceptionToString($e)
2350
            );
2351
2352
            return;
2353
        }
2354
2355
        $this->fail();
2356
    }
2357
2358
    public function testConstraintStringNotContainsWhenIgnoreCase()
2359
    {
2360
        $constraint = Assert::logicalNot(
2361
            Assert::stringContains('oryginał')
2362
        );
2363
2364
        $this->assertTrue($constraint->evaluate('original', '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate('original', '', true) targeting PHPUnit\Framework\Constr...\LogicalNot::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertTrue() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
2365
        $this->assertFalse($constraint->evaluate('ORYGINAŁ', '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate('ORYGINAŁ', '', true) targeting PHPUnit\Framework\Constr...\LogicalNot::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertFalse() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
2366
        $this->assertFalse($constraint->evaluate('oryginał', '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate('oryginał', '', true) targeting PHPUnit\Framework\Constr...\LogicalNot::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertFalse() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
2367
        $this->assertEquals('does not contain "oryginał"', $constraint->toString());
2368
        $this->assertEquals(1, \count($constraint));
2369
2370
        $this->expectException(ExpectationFailedException::class);
2371
2372
        $constraint->evaluate('ORYGINAŁ');
2373
    }
2374
2375
    public function testConstraintStringNotContainsForUtf8StringWhenNotIgnoreCase()
2376
    {
2377
        $constraint = Assert::logicalNot(
2378
            Assert::stringContains('oryginał', false)
2379
        );
2380
2381
        $this->assertTrue($constraint->evaluate('original', '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate('original', '', true) targeting PHPUnit\Framework\Constr...\LogicalNot::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertTrue() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
2382
        $this->assertTrue($constraint->evaluate('ORYGINAŁ', '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate('ORYGINAŁ', '', true) targeting PHPUnit\Framework\Constr...\LogicalNot::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertTrue() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
2383
        $this->assertFalse($constraint->evaluate('oryginał', '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate('oryginał', '', true) targeting PHPUnit\Framework\Constr...\LogicalNot::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertFalse() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
2384
        $this->assertEquals('does not contain "oryginał"', $constraint->toString());
2385
        $this->assertEquals(1, \count($constraint));
2386
2387
        $this->expectException(ExpectationFailedException::class);
2388
2389
        $constraint->evaluate('oryginał');
2390
    }
2391
2392
    public function testConstraintStringNotContains2()
2393
    {
2394
        $constraint = Assert::logicalNot(
2395
            Assert::stringContains('foo')
2396
        );
2397
2398
        try {
2399
            $constraint->evaluate('barfoobar', 'custom message');
2400
        } catch (ExpectationFailedException $e) {
2401
            $this->assertEquals(
2402
                <<<EOF
2403
custom message
2404
Failed asserting that 'barfoobar' does not contain "foo".
2405
2406
EOF
2407
                ,
2408
                TestFailure::exceptionToString($e)
2409
            );
2410
2411
            return;
2412
        }
2413
2414
        $this->fail();
2415
    }
2416
2417
    public function testConstraintStringEndsWith()
2418
    {
2419
        $constraint = Assert::stringEndsWith('suffix');
2420
2421
        $this->assertFalse($constraint->evaluate('foo', '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate('foo', '', true) targeting PHPUnit\Framework\Constr...\Constraint::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertFalse() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
2422
        $this->assertTrue($constraint->evaluate('foosuffix', '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate('foosuffix', '', true) targeting PHPUnit\Framework\Constr...\Constraint::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertTrue() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
2423
        $this->assertEquals('ends with "suffix"', $constraint->toString());
2424
        $this->assertCount(1, $constraint);
2425
2426
        try {
2427
            $constraint->evaluate('foo');
2428
        } catch (ExpectationFailedException $e) {
2429
            $this->assertEquals(
2430
                <<<EOF
2431
Failed asserting that 'foo' ends with "suffix".
2432
2433
EOF
2434
                ,
2435
                TestFailure::exceptionToString($e)
2436
            );
2437
2438
            return;
2439
        }
2440
2441
        $this->fail();
2442
    }
2443
2444
    public function testConstraintStringEndsWith2()
2445
    {
2446
        $constraint = Assert::stringEndsWith('suffix');
2447
2448
        try {
2449
            $constraint->evaluate('foo', 'custom message');
2450
        } catch (ExpectationFailedException $e) {
2451
            $this->assertEquals(
2452
                <<<EOF
2453
custom message
2454
Failed asserting that 'foo' ends with "suffix".
2455
2456
EOF
2457
                ,
2458
                TestFailure::exceptionToString($e)
2459
            );
2460
2461
            return;
2462
        }
2463
2464
        $this->fail();
2465
    }
2466
2467
    public function testConstraintStringEndsNotWith()
2468
    {
2469
        $constraint = Assert::logicalNot(
2470
            Assert::stringEndsWith('suffix')
2471
        );
2472
2473
        $this->assertTrue($constraint->evaluate('foo', '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate('foo', '', true) targeting PHPUnit\Framework\Constr...\LogicalNot::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertTrue() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
2474
        $this->assertFalse($constraint->evaluate('foosuffix', '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate('foosuffix', '', true) targeting PHPUnit\Framework\Constr...\LogicalNot::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertFalse() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
2475
        $this->assertEquals('ends not with "suffix"', $constraint->toString());
2476
        $this->assertCount(1, $constraint);
2477
2478
        try {
2479
            $constraint->evaluate('foosuffix');
2480
        } catch (ExpectationFailedException $e) {
2481
            $this->assertEquals(
2482
                <<<EOF
2483
Failed asserting that 'foosuffix' ends not with "suffix".
2484
2485
EOF
2486
                ,
2487
                TestFailure::exceptionToString($e)
2488
            );
2489
2490
            return;
2491
        }
2492
2493
        $this->fail();
2494
    }
2495
2496
    public function testConstraintStringEndsNotWith2()
2497
    {
2498
        $constraint = Assert::logicalNot(
2499
            Assert::stringEndsWith('suffix')
2500
        );
2501
2502
        try {
2503
            $constraint->evaluate('foosuffix', 'custom message');
2504
        } catch (ExpectationFailedException $e) {
2505
            $this->assertEquals(
2506
                <<<EOF
2507
custom message
2508
Failed asserting that 'foosuffix' ends not with "suffix".
2509
2510
EOF
2511
                ,
2512
                TestFailure::exceptionToString($e)
2513
            );
2514
2515
            return;
2516
        }
2517
2518
        $this->fail();
2519
    }
2520
2521
    public function testConstraintArrayContainsCheckForObjectIdentity()
2522
    {
2523
        // Check for primitive type.
2524
        $constraint = new TraversableContains('foo', true, true);
2525
2526
        $this->assertFalse($constraint->evaluate([0], '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate(array(0), '', true) targeting PHPUnit\Framework\Constr...\Constraint::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertFalse() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
2527
        $this->assertFalse($constraint->evaluate([true], '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate(array(true), '', true) targeting PHPUnit\Framework\Constr...\Constraint::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertFalse() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
2528
2529
        // Default case.
2530
        $constraint = new TraversableContains('foo');
2531
2532
        $this->assertTrue($constraint->evaluate([0], '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate(array(0), '', true) targeting PHPUnit\Framework\Constr...\Constraint::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertTrue() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
2533
        $this->assertTrue($constraint->evaluate([true], '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate(array(true), '', true) targeting PHPUnit\Framework\Constr...\Constraint::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertTrue() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
2534
    }
2535
2536
    public function testConstraintArrayContains()
2537
    {
2538
        $constraint = new TraversableContains('foo');
2539
2540
        $this->assertFalse($constraint->evaluate(['bar'], '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate(array('bar'), '', true) targeting PHPUnit\Framework\Constr...\Constraint::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertFalse() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
2541
        $this->assertTrue($constraint->evaluate(['foo'], '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate(array('foo'), '', true) targeting PHPUnit\Framework\Constr...\Constraint::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertTrue() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
2542
        $this->assertEquals("contains 'foo'", $constraint->toString());
2543
        $this->assertCount(1, $constraint);
2544
2545
        try {
2546
            $constraint->evaluate(['bar']);
2547
        } catch (ExpectationFailedException $e) {
2548
            $this->assertEquals(
2549
                <<<EOF
2550
Failed asserting that an array contains 'foo'.
2551
2552
EOF
2553
                ,
2554
                TestFailure::exceptionToString($e)
2555
            );
2556
2557
            return;
2558
        }
2559
2560
        $this->fail();
2561
    }
2562
2563
    public function testConstraintArrayContains2()
2564
    {
2565
        $constraint = new TraversableContains('foo');
2566
2567
        try {
2568
            $constraint->evaluate(['bar'], 'custom message');
2569
        } catch (ExpectationFailedException $e) {
2570
            $this->assertEquals(
2571
                <<<EOF
2572
custom message
2573
Failed asserting that an array contains 'foo'.
2574
2575
EOF
2576
                ,
2577
                TestFailure::exceptionToString($e)
2578
            );
2579
2580
            return;
2581
        }
2582
2583
        $this->fail();
2584
    }
2585
2586
    public function testConstraintArrayNotContains()
2587
    {
2588
        $constraint = Assert::logicalNot(
2589
            new TraversableContains('foo')
2590
        );
2591
2592
        $this->assertTrue($constraint->evaluate(['bar'], '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate(array('bar'), '', true) targeting PHPUnit\Framework\Constr...\LogicalNot::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertTrue() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
2593
        $this->assertFalse($constraint->evaluate(['foo'], '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate(array('foo'), '', true) targeting PHPUnit\Framework\Constr...\LogicalNot::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertFalse() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
2594
        $this->assertEquals("does not contain 'foo'", $constraint->toString());
2595
        $this->assertCount(1, $constraint);
2596
2597
        try {
2598
            $constraint->evaluate(['foo']);
2599
        } catch (ExpectationFailedException $e) {
2600
            $this->assertEquals(
2601
                <<<EOF
2602
Failed asserting that an array does not contain 'foo'.
2603
2604
EOF
2605
                ,
2606
                TestFailure::exceptionToString($e)
2607
            );
2608
2609
            return;
2610
        }
2611
2612
        $this->fail();
2613
    }
2614
2615
    public function testConstraintArrayNotContains2()
2616
    {
2617
        $constraint = Assert::logicalNot(
2618
            new TraversableContains('foo')
2619
        );
2620
2621
        try {
2622
            $constraint->evaluate(['foo'], 'custom message');
2623
        } catch (ExpectationFailedException $e) {
2624
            $this->assertEquals(
2625
                <<<EOF
2626
custom message
2627
Failed asserting that an array does not contain 'foo'.
2628
2629
EOF
2630
                ,
2631
                TestFailure::exceptionToString($e)
2632
            );
2633
2634
            return;
2635
        }
2636
2637
        $this->fail();
2638
    }
2639
2640
    public function testConstraintSplObjectStorageContains()
2641
    {
2642
        $object     = new \stdClass;
2643
        $constraint = new TraversableContains($object);
2644
        $this->assertStringMatchesFormat('contains stdClass Object &%s ()', $constraint->toString());
2645
2646
        $storage = new \SplObjectStorage;
2647
        $this->assertFalse($constraint->evaluate($storage, '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate($storage, '', true) targeting PHPUnit\Framework\Constr...\Constraint::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertFalse() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
2648
2649
        $storage->attach($object);
2650
        $this->assertTrue($constraint->evaluate($storage, '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate($storage, '', true) targeting PHPUnit\Framework\Constr...\Constraint::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertTrue() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
2651
2652
        try {
2653
            $constraint->evaluate(new \SplObjectStorage);
2654
        } catch (ExpectationFailedException $e) {
2655
            $this->assertStringMatchesFormat(
2656
                <<<EOF
2657
Failed asserting that a traversable contains stdClass Object &%x ().
2658
2659
EOF
2660
                ,
2661
                TestFailure::exceptionToString($e)
2662
            );
2663
2664
            return;
2665
        }
2666
2667
        $this->fail();
2668
    }
2669
2670
    public function testConstraintSplObjectStorageContains2()
2671
    {
2672
        $object     = new \stdClass;
2673
        $constraint = new TraversableContains($object);
2674
2675
        try {
2676
            $constraint->evaluate(new \SplObjectStorage, 'custom message');
2677
        } catch (ExpectationFailedException $e) {
2678
            $this->assertStringMatchesFormat(
2679
                <<<EOF
2680
custom message
2681
Failed asserting that a traversable contains stdClass Object &%x ().
2682
2683
EOF
2684
                ,
2685
                TestFailure::exceptionToString($e)
2686
            );
2687
2688
            return;
2689
        }
2690
2691
        $this->fail();
2692
    }
2693
2694
    public function testAttributeEqualTo()
2695
    {
2696
        $object     = new \ClassWithNonPublicAttributes;
2697
        $constraint = Assert::attributeEqualTo('foo', 1);
2698
2699
        $this->assertTrue($constraint->evaluate($object, '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate($object, '', true) targeting PHPUnit\Framework\Constraint\Attribute::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertTrue() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
2700
        $this->assertEquals('attribute "foo" is equal to 1', $constraint->toString());
2701
        $this->assertCount(1, $constraint);
2702
2703
        $constraint = Assert::attributeEqualTo('foo', 2);
2704
2705
        $this->assertFalse($constraint->evaluate($object, '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate($object, '', true) targeting PHPUnit\Framework\Constraint\Attribute::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertFalse() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
2706
2707
        try {
2708
            $constraint->evaluate($object);
2709
        } catch (ExpectationFailedException $e) {
2710
            $this->assertEquals(
2711
                <<<EOF
2712
Failed asserting that attribute "foo" is equal to 2.
2713
2714
EOF
2715
                ,
2716
                TestFailure::exceptionToString($e)
2717
            );
2718
2719
            return;
2720
        }
2721
2722
        $this->fail();
2723
    }
2724
2725
    public function testAttributeEqualTo2()
2726
    {
2727
        $object     = new \ClassWithNonPublicAttributes;
2728
        $constraint = Assert::attributeEqualTo('foo', 2);
2729
2730
        try {
2731
            $constraint->evaluate($object, 'custom message');
2732
        } catch (ExpectationFailedException $e) {
2733
            $this->assertEquals(
2734
                <<<EOF
2735
custom message\nFailed asserting that attribute "foo" is equal to 2.
2736
2737
EOF
2738
                ,
2739
                TestFailure::exceptionToString($e)
2740
            );
2741
2742
            return;
2743
        }
2744
2745
        $this->fail();
2746
    }
2747
2748
    public function testAttributeNotEqualTo()
2749
    {
2750
        $object     = new \ClassWithNonPublicAttributes;
2751
        $constraint = Assert::logicalNot(
2752
            Assert::attributeEqualTo('foo', 2)
2753
        );
2754
2755
        $this->assertTrue($constraint->evaluate($object, '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate($object, '', true) targeting PHPUnit\Framework\Constr...\LogicalNot::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertTrue() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
2756
        $this->assertEquals('attribute "foo" is not equal to 2', $constraint->toString());
2757
        $this->assertCount(1, $constraint);
2758
2759
        $constraint = Assert::logicalNot(
2760
            Assert::attributeEqualTo('foo', 1)
2761
        );
2762
2763
        $this->assertFalse($constraint->evaluate($object, '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate($object, '', true) targeting PHPUnit\Framework\Constr...\LogicalNot::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertFalse() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
2764
2765
        try {
2766
            $constraint->evaluate($object);
2767
        } catch (ExpectationFailedException $e) {
2768
            $this->assertEquals(
2769
                <<<EOF
2770
Failed asserting that attribute "foo" is not equal to 1.
2771
2772
EOF
2773
                ,
2774
                TestFailure::exceptionToString($e)
2775
            );
2776
2777
            return;
2778
        }
2779
2780
        $this->fail();
2781
    }
2782
2783
    public function testAttributeNotEqualTo2()
2784
    {
2785
        $object     = new \ClassWithNonPublicAttributes;
2786
        $constraint = Assert::logicalNot(
2787
            Assert::attributeEqualTo('foo', 1)
2788
        );
2789
2790
        try {
2791
            $constraint->evaluate($object, 'custom message');
2792
        } catch (ExpectationFailedException $e) {
2793
            $this->assertEquals(
2794
                <<<EOF
2795
custom message\nFailed asserting that attribute "foo" is not equal to 1.
2796
2797
EOF
2798
                ,
2799
                TestFailure::exceptionToString($e)
2800
            );
2801
2802
            return;
2803
        }
2804
2805
        $this->fail();
2806
    }
2807
2808
    public function testConstraintIsEmpty()
2809
    {
2810
        $constraint = new IsEmpty;
2811
2812
        $this->assertFalse($constraint->evaluate(['foo'], '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate(array('foo'), '', true) targeting PHPUnit\Framework\Constr...\Constraint::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertFalse() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
2813
        $this->assertTrue($constraint->evaluate([], '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate(array(), '', true) targeting PHPUnit\Framework\Constr...\Constraint::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertTrue() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
2814
        $this->assertFalse($constraint->evaluate(new \ArrayObject(['foo']), '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate(ne...rray('foo')), '', true) targeting PHPUnit\Framework\Constr...\Constraint::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertFalse() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
2815
        $this->assertTrue($constraint->evaluate(new \ArrayObject([]), '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate(ne...ect(array()), '', true) targeting PHPUnit\Framework\Constr...\Constraint::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertTrue() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
2816
        $this->assertEquals('is empty', $constraint->toString());
2817
        $this->assertCount(1, $constraint);
2818
2819
        try {
2820
            $constraint->evaluate(['foo']);
2821
        } catch (ExpectationFailedException $e) {
2822
            $this->assertEquals(
2823
                <<<EOF
2824
Failed asserting that an array is empty.
2825
2826
EOF
2827
                ,
2828
                TestFailure::exceptionToString($e)
2829
            );
2830
2831
            return;
2832
        }
2833
2834
        $this->fail();
2835
    }
2836
2837
    public function testConstraintIsEmpty2()
2838
    {
2839
        $constraint = new IsEmpty;
2840
2841
        try {
2842
            $constraint->evaluate(['foo'], 'custom message');
2843
        } catch (ExpectationFailedException $e) {
2844
            $this->assertEquals(
2845
                <<<EOF
2846
custom message\nFailed asserting that an array is empty.
2847
2848
EOF
2849
                ,
2850
                TestFailure::exceptionToString($e)
2851
            );
2852
2853
            return;
2854
        }
2855
2856
        $this->fail();
2857
    }
2858
2859
    public function testConstraintCountWithAnArray()
2860
    {
2861
        $constraint = new Count(5);
2862
2863
        $this->assertTrue($constraint->evaluate([1, 2, 3, 4, 5], '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate(ar... 2, 3, 4, 5), '', true) targeting PHPUnit\Framework\Constr...\Constraint::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertTrue() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
2864
        $this->assertFalse($constraint->evaluate([1, 2, 3, 4], '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate(ar...(1, 2, 3, 4), '', true) targeting PHPUnit\Framework\Constr...\Constraint::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertFalse() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
2865
    }
2866
2867
    public function testConstraintCountWithAnIteratorWhichDoesNotImplementCountable()
2868
    {
2869
        $constraint = new Count(5);
2870
2871
        $this->assertTrue($constraint->evaluate(new \TestIterator([1, 2, 3, 4, 5]), '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate(ne...2, 3, 4, 5)), '', true) targeting PHPUnit\Framework\Constr...\Constraint::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertTrue() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
2872
        $this->assertFalse($constraint->evaluate(new \TestIterator([1, 2, 3, 4]), '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate(ne...1, 2, 3, 4)), '', true) targeting PHPUnit\Framework\Constr...\Constraint::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertFalse() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
2873
    }
2874
2875
    public function testConstraintCountWithAnObjectImplementingCountable()
2876
    {
2877
        $constraint = new Count(5);
2878
2879
        $this->assertTrue($constraint->evaluate(new \ArrayObject([1, 2, 3, 4, 5]), '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate(ne...2, 3, 4, 5)), '', true) targeting PHPUnit\Framework\Constr...\Constraint::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertTrue() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
2880
        $this->assertFalse($constraint->evaluate(new \ArrayObject([1, 2, 3, 4]), '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate(ne...1, 2, 3, 4)), '', true) targeting PHPUnit\Framework\Constr...\Constraint::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertFalse() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
2881
    }
2882
2883
    public function testConstraintCountFailing()
2884
    {
2885
        $constraint = new Count(5);
2886
2887
        try {
2888
            $constraint->evaluate([1, 2]);
2889
        } catch (ExpectationFailedException $e) {
2890
            $this->assertEquals(
2891
                <<<EOF
2892
Failed asserting that actual size 2 matches expected size 5.
2893
2894
EOF
2895
                ,
2896
                TestFailure::exceptionToString($e)
2897
            );
2898
2899
            return;
2900
        }
2901
2902
        $this->fail();
2903
    }
2904
2905
    public function testConstraintNotCountFailing()
2906
    {
2907
        $constraint = Assert::logicalNot(
2908
            new Count(2)
2909
        );
2910
2911
        try {
2912
            $constraint->evaluate([1, 2]);
2913
        } catch (ExpectationFailedException $e) {
2914
            $this->assertEquals(
2915
                <<<EOF
2916
Failed asserting that actual size 2 does not match expected size 2.
2917
2918
EOF
2919
                ,
2920
                TestFailure::exceptionToString($e)
2921
            );
2922
2923
            return;
2924
        }
2925
2926
        $this->fail();
2927
    }
2928
2929
    public function testConstraintSameSizeWithAnArray()
2930
    {
2931
        $constraint = new SameSize([1, 2, 3, 4, 5]);
0 ignored issues
show
Documentation introduced by
array(1, 2, 3, 4, 5) is of type array<integer,integer,{"...nteger","4":"integer"}>, but the function expects a integer.

It seems like the type of the argument is not accepted by the function/method which you are calling.

In some cases, in particular if PHP’s automatic type-juggling kicks in this might be fine. In other cases, however this might be a bug.

We suggest to add an explicit type cast like in the following example:

function acceptsInteger($int) { }

$x = '123'; // string "123"

// Instead of
acceptsInteger($x);

// we recommend to use
acceptsInteger((integer) $x);
Loading history...
2932
2933
        $this->assertTrue($constraint->evaluate([6, 7, 8, 9, 10], '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate(ar...7, 8, 9, 10), '', true) targeting PHPUnit\Framework\Constr...\Constraint::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertTrue() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
2934
        $this->assertFalse($constraint->evaluate([1, 2, 3, 4], '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate(ar...(1, 2, 3, 4), '', true) targeting PHPUnit\Framework\Constr...\Constraint::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertFalse() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
2935
    }
2936
2937
    public function testConstraintSameSizeWithAnIteratorWhichDoesNotImplementCountable()
2938
    {
2939
        $constraint = new SameSize(new \TestIterator([1, 2, 3, 4, 5]));
0 ignored issues
show
Documentation introduced by
new \TestIterator(array(1, 2, 3, 4, 5)) is of type object<TestIterator>, but the function expects a integer.

It seems like the type of the argument is not accepted by the function/method which you are calling.

In some cases, in particular if PHP’s automatic type-juggling kicks in this might be fine. In other cases, however this might be a bug.

We suggest to add an explicit type cast like in the following example:

function acceptsInteger($int) { }

$x = '123'; // string "123"

// Instead of
acceptsInteger($x);

// we recommend to use
acceptsInteger((integer) $x);
Loading history...
2940
2941
        $this->assertTrue($constraint->evaluate(new \TestIterator([6, 7, 8, 9, 10]), '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate(ne..., 8, 9, 10)), '', true) targeting PHPUnit\Framework\Constr...\Constraint::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertTrue() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
2942
        $this->assertFalse($constraint->evaluate(new \TestIterator([1, 2, 3, 4]), '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate(ne...1, 2, 3, 4)), '', true) targeting PHPUnit\Framework\Constr...\Constraint::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertFalse() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
2943
    }
2944
2945
    public function testConstraintSameSizeWithAnObjectImplementingCountable()
2946
    {
2947
        $constraint = new SameSize(new \ArrayObject([1, 2, 3, 4, 5]));
0 ignored issues
show
Documentation introduced by
new \ArrayObject(array(1, 2, 3, 4, 5)) is of type object<ArrayObject>, but the function expects a integer.

It seems like the type of the argument is not accepted by the function/method which you are calling.

In some cases, in particular if PHP’s automatic type-juggling kicks in this might be fine. In other cases, however this might be a bug.

We suggest to add an explicit type cast like in the following example:

function acceptsInteger($int) { }

$x = '123'; // string "123"

// Instead of
acceptsInteger($x);

// we recommend to use
acceptsInteger((integer) $x);
Loading history...
2948
2949
        $this->assertTrue($constraint->evaluate(new \ArrayObject([6, 7, 8, 9, 10]), '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate(ne..., 8, 9, 10)), '', true) targeting PHPUnit\Framework\Constr...\Constraint::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertTrue() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
2950
        $this->assertFalse($constraint->evaluate(new \ArrayObject([1, 2, 3, 4]), '', true));
0 ignored issues
show
Bug introduced by
It seems like $constraint->evaluate(ne...1, 2, 3, 4)), '', true) targeting PHPUnit\Framework\Constr...\Constraint::evaluate() can also be of type null; however, PHPUnit\Framework\Assert::assertFalse() does only seem to accept boolean, maybe add an additional type check?

This check looks at variables that are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
2951
    }
2952
2953
    public function testConstraintSameSizeFailing()
2954
    {
2955
        $constraint = new SameSize([1, 2, 3, 4, 5]);
0 ignored issues
show
Documentation introduced by
array(1, 2, 3, 4, 5) is of type array<integer,integer,{"...nteger","4":"integer"}>, but the function expects a integer.

It seems like the type of the argument is not accepted by the function/method which you are calling.

In some cases, in particular if PHP’s automatic type-juggling kicks in this might be fine. In other cases, however this might be a bug.

We suggest to add an explicit type cast like in the following example:

function acceptsInteger($int) { }

$x = '123'; // string "123"

// Instead of
acceptsInteger($x);

// we recommend to use
acceptsInteger((integer) $x);
Loading history...
2956
2957
        try {
2958
            $constraint->evaluate([1, 2]);
2959
        } catch (ExpectationFailedException $e) {
2960
            $this->assertEquals(
2961
                <<<EOF
2962
Failed asserting that actual size 2 matches expected size 5.
2963
2964
EOF
2965
                ,
2966
                TestFailure::exceptionToString($e)
2967
            );
2968
2969
            return;
2970
        }
2971
2972
        $this->fail();
2973
    }
2974
2975
    public function testConstraintNotSameSizeFailing()
2976
    {
2977
        $constraint = Assert::logicalNot(
2978
            new SameSize([1, 2])
0 ignored issues
show
Documentation introduced by
array(1, 2) is of type array<integer,integer,{"...nteger","1":"integer"}>, but the function expects a integer.

It seems like the type of the argument is not accepted by the function/method which you are calling.

In some cases, in particular if PHP’s automatic type-juggling kicks in this might be fine. In other cases, however this might be a bug.

We suggest to add an explicit type cast like in the following example:

function acceptsInteger($int) { }

$x = '123'; // string "123"

// Instead of
acceptsInteger($x);

// we recommend to use
acceptsInteger((integer) $x);
Loading history...
2979
        );
2980
2981
        try {
2982
            $constraint->evaluate([3, 4]);
2983
        } catch (ExpectationFailedException $e) {
2984
            $this->assertEquals(
2985
                <<<EOF
2986
Failed asserting that actual size 2 does not match expected size 2.
2987
2988
EOF
2989
                ,
2990
                TestFailure::exceptionToString($e)
2991
            );
2992
2993
            return;
2994
        }
2995
2996
        $this->fail();
2997
    }
2998
2999
    public function testConstraintException()
3000
    {
3001
        $constraint = new Constraint\Exception('FoobarException');
3002
        $exception  = new \DummyException('Test');
3003
        $stackTrace = Filter::getFilteredStacktrace($exception);
0 ignored issues
show
Documentation introduced by
$exception is of type object<DummyException>, but the function expects a object<PHPUnit\Framework\Exception>.

It seems like the type of the argument is not accepted by the function/method which you are calling.

In some cases, in particular if PHP’s automatic type-juggling kicks in this might be fine. In other cases, however this might be a bug.

We suggest to add an explicit type cast like in the following example:

function acceptsInteger($int) { }

$x = '123'; // string "123"

// Instead of
acceptsInteger($x);

// we recommend to use
acceptsInteger((integer) $x);
Loading history...
3004
3005
        try {
3006
            $constraint->evaluate($exception);
3007
        } catch (ExpectationFailedException $e) {
3008
            $this->assertEquals(
3009
                <<<EOF
3010
Failed asserting that exception of type "DummyException" matches expected exception "FoobarException". Message was: "Test" at
3011
$stackTrace.
3012
3013
EOF
3014
                ,
3015
                TestFailure::exceptionToString($e)
3016
            );
3017
3018
            return;
3019
        }
3020
3021
        $this->fail();
3022
    }
3023
3024
    /**
3025
     * Removes spaces in front of newlines
3026
     *
3027
     * @param string $string
3028
     *
3029
     * @return string
3030
     */
3031
    private function trimnl($string)
3032
    {
3033
        return \preg_replace('/[ ]*\n/', "\n", $string);
3034
    }
3035
}
3036