/** * @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'))))); }
/** * @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)))))); }
/** * @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')))); }
/** * @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))))); }
/** * @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)))); }
/** * @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')))); }
/** * @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')))); }
/** * @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')))))); }
/** * @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'))))); }
/** * @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; })))); }
/** * @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); }
/** * @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); })))); }
/** * @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)))))); }
/** * @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}="; })))); }