Find this useful? Enter your email to receive occasional updates for securing PHP code.
Signing you up...
Thank you for signing up!
PHP Decode
<?php declare(strict_types=1); /** * This file is part of the Carbon package. * * (c)..
Decoded Output download
<?php
declare(strict_types=1);
/**
* This file is part of the Carbon package.
*
* (c) Brian Nesbitt <[email protected]>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Tests\PHPStan;
use Carbon\Carbon;
use Carbon\CarbonImmutable;
use Carbon\PHPStan\Macro;
use PHPUnit\Framework\Attributes\RequiresPhp;
use PHPUnit\Framework\Attributes\RequiresPhpunit;
use ReflectionClass;
use Tests\AbstractTestCase;
#[RequiresPhpunit('<11')]
#[RequiresPhp('<8.4')]
class MacroTest extends AbstractTestCase
{
public function testIsStatic()
{
$macro = new Macro(Carbon::class, 'calendarBerlin', static function (): string {
return self::this()->tz('Europe/Berlin')->calendar();
});
$this->assertTrue($macro->isStatic());
$macro = new Macro(Carbon::class, 'calendarBerlin', function (): string {
return $this->tz('Europe/Berlin')->calendar();
});
$this->assertFalse($macro->isStatic());
$this->withErrorAsException(function () {
$macro = new Macro(Carbon::class, 'calendarBerlin', static function (): string {
return self::this()->tz('Europe/Berlin')->calendar();
});
$this->assertTrue($macro->isStatic());
$macro = new Macro(Carbon::class, 'calendarBerlin', function (): string {
return $this->tz('Europe/Berlin')->calendar();
});
$this->assertFalse($macro->isStatic());
});
}
public function testGetDeclaringClass()
{
$macro = new Macro(Carbon::class, 'lower', 'strtolower');
$this->assertSame(Carbon::class, $macro->getDeclaringClass()->getName());
$macro = new Macro(CarbonImmutable::class, 'lower', 'strtolower');
$this->assertSame(CarbonImmutable::class, $macro->getDeclaringClass()->getName());
}
public function testIsPrivate()
{
$macro = new Macro(Carbon::class, 'lower', 'strtolower');
$this->assertFalse($macro->isPrivate());
}
public function testIsPublic()
{
$macro = new Macro(Carbon::class, 'lower', 'strtolower');
$this->assertTrue($macro->isPublic());
}
public function testIsFinal()
{
$mixinClass = new class() {
// Declaring final won't apply for macro, sub-class will always be able to override macros.
final public static function foo(): string
{
return 'foo';
}
public static function bar(): string
{
return 'bar';
}
};
$macro = new Macro(Carbon::class, 'foo', [$mixinClass, 'foo']);
$this->assertFalse($macro->isFinal());
$macro = new Macro(Carbon::class, 'bar', [$mixinClass, 'bar']);
$this->assertFalse($macro->isFinal());
}
public function testIsInternal()
{
$macro = new Macro(Carbon::class, 'lower', 'strtolower');
$this->assertFalse($macro->isInternal());
}
public function testIsAbstract()
{
$macro = new Macro(Carbon::class, 'lower', 'strtolower');
$this->assertFalse($macro->isAbstract());
}
public function testGetDocComment()
{
$macro = new Macro(
Carbon::class,
'foo',
/**
* Foo.
*/
function () {
return 'foo';
},
);
$this->assertSame(
"/**
* Foo.
*/",
preg_replace('/^[ ]+/m', '', $macro->getDocComment()),
);
}
public function testGetFileName()
{
$macro = new Macro(Carbon::class, 'foo', function () {
});
$this->assertSame(__FILE__, $macro->getFileName());
}
public function testGetName()
{
$macro = new Macro(Carbon::class, 'lower', 'strtolower');
$this->assertSame('lower', $macro->getName());
}
public function testGetParameters()
{
$macro = new Macro(Carbon::class, 'lower', function () {
});
$this->assertSame([], $macro->getParameters());
$macro = new Macro(Carbon::class, 'lower', function (string $a, $b = 9) {
});
$parameters = $macro->getParameters();
$this->assertCount(2, $parameters);
$this->assertSame('a', $parameters[0]->getName());
$this->assertTrue($parameters[0]->hasType());
$this->assertFalse($parameters[0]->isDefaultValueAvailable());
$this->assertSame('string', $parameters[0]->getType()->getName());
$this->assertSame('b', $parameters[1]->getName());
$this->assertTrue($parameters[1]->isDefaultValueAvailable());
$this->assertFalse($parameters[1]->hasType());
$this->assertNull($parameters[1]->getType());
$this->assertSame(9, $parameters[1]->getDefaultValue());
}
public function testGetReturnType()
{
$macro = new Macro(Carbon::class, 'lower', function () {
});
$this->assertNull($macro->getReturnType());
$macro = new Macro(Carbon::class, 'lower', function (): Carbon {
});
$this->assertSame(Carbon::class, $macro->getReturnType()->getName());
}
public function testGetLines()
{
$line = __LINE__;
$macro = new Macro(Carbon::class, 'foo', function () {
return 'foo';
});
$this->assertSame($line + 1, $macro->getStartLine());
$this->assertSame($line + 3, $macro->getEndLine());
}
public function testIsDeprecated()
{
$macro = new Macro(
Carbon::class,
'lower',
/**
* @deprecated since 3.0.0
*/
function () {
},
);
$this->assertTrue($macro->isDeprecated()->yes());
$macro = new Macro(
Carbon::class,
'lower',
/**
* @discouraged since 3.0.0
*/
function () {
},
);
$this->assertFalse($macro->isDeprecated()->yes());
}
public function testIsVariadic()
{
$macro = new Macro(Carbon::class, 'lower', function (...$params) {
});
$this->assertTrue($macro->isVariadic());
$macro = new Macro(Carbon::class, 'lower', function ($params) {
});
$this->assertFalse($macro->isVariadic());
}
public function testGetPrototype()
{
$macro = new Macro(Carbon::class, 'lower', function () {
});
$this->assertSame($macro, $macro->getPrototype());
}
public function testGetReflection()
{
require_once __DIR__.'/MixinClass.php';
$mixinClass = MixinClass::class;
$macro = new Macro(Carbon::class, 'foo', [$mixinClass, 'foo']);
$this->assertSame(
(new ReflectionClass($mixinClass))->getName(),
$macro->getReflection()->getDeclaringClass()->getName(),
);
$this->assertSame('foo', $macro->getReflection()->getName());
$this->assertNull($macro->getTentativeReturnType());
$this->assertTrue($macro->returnsByReference()->no());
$macro = new Macro(Carbon::class, 'bar', function () {
});
$this->assertNull($macro->getReflection());
$this->assertNull($macro->getTentativeReturnType());
}
}
?>
Did this file decode correctly?
Original Code
<?php
declare(strict_types=1);
/**
* This file is part of the Carbon package.
*
* (c) Brian Nesbitt <[email protected]>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Tests\PHPStan;
use Carbon\Carbon;
use Carbon\CarbonImmutable;
use Carbon\PHPStan\Macro;
use PHPUnit\Framework\Attributes\RequiresPhp;
use PHPUnit\Framework\Attributes\RequiresPhpunit;
use ReflectionClass;
use Tests\AbstractTestCase;
#[RequiresPhpunit('<11')]
#[RequiresPhp('<8.4')]
class MacroTest extends AbstractTestCase
{
public function testIsStatic()
{
$macro = new Macro(Carbon::class, 'calendarBerlin', static function (): string {
return self::this()->tz('Europe/Berlin')->calendar();
});
$this->assertTrue($macro->isStatic());
$macro = new Macro(Carbon::class, 'calendarBerlin', function (): string {
return $this->tz('Europe/Berlin')->calendar();
});
$this->assertFalse($macro->isStatic());
$this->withErrorAsException(function () {
$macro = new Macro(Carbon::class, 'calendarBerlin', static function (): string {
return self::this()->tz('Europe/Berlin')->calendar();
});
$this->assertTrue($macro->isStatic());
$macro = new Macro(Carbon::class, 'calendarBerlin', function (): string {
return $this->tz('Europe/Berlin')->calendar();
});
$this->assertFalse($macro->isStatic());
});
}
public function testGetDeclaringClass()
{
$macro = new Macro(Carbon::class, 'lower', 'strtolower');
$this->assertSame(Carbon::class, $macro->getDeclaringClass()->getName());
$macro = new Macro(CarbonImmutable::class, 'lower', 'strtolower');
$this->assertSame(CarbonImmutable::class, $macro->getDeclaringClass()->getName());
}
public function testIsPrivate()
{
$macro = new Macro(Carbon::class, 'lower', 'strtolower');
$this->assertFalse($macro->isPrivate());
}
public function testIsPublic()
{
$macro = new Macro(Carbon::class, 'lower', 'strtolower');
$this->assertTrue($macro->isPublic());
}
public function testIsFinal()
{
$mixinClass = new class() {
// Declaring final won't apply for macro, sub-class will always be able to override macros.
final public static function foo(): string
{
return 'foo';
}
public static function bar(): string
{
return 'bar';
}
};
$macro = new Macro(Carbon::class, 'foo', [$mixinClass, 'foo']);
$this->assertFalse($macro->isFinal());
$macro = new Macro(Carbon::class, 'bar', [$mixinClass, 'bar']);
$this->assertFalse($macro->isFinal());
}
public function testIsInternal()
{
$macro = new Macro(Carbon::class, 'lower', 'strtolower');
$this->assertFalse($macro->isInternal());
}
public function testIsAbstract()
{
$macro = new Macro(Carbon::class, 'lower', 'strtolower');
$this->assertFalse($macro->isAbstract());
}
public function testGetDocComment()
{
$macro = new Macro(
Carbon::class,
'foo',
/**
* Foo.
*/
function () {
return 'foo';
},
);
$this->assertSame(
"/**\n* Foo.\n*/",
preg_replace('/^[\t ]+/m', '', $macro->getDocComment()),
);
}
public function testGetFileName()
{
$macro = new Macro(Carbon::class, 'foo', function () {
});
$this->assertSame(__FILE__, $macro->getFileName());
}
public function testGetName()
{
$macro = new Macro(Carbon::class, 'lower', 'strtolower');
$this->assertSame('lower', $macro->getName());
}
public function testGetParameters()
{
$macro = new Macro(Carbon::class, 'lower', function () {
});
$this->assertSame([], $macro->getParameters());
$macro = new Macro(Carbon::class, 'lower', function (string $a, $b = 9) {
});
$parameters = $macro->getParameters();
$this->assertCount(2, $parameters);
$this->assertSame('a', $parameters[0]->getName());
$this->assertTrue($parameters[0]->hasType());
$this->assertFalse($parameters[0]->isDefaultValueAvailable());
$this->assertSame('string', $parameters[0]->getType()->getName());
$this->assertSame('b', $parameters[1]->getName());
$this->assertTrue($parameters[1]->isDefaultValueAvailable());
$this->assertFalse($parameters[1]->hasType());
$this->assertNull($parameters[1]->getType());
$this->assertSame(9, $parameters[1]->getDefaultValue());
}
public function testGetReturnType()
{
$macro = new Macro(Carbon::class, 'lower', function () {
});
$this->assertNull($macro->getReturnType());
$macro = new Macro(Carbon::class, 'lower', function (): Carbon {
});
$this->assertSame(Carbon::class, $macro->getReturnType()->getName());
}
public function testGetLines()
{
$line = __LINE__;
$macro = new Macro(Carbon::class, 'foo', function () {
return 'foo';
});
$this->assertSame($line + 1, $macro->getStartLine());
$this->assertSame($line + 3, $macro->getEndLine());
}
public function testIsDeprecated()
{
$macro = new Macro(
Carbon::class,
'lower',
/**
* @deprecated since 3.0.0
*/
function () {
},
);
$this->assertTrue($macro->isDeprecated()->yes());
$macro = new Macro(
Carbon::class,
'lower',
/**
* @discouraged since 3.0.0
*/
function () {
},
);
$this->assertFalse($macro->isDeprecated()->yes());
}
public function testIsVariadic()
{
$macro = new Macro(Carbon::class, 'lower', function (...$params) {
});
$this->assertTrue($macro->isVariadic());
$macro = new Macro(Carbon::class, 'lower', function ($params) {
});
$this->assertFalse($macro->isVariadic());
}
public function testGetPrototype()
{
$macro = new Macro(Carbon::class, 'lower', function () {
});
$this->assertSame($macro, $macro->getPrototype());
}
public function testGetReflection()
{
require_once __DIR__.'/MixinClass.php';
$mixinClass = MixinClass::class;
$macro = new Macro(Carbon::class, 'foo', [$mixinClass, 'foo']);
$this->assertSame(
(new ReflectionClass($mixinClass))->getName(),
$macro->getReflection()->getDeclaringClass()->getName(),
);
$this->assertSame('foo', $macro->getReflection()->getName());
$this->assertNull($macro->getTentativeReturnType());
$this->assertTrue($macro->returnsByReference()->no());
$macro = new Macro(Carbon::class, 'bar', function () {
});
$this->assertNull($macro->getReflection());
$this->assertNull($macro->getTentativeReturnType());
}
}
Function Calls
None |
Stats
MD5 | e7b4cd580b73d637715156ed8abe267f |
Eval Count | 0 |
Decode Time | 119 ms |