File test/VariablesTest.class.php
Last commit: Thu Dec 26 13:56:09 2024 +0100 Jan Dankert Fix: Namespaces
1 <?php 2 3 4 use util\test\TestCase; 5 6 class VariablesTest extends TestCase { 7 8 public function testResolver() { 9 $res = new \util\text\variables\VariableResolver(); 10 11 $example = <<<SRC 12 Hello \${planet:unknown planet}! 13 14 Are you ok? My name is \${me.name:unnamed} and robots name is \${me.\${nix.nada:name}}, i was born \${me.date:before some years}. 15 Message: \${message.somemessage:defaultMessage} 16 SRC; 17 18 $res->addDefaultResolver( function($x) {return 'world';} ); 19 $res->addResolver('me', function($t) {if ($t == 'name') return 'alice';return '';}); 20 $res->addResolver('message', function($t) {return 'this is a message';}); 21 22 $this->assertNotEmpty($res->resolveVariables( $example ) ); 23 } 24 25 26 /** 27 * Test variables with a prefix. 28 */ 29 public function testNamespaced() { 30 31 $resolver = new \phariable\VariableResolver(); 32 $resolver->addDefaultResolver( function($key) { return 'default'; } ); 33 $resolver->addResolver( 'name', function($key) { return 'me'; } ); 34 $resolver->addResolver( 'cms', function($key) { return 'orcms'; } ); 35 36 $this->assertEquals( 'default',$resolver->resolveVariables('${x}') ); 37 $this->assertEquals( 'me',$resolver->resolveVariables('${name.x}') ); 38 $this->assertEquals( 'orcms',$resolver->resolveVariables('${cms.x}') ); 39 } 40 41 public function testSpecials() { 42 43 $resolver = new \phariable\VariableResolver(); 44 $resolver->addDefaultResolver( ['0','1','2',''=>'space','name'=>'name'] ); 45 46 $resolver->marker = ''; 47 48 $resolver->parseString('a{0}b'); 49 50 $this->assertEquals( 'name',$resolver->resolveVariables('{name}') ); 51 $this->assertEquals( 'space',$resolver->resolveVariables('{}') ); 52 $this->assertEquals( '2',$resolver->resolveVariables('{2}') ); 53 $this->assertEquals( '1',$resolver->resolveVariables('{1}') ); 54 $this->assertEquals( '0',$resolver->resolveVariables('{0}') ); 55 } 56 } 57
Downloadtest/VariablesTest.class.php
History Thu, 26 Dec 2024 13:56:09 +0100 Jan Dankert Fix: Namespaces