From 0a9b8ea383f488d4b22076ce57464b92cba16434 Mon Sep 17 00:00:00 2001 From: Mike van Riel Date: Fri, 27 Dec 2019 19:58:19 +0100 Subject: [PATCH] Add extra tests to check for multibyte behaviour --- tests/unit/DocBlock/Tags/ReturnTest.php | 57 ++++++++++++++++++++++++- 1 file changed, 56 insertions(+), 1 deletion(-) diff --git a/tests/unit/DocBlock/Tags/ReturnTest.php b/tests/unit/DocBlock/Tags/ReturnTest.php index 18a0dc5..4fa2304 100644 --- a/tests/unit/DocBlock/Tags/ReturnTest.php +++ b/tests/unit/DocBlock/Tags/ReturnTest.php @@ -167,6 +167,34 @@ class ReturnTest extends TestCase * @uses \phpDocumentor\Reflection\Types\Context */ public function testFactoryMethodWithGenericWithSpace() + { + $this->expectException(\InvalidArgumentException::class); + $this->expectExceptionMessage('"\array" is not a valid Fqsen.'); + + $descriptionFactory = m::mock(DescriptionFactory::class); + $resolver = new TypeResolver(); + $context = new Context(''); + + $description = new Description('My Description'); + $descriptionFactory->shouldReceive('create') + ->with('My Description', $context) + ->andReturn($description); + + Return_::create('array My Description', $resolver, $descriptionFactory, $context); + } + + /** + * @see self::testFactoryMethodWithGenericWithSpace() + * + * @covers ::create + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Return_:: + * @uses \phpDocumentor\Reflection\DocBlock\DescriptionFactory + * @uses \phpDocumentor\Reflection\TypeResolver + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @uses \phpDocumentor\Reflection\Types\String_ + * @uses \phpDocumentor\Reflection\Types\Context + */ + public function testFactoryMethodWithGenericWithSpaceAndAddedEmojisToVerifyMultiByteBehaviour() { $this->expectException(\InvalidArgumentException::class); $this->expectExceptionMessage('"\array😁" is not a valid Fqsen.'); @@ -180,7 +208,34 @@ class ReturnTest extends TestCase ->with('My Description', $context) ->andReturn($description); - Return_::create('array😁 My Description', $resolver, $descriptionFactory, $context); + Return_::create('array😁 My Description', $resolver, $descriptionFactory, $context); + } + + /** + * @covers ::create + * @uses \phpDocumentor\Reflection\DocBlock\Tags\Return_:: + * @uses \phpDocumentor\Reflection\DocBlock\DescriptionFactory + * @uses \phpDocumentor\Reflection\TypeResolver + * @uses \phpDocumentor\Reflection\DocBlock\Description + * @uses \phpDocumentor\Reflection\Types\String_ + * @uses \phpDocumentor\Reflection\Types\Context + */ + public function testFactoryMethodWithEmojisToVerifyMultiByteBehaviour() + { + $descriptionFactory = m::mock(DescriptionFactory::class); + $resolver = new TypeResolver(); + $context = new Context(''); + + $description = new Description('My Description'); + $descriptionFactory->shouldReceive('create') + ->with('My Description', $context) + ->andReturn($description); + + $fixture = Return_::create('\My😁Class My Description', $resolver, $descriptionFactory, $context); + + $this->assertSame('\My😁Class My Description', (string) $fixture); + $this->assertEquals('\My😁Class', $fixture->getType()); + $this->assertSame($description, $fixture->getDescription()); } /**