Пример #1
0
 /**
  * @covers LightnCandy\Token::toString
  */
 public function testOn_toString()
 {
     $method = new \ReflectionMethod('LightnCandy\\Token', 'toString');
     $this->assertEquals('c', $method->invokeArgs(null, array_by_ref(array(array(0, 'a', 'b', 'c', 'd', 'e')))));
     $this->assertEquals('cd', $method->invokeArgs(null, array_by_ref(array(array(0, 'a', 'b', 'c', 'd', 'e', 'f')))));
     $this->assertEquals('qd', $method->invokeArgs(null, array_by_ref(array(array(0, 'a', 'b', 'c', 'd', 'e', 'f'), array(3 => 'q')))));
 }
Пример #2
0
 /**
  * @covers LightnCandy\LightnCandy::handleError
  */
 public function testOn_handleError()
 {
     $method = new \ReflectionMethod('LightnCandy\\LightnCandy', 'handleError');
     $method->setAccessible(true);
     $this->assertEquals(false, $method->invokeArgs(null, array_by_ref(array(array('error' => array())))));
     $this->assertEquals(true, $method->invokeArgs(null, array_by_ref(array(array('error' => array('some error'), 'flags' => array('errorlog' => 0, 'exception' => 0))))));
 }
Пример #3
0
 /**
  * @covers LightnCandy\SafeString::escapeTemplate
  */
 public function testOn_escapeTemplate()
 {
     $method = new \ReflectionMethod('LightnCandy\\SafeString', 'escapeTemplate');
     $this->assertEquals('abc', $method->invokeArgs(null, array_by_ref(array('abc'))));
     $this->assertEquals('a\\\\bc', $method->invokeArgs(null, array_by_ref(array('a\\bc'))));
     $this->assertEquals('a\\\'bc', $method->invokeArgs(null, array_by_ref(array('a\'bc'))));
 }
