public function testReturnValues()
{
$this->assertReturn(function () {
return 1;
}, O\Expression::value(1));
$this->assertReturn(function () {
return 2;
}, O\Expression::value(2));
$this->assertReturn(function () {
return '1';
}, O\Expression::value('1'));
$this->assertReturn(function () {
return 1.01;
}, O\Expression::value(1.01));
$this->assertReturn(function () {
return true;
}, O\Expression::constant('true'));
$this->assertReturn(function () {
return null;
}, O\Expression::constant('null'));
$this->assertReturn(function () {
return [1, 5, 57, 4 => 3, 'tset' => 'ftest', true => &$foo];
}, O\Expression::arrayExpression([O\Expression::arrayItem(null, O\Expression::value(1), false), O\Expression::arrayItem(null, O\Expression::value(5), false), O\Expression::arrayItem(null, O\Expression::value(57), false), O\Expression::arrayItem(O\Expression::value(4), O\Expression::value(3), false), O\Expression::arrayItem(O\Expression::value('tset'), O\Expression::value('ftest'), false), O\Expression::arrayItem(O\Expression::constant('true'), O\Expression::variable(O\Expression::value('foo')), true)]));
$this->assertReturn(function () {
return new \stdClass();
}, O\Expression::newExpression(O\Expression::value('\\stdClass')));
}