public function testCompositeOrAnd()
{
$app = $this->getApp();
$expr = $app['storage']->createExpressionBuilder();
$p = new QueryParameterParser($expr);
$filter = $p->getFilter('ownerid', '>1 && <4');
$this->assertEquals('(ownerid > :ownerid_1) AND (ownerid < :ownerid_2)', $filter->getExpression());
$this->assertEquals(['ownerid_1' => '1', 'ownerid_2' => '4'], $filter->getParameters());
$p = new QueryParameterParser($expr);
$filter = $p->getFilter('ownerid', '>1||<4');
$this->assertEquals('(ownerid > :ownerid_1) OR (ownerid < :ownerid_2)', $filter->getExpression());
$this->assertEquals(['ownerid_1' => '1', 'ownerid_2' => '4'], $filter->getParameters());
$p = new QueryParameterParser($expr);
$filter = $p->getFilter('id', '>29 && <=37');
$this->assertEquals('(id > :id_1) AND (id <= :id_2)', $filter->getExpression());
$this->assertEquals(['id_1' => '29', 'id_2' => '37'], $filter->getParameters());
$this->setExpectedException('Bolt\\Exception\\QueryParseException');
$p = new QueryParameterParser($expr);
$filter = $p->getFilter('ownerid', '>1||<4 && <56');
}