Пример #4
0
 /**
  * @covers LightnCandy\Parser::parse
  */
 public function testOn_parse()
 {
     $method = new \ReflectionMethod('LightnCandy\\Parser', 'parse');
     $this->assertEquals(array(false, array(array())), $method->invokeArgs(null, array_by_ref(array(array(0, 0, 0, 0, 0, 0, 0, ''), array('flags' => array('strpar' => 0, 'advar' => 0, 'this' => 1, 'namev' => 0, 'noesc' => 0), 'rawblock' => false)))));
     $this->assertEquals(array(true, array(array())), $method->invokeArgs(null, array_by_ref(array(array(0, 0, 0, '{{', 0, '{', 0, ''), array('flags' => array('strpar' => 0, 'advar' => 0, 'this' => 1, 'namev' => 0, 'noesc' => 0), 'rawblock' => false)))));
     $this->assertEquals(array(true, array(array())), $method->invokeArgs(null, array_by_ref(array(array(0, 0, 0, 0, 0, 0, 0, ''), array('flags' => array('strpar' => 0, 'advar' => 0, 'this' => 1, 'namev' => 0, 'noesc' => 1), 'rawblock' => false)))));
     $this->assertEquals(array(false, array(array('a'))), $method->invokeArgs(null, array_by_ref(array(array(0, 0, 0, 0, 0, 0, 0, 'a'), array('flags' => array('strpar' => 0, 'advar' => 0, 'this' => 1, 'namev' => 0, 'noesc' => 0), 'rawblock' => false)))));
     $this->assertEquals(array(false, array(array('a'), array('b'))), $method->invokeArgs(null, array_by_ref(array(array(0, 0, 0, 0, 0, 0, 0, 'a  b'), array('flags' => array('strpar' => 0, 'advar' => 0, 'this' => 1, 'namev' => 0, 'noesc' => 0), 'rawblock' => false)))));
     $this->assertEquals(array(false, array(array('a'), array('"b'), array('c"'))), $method->invokeArgs(null, array_by_ref(array(array(0, 0, 0, 0, 0, 0, 0, 'a "b c"'), array('flags' => array('strpar' => 0, 'advar' => 0, 'this' => 1, 'namev' => 0, 'noesc' => 0), 'rawblock' => false)))));
     $this->assertEquals(array(false, array(array('a'), array(-1, '\'b c\''))), $method->invokeArgs(null, array_by_ref(array(array(0, 0, 0, 0, 0, 0, 0, 'a "b c"'), array('flags' => array('strpar' => 0, 'advar' => 1, 'this' => 1, 'namev' => 0, 'noesc' => 0), 'rawblock' => false)))));
     $this->assertEquals(array(false, array(array('a'), array('[b'), array('c]'))), $method->invokeArgs(null, array_by_ref(array(array(0, 0, 0, 0, 0, 0, 0, 'a [b c]'), array('flags' => array('strpar' => 0, 'advar' => 0, 'this' => 1, 'namev' => 0, 'noesc' => 0), 'rawblock' => false)))));
     $this->assertEquals(array(false, array(array('a'), array('[b'), array('c]'))), $method->invokeArgs(null, array_by_ref(array(array(0, 0, 0, 0, 0, 0, 0, 'a [b c]'), array('flags' => array('strpar' => 0, 'advar' => 0, 'this' => 1, 'namev' => 1, 'noesc' => 0), 'rawblock' => false)))));
     $this->assertEquals(array(false, array(array('a'), array('b c'))), $method->invokeArgs(null, array_by_ref(array(array(0, 0, 0, 0, 0, 0, 0, 'a [b c]'), array('flags' => array('strpar' => 0, 'advar' => 1, 'this' => 1, 'namev' => 0, 'noesc' => 0), 'rawblock' => false)))));
     $this->assertEquals(array(false, array(array('a'), array('b c'))), $method->invokeArgs(null, array_by_ref(array(array(0, 0, 0, 0, 0, 0, 0, 'a [b c]'), array('flags' => array('strpar' => 0, 'advar' => 1, 'this' => 1, 'namev' => 1, 'noesc' => 0), 'rawblock' => false)))));
     $this->assertEquals(array(false, array(array('a'), 'q' => array('b c'))), $method->invokeArgs(null, array_by_ref(array(array(0, 0, 0, 0, 0, 0, 0, 'a q=[b c]'), array('flags' => array('strpar' => 0, 'advar' => 1, 'this' => 1, 'namev' => 1, 'noesc' => 0), 'rawblock' => false)))));
     $this->assertEquals(array(false, array(array('a'), array('q=[b c'))), $method->invokeArgs(null, array_by_ref(array(array(0, 0, 0, 0, 0, 0, 0, 'a [q=[b c]'), array('flags' => array('strpar' => 0, 'advar' => 1, 'this' => 1, 'namev' => 1, 'noesc' => 0), 'rawblock' => false)))));
     $this->assertEquals(array(false, array(array('a'), 'q' => array('[b'), array('c]'))), $method->invokeArgs(null, array_by_ref(array(array(0, 0, 0, 0, 0, 0, 0, 'a q=[b c]'), array('flags' => array('strpar' => 0, 'advar' => 0, 'this' => 1, 'namev' => 1, 'noesc' => 0), 'rawblock' => false)))));
     $this->assertEquals(array(false, array(array('a'), 'q' => array('b'), array('c'))), $method->invokeArgs(null, array_by_ref(array(array(0, 0, 0, 0, 0, 0, 0, 'a [q]=b c'), array('flags' => array('strpar' => 0, 'advar' => 0, 'this' => 1, 'namev' => 1, 'noesc' => 0), 'rawblock' => false)))));
     $this->assertEquals(array(false, array(array('a'), 'q' => array(-1, '\'b c\''))), $method->invokeArgs(null, array_by_ref(array(array(0, 0, 0, 0, 0, 0, 0, 'a q="b c"'), array('flags' => array('strpar' => 0, 'advar' => 1, 'this' => 1, 'namev' => 1, 'noesc' => 0), 'rawblock' => false)))));
     $this->assertEquals(array(false, array(array(-2, array(array('foo'), array('bar')), '(foo bar)'))), $method->invokeArgs(null, array_by_ref(array(array(0, 0, 0, 0, 0, 0, 0, '(foo bar)'), array('flags' => array('strpar' => 0, 'advar' => 1, 'this' => 1, 'namev' => 1, 'noesc' => 0, 'exhlp' => 1, 'lambda' => 0), 'ops' => array('seperator' => ''), 'usedFeature' => array('subexp' => 0), 'rawblock' => false)))));
     $this->assertEquals(array(false, array(array('foo'), array("'=='"), array('bar'))), $method->invokeArgs(null, array_by_ref(array(array(0, 0, 0, 0, 0, 0, 0, "foo '==' bar"), array('flags' => array('strpar' => 0, 'advar' => 1, 'namev' => 1, 'noesc' => 0, 'this' => 0), 'rawblock' => false)))));
     $this->assertEquals(array(false, array(array(-2, array(array('foo'), array('bar')), '( foo bar)'))), $method->invokeArgs(null, array_by_ref(array(array(0, 0, 0, 0, 0, 0, 0, '( foo bar)'), array('flags' => array('strpar' => 0, 'advar' => 1, 'this' => 1, 'namev' => 1, 'noesc' => 0, 'exhlp' => 1, 'lambda' => 0), 'ops' => array('seperator' => ''), 'usedFeature' => array('subexp' => 0), 'rawblock' => false)))));
     $this->assertEquals(array(false, array(array('a'), array(-1, '\' b c\''))), $method->invokeArgs(null, array_by_ref(array(array(0, 0, 0, 0, 0, 0, 0, 'a " b c"'), array('flags' => array('strpar' => 0, 'advar' => 1, 'this' => 1, 'namev' => 0, 'noesc' => 0), 'rawblock' => false)))));
     $this->assertEquals(array(false, array(array('a'), 'q' => array(-1, '\' b c\''))), $method->invokeArgs(null, array_by_ref(array(array(0, 0, 0, 0, 0, 0, 0, 'a q=" b c"'), array('flags' => array('strpar' => 0, 'advar' => 1, 'this' => 1, 'namev' => 1, 'noesc' => 0), 'rawblock' => false)))));
     $this->assertEquals(array(false, array(array('foo'), array(-1, "' =='"), array('bar'))), $method->invokeArgs(null, array_by_ref(array(array(0, 0, 0, 0, 0, 0, 0, "foo \\' ==\\' bar"), array('flags' => array('strpar' => 0, 'advar' => 1, 'namev' => 1, 'noesc' => 0, 'this' => 0), 'rawblock' => false)))));
     $this->assertEquals(array(false, array(array('a'), array(' b c'))), $method->invokeArgs(null, array_by_ref(array(array(0, 0, 0, 0, 0, 0, 0, 'a [ b c]'), array('flags' => array('strpar' => 0, 'advar' => 1, 'this' => 1, 'namev' => 1, 'noesc' => 0), 'rawblock' => false)))));
     $this->assertEquals(array(false, array(array('a'), 'q' => array(-1, "' d e'"))), $method->invokeArgs(null, array_by_ref(array(array(0, 0, 0, 0, 0, 0, 0, "a q=\\' d e\\'"), array('flags' => array('strpar' => 0, 'advar' => 1, 'this' => 1, 'namev' => 1, 'noesc' => 0), 'rawblock' => false)))));
     $this->assertEquals(array(false, array('q' => array(-2, array(array('foo'), array('bar')), '( foo bar)'))), $method->invokeArgs(null, array_by_ref(array(array(0, 0, 0, 0, 0, 0, 0, 'q=( foo bar)'), array('flags' => array('strpar' => 0, 'advar' => 1, 'this' => 1, 'namev' => 1, 'noesc' => 0, 'exhlp' => 0, 'lambda' => 0), 'usedFeature' => array('subexp' => 0), 'ops' => array('seperator' => 0), 'rawblock' => false)))));
     $this->assertEquals(array(false, array(array('foo'))), $method->invokeArgs(null, array_by_ref(array(array(0, 0, 0, 0, 0, 0, '>', 'foo'), array('flags' => array('strpar' => 0, 'advar' => 1, 'this' => 1, 'namev' => 1, 'noesc' => 0, 'exhlp' => 0, 'lambda' => 0), 'usedFeature' => array('subexp' => 0), 'ops' => array('seperator' => 0), 'rawblock' => false)))));
     $this->assertEquals(array(false, array(array('foo'))), $method->invokeArgs(null, array_by_ref(array(array(0, 0, 0, 0, 0, 0, '>', '"foo"'), array('flags' => array('strpar' => 0, 'advar' => 1, 'this' => 1, 'namev' => 1, 'noesc' => 0, 'exhlp' => 0, 'lambda' => 0), 'usedFeature' => array('subexp' => 0), 'ops' => array('seperator' => 0), 'rawblock' => false)))));
     $this->assertEquals(array(false, array(array('foo'))), $method->invokeArgs(null, array_by_ref(array(array(0, 0, 0, 0, 0, 0, '>', '[foo] '), array('flags' => array('strpar' => 0, 'advar' => 1, 'this' => 1, 'namev' => 1, 'noesc' => 0, 'exhlp' => 0, 'lambda' => 0), 'usedFeature' => array('subexp' => 0), 'ops' => array('seperator' => 0), 'rawblock' => false)))));
     $this->assertEquals(array(false, array(array('foo'))), $method->invokeArgs(null, array_by_ref(array(array(0, 0, 0, 0, 0, 0, '>', '\\\'foo\\\''), array('flags' => array('strpar' => 0, 'advar' => 1, 'this' => 1, 'namev' => 1, 'noesc' => 0, 'exhlp' => 0, 'lambda' => 0), 'usedFeature' => array('subexp' => 0), 'ops' => array('seperator' => 0), 'rawblock' => false)))));
 }
