public function test_ranges() { $search = new mock\Search(); $search->addSchema('schema2'); $search->addColumn('%pageid%'); $search->addColumn('afirst'); $search->addColumn('asecond'); $search->addFilter('%pageid%', '%ag%', '~', 'AND'); $search->addSort('%pageid%', false); /** @var meta\Value[][] $result */ $result = $search->execute(); $count = $search->getCount(); // check result dimensions $this->assertEquals(12, $count, 'result count'); $this->assertEquals(12, count($result), 'result rows'); $this->assertEquals(3, count($result[0]), 'result columns'); // check sorting $this->assertEquals('page20', $result[0][0]->getValue()); $this->assertEquals('page19', $result[1][0]->getValue()); $this->assertEquals('page18', $result[2][0]->getValue()); // now add limit $search->setLimit(5); $result = $search->execute(); $count = $search->getCount(); // check result dimensions $this->assertEquals(12, $count, 'result count'); // full result set $this->assertEquals(5, count($result), 'result rows'); // wanted result set // check the values $this->assertEquals('page20', $result[0][0]->getValue()); $this->assertEquals('page16', $result[4][0]->getValue()); // now add offset $search->setOffset(5); $result = $search->execute(); $count = $search->getCount(); // check result dimensions $this->assertEquals(12, $count, 'result count'); // full result set $this->assertEquals(5, count($result), 'result rows'); // wanted result set // check the values $this->assertEquals('page15', $result[0][0]->getValue()); $this->assertEquals('page11', $result[4][0]->getValue()); }