/**
* @inheritDoc
*/
public function testSelectOrderBy()
{
$query = new Query($this->connection);
$result = $query->select(['id'])->from('articles')->order(['id' => 'desc'])->execute();
$this->assertEquals(['id' => 3], $result->fetch('assoc'));
$this->assertEquals(['id' => 2], $result->fetch('assoc'));
$this->assertEquals(['id' => 1], $result->fetch('assoc'));
$result = $query->order(['id' => 'asc'])->execute();
$this->assertEquals(['id' => 1], $result->fetch('assoc'));
$this->assertEquals(['id' => 2], $result->fetch('assoc'));
$this->assertEquals(['id' => 3], $result->fetch('assoc'));
$result = $query->order(['title' => 'asc'])->execute();
$this->assertEquals(['id' => 1], $result->fetch('assoc'));
$this->assertEquals(['id' => 2], $result->fetch('assoc'));
$this->assertEquals(['id' => 3], $result->fetch('assoc'));
$result = $query->order(['title' => 'asc'], true)->execute();
$this->assertEquals(['id' => 1], $result->fetch('assoc'));
$this->assertEquals(['id' => 2], $result->fetch('assoc'));
$this->assertEquals(['id' => 3], $result->fetch('assoc'));
$result = $query->order(['title' => 'asc', 'published' => 'asc'], true)->execute();
$this->assertEquals(['id' => 1], $result->fetch('assoc'));
$this->assertEquals(['id' => 2], $result->fetch('assoc'));
$this->assertEquals(['id' => 3], $result->fetch('assoc'));
$driver = $query->connection()->driver();
$idField = $driver->quoteIfAutoQuote('id');
$expression = $query->newExpr(["MOD(({$idField} + :offset), 2)"]);
$result = $query->order([$expression, 'id' => 'desc'], true)->bind(':offset', 1, null)->execute();
$this->assertEquals(['id' => 3], $result->fetch('assoc'));
$this->assertEquals(['id' => 1], $result->fetch('assoc'));
$this->assertEquals(['id' => 2], $result->fetch('assoc'));
$result = $query->order($expression, true)->order(['id' => 'asc'])->bind(':offset', 1, null)->execute();
$this->assertEquals(['id' => 1], $result->fetch('assoc'));
$this->assertEquals(['id' => 3], $result->fetch('assoc'));
$this->assertEquals(['id' => 2], $result->fetch('assoc'));
}