Пример #5
0
 /**
  * @covers LightnCandy\Compiler::addUsageCount
  */
 public function testOn_addUsageCount()
 {
     $method = new \ReflectionMethod('LightnCandy\\Compiler', 'addUsageCount');
     $method->setAccessible(true);
     $this->assertEquals(1, $method->invokeArgs(null, array_by_ref(array(array('usedCount' => array('test' => array())), 'test', 'testname'))));
     $this->assertEquals(3, $method->invokeArgs(null, array_by_ref(array(array('usedCount' => array('test' => array('testname' => 2))), 'test', 'testname'))));
     $this->assertEquals(5, $method->invokeArgs(null, array_by_ref(array(array('usedCount' => array('test' => array('testname' => 2))), 'test', 'testname', 3))));
 }
Пример #6
0
 /**
  * @covers LightnCandy\Encoder::encq
  */
 public function testOn_encq()
 {
     $method = new \ReflectionMethod('LightnCandy\\Encoder', 'encq');
     $this->assertEquals('a', $method->invokeArgs(null, array_by_ref(array(array('flags' => array('mustlam' => 0, 'lambda' => 0)), 'a'))));
     $this->assertEquals('a&b', $method->invokeArgs(null, array_by_ref(array(array('flags' => array('mustlam' => 0, 'lambda' => 0)), 'a&b'))));
     $this->assertEquals('a'b', $method->invokeArgs(null, array_by_ref(array(array('flags' => array('mustlam' => 0, 'lambda' => 0)), 'a\'b'))));
     $this->assertEquals('`a'b', $method->invokeArgs(null, array_by_ref(array(array('flags' => array('mustlam' => 0, 'lambda' => 0)), '`a\'b'))));
 }
Пример #7
0
 /**
  * @covers LightnCandy\Partial::prePartial
  */
 public function testOn_prePartial()
 {
     $method = new \ReflectionMethod('LightnCandy\\Partial', 'prePartial');
     $method->setAccessible(true);
     $this->assertEquals('hey', $method->invokeArgs(null, array_by_ref(array(array('prepartial' => false), 'hey', 'haha'))));
     $this->assertEquals('haha-hoho', $method->invokeArgs(null, array_by_ref(array(array('prepartial' => function ($cx, $tmpl, $name) {
         return "{$name}-{$tmpl}";
     }), 'hoho', 'haha'))));
 }
Пример #8
0
 /**
  * @covers LightnCandy\Context::updateHelperTable
  */
 public function testOn_updateHelperTable()
 {
     $method = new \ReflectionMethod('LightnCandy\\Context', 'updateHelperTable');
     $method->setAccessible(true);
     $this->assertEquals(array(), $method->invokeArgs(null, array_by_ref(array(array(), array()))));
     $this->assertEquals(array('flags' => array('exhlp' => 1), 'helpers' => array('abc' => 1)), $method->invokeArgs(null, array_by_ref(array(array('flags' => array('exhlp' => 1)), array('helpers' => array('abc'))))));
     $this->assertEquals(array('error' => array('You provide a custom helper named as \'abc\' in options[\'helpers\'], but the function abc() is not defined!'), 'flags' => array('exhlp' => 0)), $method->invokeArgs(null, array_by_ref(array(array('error' => array(), 'flags' => array('exhlp' => 0)), array('helpers' => array('abc'))))));
     $this->assertEquals(array('flags' => array('exhlp' => 1), 'helpers' => array('\\LightnCandy\\Runtime::raw' => '\\LightnCandy\\Runtime::raw')), $method->invokeArgs(null, array_by_ref(array(array('flags' => array('exhlp' => 1), 'helpers' => array()), array('helpers' => array('\\LightnCandy\\Runtime::raw'))))));
     $this->assertEquals(array('flags' => array('exhlp' => 1), 'helpers' => array('test' => '\\LightnCandy\\Runtime::raw')), $method->invokeArgs(null, array_by_ref(array(array('flags' => array('exhlp' => 1), 'helpers' => array()), array('helpers' => array('test' => '\\LightnCandy\\Runtime::raw'))))));
 }
Пример #9
0
 /**
  * @covers LightnCandy\Expression::toString
  */
 public function testOn_toString()
 {
     $method = new \ReflectionMethod('LightnCandy\\Expression', 'toString');
     $this->assertEquals('[a].[b]', $method->invokeArgs(null, array_by_ref(array(0, false, array('a', 'b')))));
     $this->assertEquals('@[root]', $method->invokeArgs(null, array_by_ref(array(0, true, array('root')))));
     $this->assertEquals('this', $method->invokeArgs(null, array_by_ref(array(0, false, null))));
     $this->assertEquals('this.[id]', $method->invokeArgs(null, array_by_ref(array(0, false, array(null, 'id')))));
     $this->assertEquals('@[root].[a].[b]', $method->invokeArgs(null, array_by_ref(array(0, true, array('root', 'a', 'b')))));
     $this->assertEquals('../../[a].[b]', $method->invokeArgs(null, array_by_ref(array(2, false, array('a', 'b')))));
     $this->assertEquals('../[a\'b]', $method->invokeArgs(null, array_by_ref(array(1, false, array('a\'b')))));
 }
Пример #10
0
 /**
  * @covers LightnCandy\Exporter::closure
  */
 public function testOn_closure()
 {
     $method = new \ReflectionMethod('LightnCandy\\Exporter', 'closure');
     $method->setAccessible(true);
     $this->assertEquals('function($a) {return;}', $method->invokeArgs(null, array_by_ref(array(array('flags' => array('standalone' => 0)), function ($a) {
         return;
     }))));
     $this->assertEquals('function($a) {return;}', $method->invokeArgs(null, array_by_ref(array(array('flags' => array('standalone' => 0)), function ($a) {
         return;
     }))));
 }
Пример #11
0
 /**
  * @covers LightnCandy\Validator::operator
  */
 public function testOn_operator()
 {
     $method = new \ReflectionMethod('LightnCandy\\Validator', 'operator');
     $method->setAccessible(true);
     $this->assertEquals(null, $method->invokeArgs(null, array_by_ref(array('', array(), array()))));
     $this->assertEquals(2, $method->invokeArgs(null, array_by_ref(array('^', array('usedFeature' => array('isec' => 1), 'level' => 0, 'currentToken' => array(0, 0, 0, 0, 0, 0, 0, 0), 'flags' => array('spvar' => 0)), array(array('foo'))))));
     $this->assertEquals(true, $method->invokeArgs(null, array_by_ref(array('/', array('stack' => array('[with]', '#'), 'level' => 1, 'currentToken' => array(0, 0, 0, 0, 0, 0, 0, 'with'), 'flags' => array('nohbh' => 0)), array(array())))));
     $this->assertEquals(4, $method->invokeArgs(null, array_by_ref(array('#', array('usedFeature' => array('sec' => 3), 'level' => 0, 'currentToken' => array(0, 0, 0, 0, 0, 0, 0, 0), 'flags' => array('spvar' => 0)), array(array('x'))))));
     $this->assertEquals(5, $method->invokeArgs(null, array_by_ref(array('#', array('usedFeature' => array('if' => 4), 'level' => 0, 'currentToken' => array(0, 0, 0, 0, 0, 0, 0, 0), 'flags' => array('spvar' => 0, 'nohbh' => 0)), array(array('if'))))));
     $this->assertEquals(6, $method->invokeArgs(null, array_by_ref(array('#', array('usedFeature' => array('with' => 5), 'level' => 0, 'flags' => array('nohbh' => 0, 'runpart' => 0, 'spvar' => 0), 'currentToken' => array(0, 0, 0, 0, 0, 0, 0, 0)), array(array('with'))))));
     $this->assertEquals(7, $method->invokeArgs(null, array_by_ref(array('#', array('usedFeature' => array('each' => 6), 'level' => 0, 'currentToken' => array(0, 0, 0, 0, 0, 0, 0, 0), 'flags' => array('spvar' => 0, 'nohbh' => 0)), array(array('each'))))));
     $this->assertEquals(8, $method->invokeArgs(null, array_by_ref(array('#', array('usedFeature' => array('unless' => 7), 'level' => 0, 'currentToken' => array(0, 0, 0, 0, 0, 0, 0, 0), 'flags' => array('spvar' => 0, 'nohbh' => 0)), array(array('unless'))))));
     $this->assertEquals(9, $method->invokeArgs(null, array_by_ref(array('#', array('blockhelpers' => array('abc' => ''), 'usedFeature' => array('bhelper' => 8), 'level' => 0, 'currentToken' => array(0, 0, 0, 0, 0, 0, 0, 0), 'flags' => array('spvar' => 0)), array(array('abc'))))));
     $this->assertEquals(11, $method->invokeArgs(null, array_by_ref(array('#', array('hbhelpers' => array('abc' => ''), 'usedFeature' => array('hbhelper' => 10), 'level' => 0, 'currentToken' => array(0, 0, 0, 0, 0, 0, 0, 0), 'flags' => array('spvar' => 0)), array(array('abc'))))));
     $this->assertEquals(true, $method->invokeArgs(null, array_by_ref(array('>', array('basedir' => array('.'), 'fileext' => array('.tmpl'), 'usedFeature' => array('partial' => 7), 'level' => 0, 'flags' => array('skippartial' => 0, 'runpart' => 0, 'spvar' => 0), 'currentToken' => array(0, 0, 0, 0, 0, 0, 0, 0)), array('test')))));
 }
function pleac_Passing_Arrays_and_Hashes_by_Reference()
{
    // In PHP all items exist as 'memory references' [i.e. non-modifiable pointers],
    // so when passing an item as a function argument, or returning an item from
    // a function, it is this 'memory reference' that is passed, and *not* the
    // contents of that item. Should several references to an item exist [e.g. if
    // passed to a function then at least two such references would exist in
    // different scopes] they would all be refering to the same copy of the item.
    // However, if an attempt is made to alter the item is made, a copy is made
    // and it is the copy that is altered, leaving the original intact.
    //
    // The PHP reference mechanism is used to selectively prevent this behaviour,
    // and ensure that if a change is made to an item that no copy is made, and that
    // it is the original item that is changed. Importantly, there is no efficiency
    // gain from passing function parameters using references if the parameter item
    // is not altered.
    // A copy of the item referred to by, '$arr', is made, and altered; original
    // remains intact
    function array_by_value($arr)
    {
        $arr[0] = 7;
        echo $arr[0] . "\n";
    }
    // No copy is made; original item referred to by, '$arr', is altered
    function array_by_ref(&$arr)
    {
        $arr[0] = 7;
        echo $arr[0] . "\n";
    }
    // ------------
    $arr = array(1, 2, 3);
    echo $arr[0] . "\n";
    // output: 1
    array_by_value($arr);
    // output: 7
    echo $arr[0] . "\n";
    // output: 1
    $arr = array(1, 2, 3);
    echo $arr[0] . "\n";
    // output: 1
    array_by_ref($arr);
    // output: 7
    echo $arr[0] . "\n";
    // output: 7
    // ----------------------------
    // Since, 'add_vecpair', does not attempt to alter either, '$x' or '$y', it makes
    // no difference whether they are 'passed by value', or 'passed by reference'
    function add_vecpair($x, $y)
    {
        $r = array();
        $length = count($x);
        for ($i = 0; $i < $length; $i++) {
            $r[$i] = $x[$i] + $y[$i];
        }
        return $r;
    }
    // ...
    count($arr1) == count($arr2) || die("usage: add_vecpair ARR1 ARR2\n");
    // 'passed by value'
    $arr3 = add_vecpair($arr1, $arr2);
    // 'passed by reference' [also possible to override default 'passed by value'
    // if required]
    $arr3 = add_vecpair(&$arr1, &$arr2);
}
Пример #13
0
 /**
  * @covers LightnCandy\Runtime::bch
  */
 public function testOn_bch()
 {
     $method = new \ReflectionMethod('LightnCandy\\Runtime', 'bch');
     $this->assertEquals('4.2.3', $method->invokeArgs(null, array_by_ref(array(array('blockhelpers' => array('a' => function ($cx) {
         return array($cx, 2, 3);
     })), 'a', array(0, 0), 4, false, function ($cx, $i) {
         return implode('.', $i);
     }))));
     $this->assertEquals('2.6.5', $method->invokeArgs(null, array_by_ref(array(array('blockhelpers' => array('a' => function ($cx, $in) {
         return array($cx, $in[0], 5);
     })), 'a', array('6', 0), 2, false, function ($cx, $i) {
         return implode('.', $i);
     }))));
     $this->assertEquals('', $method->invokeArgs(null, array_by_ref(array(array('blockhelpers' => array('a' => function ($cx, $in) {
     })), 'a', array('6', 0), 2, false, function ($cx, $i) {
         return implode('.', $i);
     }))));
 }
Пример #14
0
 /**
  * @covers LightnCandy\Parser::analyze
  */
 public function testOn_analyze()
 {
     $method = new \ReflectionMethod('LightnCandy\\Parser', 'analyze');
     $method->setAccessible(true);
     $this->assertEquals(array('foo', 'bar'), $method->invokeArgs(null, array_by_ref(array('foo bar', array('flags' => array('advar' => 1))))));
     $this->assertEquals(array('foo', "'bar'"), $method->invokeArgs(null, array_by_ref(array("foo 'bar'", array('flags' => array('advar' => 1))))));
     $this->assertEquals(array('[fo o]', '"bar"'), $method->invokeArgs(null, array_by_ref(array('[fo o] "bar"', array('flags' => array('advar' => 1))))));
     $this->assertEquals(array('fo=123', 'bar="45', '6"'), $method->invokeArgs(null, array_by_ref(array('fo=123 bar="45 6"', array('flags' => array('advar' => 0))))));
     $this->assertEquals(array('fo=123', 'bar="45 6"'), $method->invokeArgs(null, array_by_ref(array('fo=123 bar="45 6"', array('flags' => array('advar' => 1))))));
     $this->assertEquals(array('[fo', 'o]=123'), $method->invokeArgs(null, array_by_ref(array('[fo o]=123', array('flags' => array('advar' => 0))))));
     $this->assertEquals(array('[fo o]=123'), $method->invokeArgs(null, array_by_ref(array('[fo o]=123', array('flags' => array('advar' => 1))))));
     $this->assertEquals(array('[fo o]=123', 'bar="456"'), $method->invokeArgs(null, array_by_ref(array('[fo o]=123 bar="456"', array('flags' => array('advar' => 1))))));
     $this->assertEquals(array('[fo o]="1 2 3"'), $method->invokeArgs(null, array_by_ref(array('[fo o]="1 2 3"', array('flags' => array('advar' => 1))))));
 }
Пример #15
0
 /**
  * @covers LightnCandy\Runtime::wi
  */
 public function testOn_wi()
 {
     $method = new \ReflectionMethod('LightnCandy\\Runtime', 'wi');
     $this->assertEquals('', $method->invokeArgs(null, array_by_ref(array(array(), false, null, false, function () {
         return 'A';
     }))));
     $this->assertEquals('', $method->invokeArgs(null, array_by_ref(array(array(), null, null, null, function () {
         return 'A';
     }))));
     $this->assertEquals('{"a":"b"}', $method->invokeArgs(null, array_by_ref(array(array(), array('a' => 'b'), null, array('a' => 'c'), function ($c, $i) {
         return json_encode($i);
     }))));
     $this->assertEquals('-b=', $method->invokeArgs(null, array_by_ref(array(array(), 'b', null, array('a' => 'b'), function ($c, $i) {
         return "-{$i}=";
     }))));
 }