| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 | <?phpnamespace JmesPath\Tests\Tree;use JmesPath\AstRuntime;use JmesPath\TreeInterpreter;use PHPUnit\Framework\TestCase;/** * @covers JmesPath\Tree\TreeInterpreter */class TreeInterpreterTest extends TestCase{    public function testReturnsNullWhenMergingNonArray()    {        $t = new TreeInterpreter();        $this->assertNull($t->visit([            'type' => 'flatten',            'children' => [                ['type' => 'literal', 'value' => 1],                ['type' => 'literal', 'value' => 1]            ]        ], [], [            'runtime' => new AstRuntime()        ]));    }    public function testWorksWithArrayObjectAsObject()    {        $runtime = new AstRuntime();        $this->assertEquals('baz', $runtime('foo.bar', new \ArrayObject([            'foo' => new \ArrayObject(['bar' => 'baz'])        ])));    }    public function testWorksWithArrayObjectAsArray()    {        $runtime = new AstRuntime();        $this->assertEquals('baz', $runtime('foo[0].bar', new \ArrayObject([            'foo' => new \ArrayObject([new \ArrayObject(['bar' => 'baz'])])        ])));    }    public function testWorksWithArrayProjections()    {        $runtime = new AstRuntime();        $this->assertEquals(            ['baz'],            $runtime('foo[*].bar', new \ArrayObject([                'foo' => new \ArrayObject([                    new \ArrayObject([                        'bar' => 'baz'                    ])                ])            ]))        );    }    public function testWorksWithObjectProjections()    {        $runtime = new AstRuntime();        $this->assertEquals(            ['baz'],            $runtime('foo.*.bar', new \ArrayObject([                'foo' => new \ArrayObject([                    'abc' => new \ArrayObject([                        'bar' => 'baz'                    ])                ])            ]))        );    }}
 |