Skip to content

Commit 0a9b8ea

Browse files
committed
Add extra tests to check for multibyte behaviour
1 parent 19dd184 commit 0a9b8ea

File tree

1 file changed

+56
-1
lines changed

1 file changed

+56
-1
lines changed

tests/unit/DocBlock/Tags/ReturnTest.php

Lines changed: 56 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,34 @@ public function testFactoryMethod() : void
167167
* @uses \phpDocumentor\Reflection\Types\Context
168168
*/
169169
public function testFactoryMethodWithGenericWithSpace()
170+
{
171+
$this->expectException(\InvalidArgumentException::class);
172+
$this->expectExceptionMessage('"\array<string, string>" is not a valid Fqsen.');
173+
174+
$descriptionFactory = m::mock(DescriptionFactory::class);
175+
$resolver = new TypeResolver();
176+
$context = new Context('');
177+
178+
$description = new Description('My Description');
179+
$descriptionFactory->shouldReceive('create')
180+
->with('My Description', $context)
181+
->andReturn($description);
182+
183+
Return_::create('array<string, string> My Description', $resolver, $descriptionFactory, $context);
184+
}
185+
186+
/**
187+
* @see self::testFactoryMethodWithGenericWithSpace()
188+
*
189+
* @covers ::create
190+
* @uses \phpDocumentor\Reflection\DocBlock\Tags\Return_::<public>
191+
* @uses \phpDocumentor\Reflection\DocBlock\DescriptionFactory
192+
* @uses \phpDocumentor\Reflection\TypeResolver
193+
* @uses \phpDocumentor\Reflection\DocBlock\Description
194+
* @uses \phpDocumentor\Reflection\Types\String_
195+
* @uses \phpDocumentor\Reflection\Types\Context
196+
*/
197+
public function testFactoryMethodWithGenericWithSpaceAndAddedEmojisToVerifyMultiByteBehaviour()
170198
{
171199
$this->expectException(\InvalidArgumentException::class);
172200
$this->expectExceptionMessage('"\array😁<string,😁 😁string>" is not a valid Fqsen.');
@@ -180,7 +208,34 @@ public function testFactoryMethodWithGenericWithSpace()
180208
->with('My Description', $context)
181209
->andReturn($description);
182210

183-
Return_::create('array😁<string,😁 string> My Description', $resolver, $descriptionFactory, $context);
211+
Return_::create('array😁<string,😁 😁string> My Description', $resolver, $descriptionFactory, $context);
212+
}
213+
214+
/**
215+
* @covers ::create
216+
* @uses \phpDocumentor\Reflection\DocBlock\Tags\Return_::<public>
217+
* @uses \phpDocumentor\Reflection\DocBlock\DescriptionFactory
218+
* @uses \phpDocumentor\Reflection\TypeResolver
219+
* @uses \phpDocumentor\Reflection\DocBlock\Description
220+
* @uses \phpDocumentor\Reflection\Types\String_
221+
* @uses \phpDocumentor\Reflection\Types\Context
222+
*/
223+
public function testFactoryMethodWithEmojisToVerifyMultiByteBehaviour()
224+
{
225+
$descriptionFactory = m::mock(DescriptionFactory::class);
226+
$resolver = new TypeResolver();
227+
$context = new Context('');
228+
229+
$description = new Description('My Description');
230+
$descriptionFactory->shouldReceive('create')
231+
->with('My Description', $context)
232+
->andReturn($description);
233+
234+
$fixture = Return_::create('\My😁Class My Description', $resolver, $descriptionFactory, $context);
235+
236+
$this->assertSame('\My😁Class My Description', (string) $fixture);
237+
$this->assertEquals('\My😁Class', $fixture->getType());
238+
$this->assertSame($description, $fixture->getDescription());
184239
}
185240

186241
/**

0 commit comments

Comments
 (0)