File: ConstraintTest.php

package info (click to toggle)
phpunit 9.5.2-1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 24,872 kB
  • sloc: php: 47,103; xml: 1,386; makefile: 37; sh: 8
file content (223 lines) | stat: -rw-r--r-- 7,567 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
<?php declare(strict_types=1);
/*
 * This file is part of PHPUnit.
 *
 * (c) Sebastian Bergmann <sebastian@phpunit.de>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */
namespace PHPUnit\Framework\Constraint;

use PHPUnit\Framework\ExpectationFailedException;
use SebastianBergmann\Comparator\ComparisonFailure;
use SebastianBergmann\Exporter\Exporter;
use stdClass;

/**
 * @small
 */
final class ConstraintTest extends ConstraintTestCase
{
    public static function getDummyConstraintInstance(): Constraint
    {
        return new class extends Constraint {
            final public function toString(): string
            {
                return 'is ok';
            }

            final protected function matches($other): bool
            {
                return parent::matches($other);
            }

            final protected function exporter(): Exporter
            {
                return parent::exporter();
            }

            final protected function reduce(): Constraint
            {
                return parent::reduce();
            }

            final protected function fail($other, $description, ComparisonFailure $comparisonFailure = null): void
            {
                parent::fail($other, $description, $comparisonFailure);
            }

            final protected function additionalFailureDescription($other): string
            {
                return parent::additionalFailureDescription($other);
            }

            final protected function failureDescription($other): string
            {
                return parent::failureDescription($other);
            }

            final protected function toStringInContext(Operator $operator, $role): string
            {
                return parent::toStringInContext($operator, $role);
            }

            final protected function failureDescriptionInContext(Operator $operator, $role, $other): string
            {
                return parent::failureDescriptionInContext($operator, $role, $other);
            }

            final public function exposedMatches($other): bool
            {
                return $this->matches($other);
            }

            final public function exposedReduce(): Constraint
            {
                return $this->reduce();
            }

            final public function exposedExporter(): Exporter
            {
                return $this->exporter();
            }

            final public function exposedFail($other, $description, ComparisonFailure $comparisonFailure = null): void
            {
                $this->fail($other, $description, $comparisonFailure);
            }

            final public function exposedAdditionalFailureDescription($other): string
            {
                return $this->additionalFailureDescription($other);
            }

            final public function exposedFailureDescription($other): string
            {
                return $this->failureDescription($other);
            }

            final public function exposedToStringInContext(Operator $operator, $role): string
            {
                return $this->toStringInContext($operator, $role);
            }

            final public function exposedFailureDescriptionInContext(Operator $operator, $role, $other): string
            {
                return $this->failureDescriptionInContext($operator, $role, $other);
            }
        };
    }

    public function testEvaluateReturnsFalse(): void
    {
        $constraint = $this->getDummyConstraintInstance();

        $this->assertFalse($constraint->evaluate('whatever', '', true));
        $this->assertFalse($constraint->evaluate(null, '', true));
        $this->assertFalse($constraint->evaluate(new stdClass, '', true));
    }

    public function testEvaluateFailsWithExpectationFailedException(): void
    {
        $constraint = $this->getDummyConstraintInstance();

        $this->expectException(ExpectationFailedException::class);
        $this->expectExceptionMessage("Failed asserting that 'whatever' is ok");

        $constraint->evaluate('whatever', '');
    }

    public function testEvaluateFailsWithExpectationFailedExceptionAndCustomMessage(): void
    {
        $constraint = $this->getDummyConstraintInstance();

        $this->expectException(ExpectationFailedException::class);
        $this->expectExceptionMessage("Failed asserting that 'whatever' is fine");

        $constraint->evaluate('whatever', "Failed asserting that 'whatever' is fine");
    }

    public function testCountIsOne(): void
    {
        $constraint = $this->getDummyConstraintInstance();

        $this->assertCount(1, $constraint);
    }

    public function testExporterReturnsMemoizedExporter(): void
    {
        $constraint = $this->getDummyConstraintInstance();

        $exporter = $constraint->exposedExporter();
        $this->assertInstanceOf(Exporter::class, $exporter);
        $this->assertSame($exporter, $constraint->exposedExporter());
    }

    public function testMatchesReturnsFalse(): void
    {
        $constraint = $this->getDummyConstraintInstance();

        $this->assertFalse($constraint->exposedMatches('whatever'));
        $this->assertFalse($constraint->exposedMatches(null));
        $this->assertFalse($constraint->exposedMatches(true));
        $this->assertFalse($constraint->exposedMatches(new StdClass));
    }

    public function testFailThrowsExpectationFailureExceptionWithDefaultMessage(): void
    {
        $constraint = $this->getDummyConstraintInstance();

        $this->expectException(ExpectationFailedException::class);
        $this->expectExceptionMessage("Failed asserting that 'whatever' is ok");

        $constraint->exposedFail('whatever', '');
    }

    public function testFailThrowsExpectationFailureExceptionWithCustomMessage(): void
    {
        $constraint = $this->getDummyConstraintInstance();

        $this->expectException(ExpectationFailedException::class);
        $this->expectExceptionMessage("Custom message.\nFailed asserting that 'whatever' is ok");

        $constraint->exposedFail('whatever', 'Custom message.');
    }

    public function testAdditionalFailureDescriptionReturnsEmptyString(): void
    {
        $constraint = $this->getDummyConstraintInstance();

        $this->assertSame('', $constraint->exposedAdditionalFailureDescription('whatever'));
    }

    public function testFailureDescriptionReturnsString(): void
    {
        $constraint = $this->getDummyConstraintInstance();

        $this->assertSame("'whatever' is ok", $constraint->exposedFailureDescription('whatever'));
    }

    public function testToStringInContextReturnsEmptyString(): void
    {
        $constraint = $this->getDummyConstraintInstance();
        $operator   = $this->getMockBuilder(Operator::class)->getMockForAbstractClass();

        $this->assertSame('', $constraint->exposedToStringInContext($operator, 0));
    }

    public function testFailureDescriptionInContextReturnsEmptyString(): void
    {
        $constraint = $this->getDummyConstraintInstance();
        $operator   = $this->getMockBuilder(Operator::class)->getMockForAbstractClass();

        $this->assertSame('', $constraint->exposedFailureDescriptionInContext($operator, 0, 'whatever'));
    }

    public function testReduceReturnsThis(): void
    {
        $constraint = $this->getDummyConstraintInstance();

        $this->assertSame($constraint, $constraint->exposedReduce());
    }
}