diff --git a/tests/PHPStan/Type/FileTypeMapperTest.php b/tests/PHPStan/Type/FileTypeMapperTest.php index d0f5efc7b5..d613047140 100644 --- a/tests/PHPStan/Type/FileTypeMapperTest.php +++ b/tests/PHPStan/Type/FileTypeMapperTest.php @@ -32,11 +32,13 @@ public function testGetResolvedPhpDoc(): void $this->assertCount(0, $resolvedA->getVarTags()); $this->assertCount(0, $resolvedA->getParamTags()); $this->assertCount(2, $resolvedA->getPropertyTags()); + $this->assertArrayHasKey('numericBazBazProperty', $resolvedA->getPropertyTags()); $this->assertNull($resolvedA->getReturnTag()); $this->assertNotNull($resolvedA->getPropertyTags()['numericBazBazProperty']->getReadableType()); $this->assertNotNull($resolvedA->getPropertyTags()['numericBazBazProperty']->getWritableType()); $this->assertSame('float|int', $resolvedA->getPropertyTags()['numericBazBazProperty']->getReadableType()->describe(VerbosityLevel::precise())); $this->assertSame('float|int', $resolvedA->getPropertyTags()['numericBazBazProperty']->getWritableType()->describe(VerbosityLevel::precise())); + $this->assertArrayHasKey('singleLetterObjectName', $resolvedA->getPropertyTags()); $this->assertNotNull($resolvedA->getPropertyTags()['singleLetterObjectName']->getReadableType()); $this->assertNotNull($resolvedA->getPropertyTags()['singleLetterObjectName']->getWritableType()); $this->assertSame('TestAnnotations\\X', $resolvedA->getPropertyTags()['singleLetterObjectName']->getReadableType()->describe(VerbosityLevel::precise())); @@ -44,47 +46,57 @@ public function testGetResolvedPhpDoc(): void $this->assertCount(6, $resolvedA->getMethodTags()); $this->assertArrayNotHasKey('complicatedParameters', $resolvedA->getMethodTags()); // ambiguous parameter types + $this->assertArrayHasKey('simpleMethod', $resolvedA->getMethodTags()); $simpleMethod = $resolvedA->getMethodTags()['simpleMethod']; $this->assertSame('void', $simpleMethod->getReturnType()->describe(VerbosityLevel::precise())); $this->assertFalse($simpleMethod->isStatic()); $this->assertCount(0, $simpleMethod->getParameters()); + $this->assertArrayHasKey('returningMethod', $resolvedA->getMethodTags()); $returningMethod = $resolvedA->getMethodTags()['returningMethod']; $this->assertSame('string', $returningMethod->getReturnType()->describe(VerbosityLevel::precise())); $this->assertFalse($returningMethod->isStatic()); $this->assertCount(0, $returningMethod->getParameters()); + $this->assertArrayHasKey('returningNullableScalar', $resolvedA->getMethodTags()); $returningNullableScalar = $resolvedA->getMethodTags()['returningNullableScalar']; $this->assertSame('float|null', $returningNullableScalar->getReturnType()->describe(VerbosityLevel::precise())); $this->assertFalse($returningNullableScalar->isStatic()); $this->assertCount(0, $returningNullableScalar->getParameters()); + $this->assertArrayHasKey('returningNullableObject', $resolvedA->getMethodTags()); $returningNullableObject = $resolvedA->getMethodTags()['returningNullableObject']; $this->assertSame('stdClass|null', $returningNullableObject->getReturnType()->describe(VerbosityLevel::precise())); $this->assertFalse($returningNullableObject->isStatic()); $this->assertCount(0, $returningNullableObject->getParameters()); + $this->assertArrayHasKey('rotate', $resolvedA->getMethodTags()); $rotate = $resolvedA->getMethodTags()['rotate']; $this->assertSame('TestAnnotations\\Image', $rotate->getReturnType()->describe(VerbosityLevel::precise())); $this->assertFalse($rotate->isStatic()); $this->assertCount(2, $rotate->getParameters()); + $this->assertArrayHasKey('angle', $rotate->getParameters()); $this->assertSame('float', $rotate->getParameters()['angle']->getType()->describe(VerbosityLevel::precise())); $this->assertTrue($rotate->getParameters()['angle']->passedByReference()->no()); $this->assertFalse($rotate->getParameters()['angle']->isOptional()); $this->assertFalse($rotate->getParameters()['angle']->isVariadic()); + $this->assertArrayHasKey('backgroundColor', $rotate->getParameters()); $this->assertSame('mixed', $rotate->getParameters()['backgroundColor']->getType()->describe(VerbosityLevel::precise())); $this->assertTrue($rotate->getParameters()['backgroundColor']->passedByReference()->no()); $this->assertFalse($rotate->getParameters()['backgroundColor']->isOptional()); $this->assertFalse($rotate->getParameters()['backgroundColor']->isVariadic()); + $this->assertArrayHasKey('paramMultipleTypesWithExtraSpaces', $resolvedA->getMethodTags()); $paramMultipleTypesWithExtraSpaces = $resolvedA->getMethodTags()['paramMultipleTypesWithExtraSpaces']; $this->assertSame('float|int', $paramMultipleTypesWithExtraSpaces->getReturnType()->describe(VerbosityLevel::precise())); $this->assertFalse($paramMultipleTypesWithExtraSpaces->isStatic()); $this->assertCount(2, $paramMultipleTypesWithExtraSpaces->getParameters()); + $this->assertArrayHasKey('string', $paramMultipleTypesWithExtraSpaces->getParameters()); $this->assertSame('string|null', $paramMultipleTypesWithExtraSpaces->getParameters()['string']->getType()->describe(VerbosityLevel::precise())); $this->assertTrue($paramMultipleTypesWithExtraSpaces->getParameters()['string']->passedByReference()->no()); $this->assertFalse($paramMultipleTypesWithExtraSpaces->getParameters()['string']->isOptional()); $this->assertFalse($paramMultipleTypesWithExtraSpaces->getParameters()['string']->isVariadic()); + $this->assertArrayHasKey('object', $paramMultipleTypesWithExtraSpaces->getParameters()); $this->assertSame('TestAnnotations\\stdClass|null', $paramMultipleTypesWithExtraSpaces->getParameters()['object']->getType()->describe(VerbosityLevel::precise())); $this->assertTrue($paramMultipleTypesWithExtraSpaces->getParameters()['object']->passedByReference()->no()); $this->assertFalse($paramMultipleTypesWithExtraSpaces->getParameters()['object']->isOptional()); @@ -110,6 +122,7 @@ public function testFileWithDependentPhpDocs(): void ); $this->assertCount(1, $resolved->getParamTags()); + $this->assertArrayHasKey('pages', $resolved->getParamTags()); $this->assertSame( '(DependentPhpDocs\Foo&iterable)|(iterable&Iterator)', $resolved->getParamTags()['pages']->getType()->describe(VerbosityLevel::precise()), @@ -191,7 +204,9 @@ public function testFilesWithIdenticalPhpDocsUsingDifferentAliases(): void $doc1 = $fileTypeMapper->getResolvedPhpDoc(__DIR__ . '/data/alias-collision1.php', null, null, null, '/** @var Foo $x */'); $doc2 = $fileTypeMapper->getResolvedPhpDoc(__DIR__ . '/data/alias-collision2.php', null, null, null, '/** @var Foo $x */'); + $this->assertArrayHasKey('x', $doc1->getVarTags()); $this->assertSame('AliasCollisionNamespace1\Foo', $doc1->getVarTags()['x']->getType()->describe(VerbosityLevel::precise())); + $this->assertArrayHasKey('x', $doc2->getVarTags()); $this->assertSame('AliasCollisionNamespace2\Foo', $doc2->getVarTags()['x']->getType()->describe(VerbosityLevel::precise())); }