public function test_sort() { saveWikiText('title1', 'test', 'test'); $title = new Title('title1'); $title->setTitle('This is a title'); saveWikiText('title2', 'test', 'test'); $title = new Title('title2'); $title->setTitle('This is a title'); saveWikiText('title3', 'test', 'test'); $title = new Title('title3'); $title->setTitle('Another Title'); $this->loadSchemaJSON('pageschema'); $this->saveData('test1', 'pageschema', array('singletitle' => 'title1')); $this->saveData('test2', 'pageschema', array('singletitle' => 'title2')); $this->saveData('test3', 'pageschema', array('singletitle' => 'title3')); $search = new Search(); $search->addSchema('pageschema'); $search->addColumn('%pageid%'); $search->addColumn('singletitle'); $search->addSort('singletitle', true); /** @var Value[][] $result */ $result = $search->execute(); $this->assertEquals(3, count($result)); $this->assertEquals('test3', $result[0][0]->getValue()); $this->assertEquals('test1', $result[1][0]->getValue()); $this->assertEquals('test2', $result[2][0]->getValue()); }
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()); }
public function test_filter() { $this->loadSchemaJSON('decimal'); $this->waitForTick(); $this->saveData('page1', 'decimal', array('field' => '5000')); $this->saveData('page2', 'decimal', array('field' => '5000.001')); $this->saveData('page3', 'decimal', array('field' => '900.5')); $this->saveData('page4', 'decimal', array('field' => '1.5')); $search = new Search(); $search->addSchema('decimal'); $search->addColumn('%pageid%'); $search->addColumn('field'); $search->addFilter('field', '800', '>', 'AND'); $search->addSort('field', true); /** @var Value[][] $result */ $result = $search->execute(); $this->assertEquals(3, count($result)); $this->assertEquals('page3', $result[0][0]->getValue()); $this->assertEquals('page1', $result[1][0]->getValue()); $this->assertEquals('page2', $result[2][0]->getValue()); }