/** * Test {@link DataObjectSet->parseQueryLimit()} */ function testParseQueryLimit() { // Create empty objects, because they don't need to have contents $sql = new SQLQuery('*', '"Member"'); $max = $sql->unlimitedRowCount(); $set = new DataObjectSet(); // Test handling an array $set->parseQueryLimit($sql->limit(array('limit' => 5, 'start' => 2))); $expected = array('pageStart' => 2, 'pageLength' => 5, 'totalSize' => $max); $this->assertEquals($expected, $set->getPageLimits(), 'The page limits match expected values.'); // Test handling OFFSET string // uppercase $set->parseQueryLimit($sql->limit('3 OFFSET 1')); $expected = array('pageStart' => 1, 'pageLength' => 3, 'totalSize' => $max); $this->assertEquals($expected, $set->getPageLimits(), 'The page limits match expected values.'); // and lowercase $set->parseQueryLimit($sql->limit('32 offset 3')); $expected = array('pageStart' => 3, 'pageLength' => 32, 'totalSize' => $max); $this->assertEquals($expected, $set->getPageLimits(), 'The page limits match expected values.'); // Finally check MySQL LIMIT syntax $set->parseQueryLimit($sql->limit('7, 7')); $expected = array('pageStart' => 7, 'pageLength' => 7, 'totalSize' => $max); $this->assertEquals($expected, $set->getPageLimits(), 'The page limits match expected values.'); }