.
This commit is contained in:
commit
a5ce423afe
30 changed files with 1807 additions and 0 deletions
91
tests/ReturnModificationTest.php
Normal file
91
tests/ReturnModificationTest.php
Normal file
|
|
@ -0,0 +1,91 @@
|
|||
<?php
|
||||
|
||||
use PHPUnit\Framework\TestCase;
|
||||
use Tests\Aspects\ModifyingAspect;
|
||||
use Tests\Classes\ModifyingClass;
|
||||
|
||||
final class ReturnModificationTest extends TestCase
|
||||
{
|
||||
private ModifyingClass $instance;
|
||||
|
||||
protected function setUp(): void
|
||||
{
|
||||
$this->instance = new ModifyingClass();
|
||||
ModifyingAspect::reset();
|
||||
}
|
||||
|
||||
public function testAfterReturningOriginalValueDoesNotModifyResult(): void
|
||||
{
|
||||
ModifyingAspect::$modifier = fn($result) => $result;
|
||||
|
||||
$result = $this->instance->getValue();
|
||||
|
||||
$this->assertEquals(42, $result);
|
||||
}
|
||||
|
||||
public function testAfterCanModifyIntegerResult(): void
|
||||
{
|
||||
ModifyingAspect::$modifier = fn($result) => $result * 2;
|
||||
|
||||
$result = $this->instance->getValue();
|
||||
|
||||
$this->assertEquals(84, $result);
|
||||
}
|
||||
|
||||
public function testAfterCanModifyStringResult(): void
|
||||
{
|
||||
ModifyingAspect::$modifier = fn($result) => strtoupper($result);
|
||||
|
||||
$result = $this->instance->getString();
|
||||
|
||||
$this->assertEquals('ORIGINAL', $result);
|
||||
}
|
||||
|
||||
public function testAfterCanIncrementIntegerResult(): void
|
||||
{
|
||||
ModifyingAspect::$modifier = fn($result) => $result + 100;
|
||||
|
||||
$result = $this->instance->getValue();
|
||||
|
||||
$this->assertEquals(142, $result);
|
||||
}
|
||||
|
||||
public function testAfterCanModifyArrayResult(): void
|
||||
{
|
||||
ModifyingAspect::$modifier = fn($result) => array_merge($result, ['added' => 'new']);
|
||||
|
||||
$result = $this->instance->getArray();
|
||||
|
||||
$this->assertEquals(['key' => 'value', 'added' => 'new'], $result);
|
||||
}
|
||||
|
||||
public function testAfterCanFilterArrayResult(): void
|
||||
{
|
||||
ModifyingAspect::$modifier = fn($result) => array_filter($result, fn($v) => $v !== 'value');
|
||||
|
||||
$result = $this->instance->getArray();
|
||||
|
||||
$this->assertEquals([], $result);
|
||||
}
|
||||
|
||||
public function testMultipleCallsWithDifferentModifiers(): void
|
||||
{
|
||||
ModifyingAspect::$modifier = fn($result) => $result * 2;
|
||||
$result1 = $this->instance->getValue();
|
||||
|
||||
ModifyingAspect::$modifier = fn($result) => $result + 10;
|
||||
$result2 = $this->instance->getValue();
|
||||
|
||||
$this->assertEquals(84, $result1);
|
||||
$this->assertEquals(52, $result2);
|
||||
}
|
||||
|
||||
public function testNoModifierReturnsOriginalValue(): void
|
||||
{
|
||||
// ModifyingAspect::$modifier is null, so after() returns original value
|
||||
|
||||
$result = $this->instance->getValue();
|
||||
|
||||
$this->assertEquals(42, $result);
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue