config->version = 2; ?>'; private $baseurl; public function _before() { $this->baseurl = '/' . basename(dirname(dirname(dirname(dirname(__DIR__))))) . '/'; } public function testVersion() { // Extension is .html and config is explicitly declared $source = '' . "\n" . '
{{ RX_VERSION|noescape }}
'; $target = '
'; $this->assertEquals("\n" . $target, $this->_parse($source), false); $source = '@version(2)' . "\n" . '
@php func_get_args(); @endphp
'; $target = '
'; $this->assertEquals("\n" . $target, $this->_parse($source), false); // Extension is .blade.php and config is not declared $source = ''; $target = ' disabled="disabled">'; $this->assertEquals($target, $this->_parse($source)); // Extension is .blade.php but version is incorrectly declared: will be parsed as v1 $source = '@version(1)' . "\n" . ''; $target = ''; $this->assertStringContainsString($target, $this->_parse($source)); } public function testClassAliases() { // XE-style $source = '' . "\n" . '{@ $foo = TemplateHandler::getInstance()}'; $target = "\n" . 'foo = Rhymix\Framework\Template::getInstance() ?>'; $this->assertEquals($target, $this->_parse($source)); // Blade-style $source = "@use('Rhymix\Framework\Template', 'TemplateHandler')" . "\n" . '{@ $foo = new TemplateHandler()}'; $target = "\n" . 'foo = new Rhymix\Framework\Template() ?>'; $this->assertEquals($target, $this->_parse($source)); } public function testInclude() { // Basic usage $source = ''; $target = 'relative_dirname, "foobar", "blade.php"); echo $__tpl->compile(); ?>'; $this->assertEquals($target, $this->_parse($source)); // Legacy 'target' attribute $source = ''; $target = 'relative_dirname, "subdir/foobar", "blade.php"); echo $__tpl->compile(); ?>'; $this->assertEquals($target, $this->_parse($source)); // Conditional include $source = ''; $target = 'relative_dirname, "../up/foobar", "blade.php"); echo $__tpl->compile(); ?>'; $this->assertEquals($target, $this->_parse($source)); // Conditional include with legacy 'cond' attribute $source = ''; $target = 'relative_dirname, "legacy/cond.statement.html", "blade.php"); echo $__tpl->compile(); ?>'; $this->assertEquals($target, $this->_parse($source)); // Path relative to Rhymix installation directory $source = ''; $target = 'compile(); ?>'; $this->assertEquals($target, $this->_parse($source)); // Unless $source = ''; $target = 'compile(); ?>'; $this->assertEquals($target, $this->_parse($source)); } public function testAssetLoading() { } public function testEchoStatements() { } public function testOutputFilters() { } public function testPathConversion() { } public function testBlockConditions() { } public function testInlineConditions() { } public function testMiscDirectives() { } public function testComments() { } public function testVerbatim() { } public function testRawPhpCode() { } public function testAutoEscape() { } public function testCurlyBracesAndVars() { } public function testCompile() { } public function _parse($source, $force_v2 = true) { $filename = $force_v2 ? 'v2example.blade.php' : 'empty.html'; $tmpl = new \Rhymix\Framework\Template('./tests/_data/template', $filename); $result = $tmpl->parse($source); if (str_starts_with($result, $this->prefix)) { $result = substr($result, strlen($this->prefix)); } return $result; } }