Skip to content

Commit d5242a5

Browse files
Narrow type on assertCount and assertNotCount
1 parent 70ecacc commit d5242a5

2 files changed

Lines changed: 35 additions & 0 deletions

File tree

‎src/Type/PHPUnit/Assert/AssertTypeSpecifyingExtensionHelper.php‎

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,20 @@ private static function getExpressionResolvers(): array
136136
{
137137
if (self::$resolvers === null) {
138138
self::$resolvers = [
139+
'Count' => staticfunction (Scope$scope, Arg$expected, Arg$actual): Identical {
140+
returnnewIdentical(
141+
$expected->value,
142+
newFuncCall(newName('count'), [$actual])
143+
);
144+
},
145+
'NotCount' => staticfunction (Scope$scope, Arg$expected, Arg$actual): BooleanNot {
146+
returnnewBooleanNot(
147+
newIdentical(
148+
$expected->value,
149+
newFuncCall(newName('count'), [$actual])
150+
)
151+
);
152+
},
139153
'InstanceOf' => staticfunction (Scope$scope, Arg$class, Arg$object): Instanceof_ {
140154
returnnewInstanceof_(
141155
$object->value,

‎tests/Type/PHPUnit/data/assert-function.php‎

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
usefunctionPHPUnit\Framework\assertContains;
88
usefunctionPHPUnit\Framework\assertContainsEquals;
99
usefunctionPHPUnit\Framework\assertContainsOnlyInstancesOf;
10+
usefunctionPHPUnit\Framework\assertCount;
11+
usefunctionPHPUnit\Framework\assertNotCount;
1012
usefunctionPHPUnit\Framework\assertEmpty;
1113
usefunctionPHPUnit\Framework\assertInstanceOf;
1214
usefunctionPHPUnit\Framework\assertObjectHasAttribute;
@@ -90,4 +92,23 @@ public function containsOnlyInstancesOf(array $a, \Traversable $b): void
9092
assertType('Traversable', $b);
9193
}
9294

95+
publicfunctioncount(array$a, \Countable$b): void
96+
{
97+
assertCount(3, $a);
98+
assertType('non-empty-array', $a);
99+
100+
assertCount(7, $b);
101+
assertType('Countable', $b);
102+
}
103+
104+
publicfunctionnotCount(array$a, array$b): void
105+
{
106+
assertNotCount(0, $a);
107+
assertType('non-empty-array', $a);
108+
109+
// still might be empty
110+
assertNotCount(1, $b);
111+
assertType('array', $b);
112+
}
113+
93114
}

0 commit comments

Comments
 (0)