public function testAssemble()
 {
     $clause = new OrderByClause();
     $clause->addField((new FieldExpression())->setField('first'));
     $this->assertEquals('ORDER BY first', QueryAssembler::stringify($clause));
     $clause->clearFields();
     $clause->addField((new FieldExpression())->setField('first'), 'ASC');
     $this->assertEquals('ORDER BY first ASC', QueryAssembler::stringify($clause));
     $clause->clearFields();
     $clause->addField((new FieldExpression())->setField('first'), 'DESC');
     $this->assertEquals('ORDER BY first DESC', QueryAssembler::stringify($clause));
     $clause->addField((new FieldExpression())->setField('second'), 'ASC');
     $this->assertEquals('ORDER BY first DESC, second ASC', QueryAssembler::stringify($clause));
     $clause->addField('third', 'DESC');
     $this->assertEquals('ORDER BY first DESC, second ASC, third DESC', QueryAssembler::stringify($clause));
     $clause->addField(CustomSelectExpression::create('DATE(`test`)'));
     $this->assertEquals('ORDER BY first DESC, second ASC, third DESC, DATE(`test`)', QueryAssembler::stringify($clause));
 }
 public function assembleCustomSelect(CustomSelectExpression $expr)
 {
     return $this->assembleSegment($expr->getField()) . ($expr->hasAlias() ? ' AS ' . $this->escapeField($expr->getAlias()) : '');
 }
 public function testCustomSelectExpression()
 {
     $this->assertEquals('MY_CUSTOM_FUNCTION(doodads,foobar) AS custom', QueryAssembler::stringify(CustomSelectExpression::createWithAlias('MY_CUSTOM_FUNCTION(doodads,foobar)', 'custom')));
 }