1*ede46466SAndreas Gohr<?php 2*ede46466SAndreas Gohr 3*ede46466SAndreas Gohrnamespace dokuwiki\test\Search\Index; 4*ede46466SAndreas Gohr 5*ede46466SAndreas Gohruse dokuwiki\Search\Index\AbstractIndex; 6*ede46466SAndreas Gohr 7*ede46466SAndreas Gohrabstract class AbstractIndexTestCase extends \DokuWikiTest 8*ede46466SAndreas Gohr{ 9*ede46466SAndreas Gohr 10*ede46466SAndreas Gohr /** 11*ede46466SAndreas Gohr * Return a new writable index 12*ede46466SAndreas Gohr * 13*ede46466SAndreas Gohr * @return AbstractIndex 14*ede46466SAndreas Gohr */ 15*ede46466SAndreas Gohr abstract protected function getIndex(); 16*ede46466SAndreas Gohr 17*ede46466SAndreas Gohr public function testGetRowID() 18*ede46466SAndreas Gohr { 19*ede46466SAndreas Gohr $index = $this->getIndex(); 20*ede46466SAndreas Gohr $result = $index->getRowID('foo'); 21*ede46466SAndreas Gohr $index->save(); 22*ede46466SAndreas Gohr $this->assertEquals(0, $result); 23*ede46466SAndreas Gohr 24*ede46466SAndreas Gohr $result = $index->getRowID('bar'); 25*ede46466SAndreas Gohr $index->save(); 26*ede46466SAndreas Gohr $this->assertEquals(1, $result); 27*ede46466SAndreas Gohr 28*ede46466SAndreas Gohr $result = $index->getRowID('foo'); 29*ede46466SAndreas Gohr $index->save(); 30*ede46466SAndreas Gohr $this->assertEquals(0, $result); 31*ede46466SAndreas Gohr } 32*ede46466SAndreas Gohr 33*ede46466SAndreas Gohr public function testGetRowIDs() 34*ede46466SAndreas Gohr { 35*ede46466SAndreas Gohr $index = $this->getIndex(); 36*ede46466SAndreas Gohr $result = $index->getRowIDs(['foo', 'bar', 'baz']); 37*ede46466SAndreas Gohr $index->save(); 38*ede46466SAndreas Gohr $this->assertEquals(['foo' => 0, 'bar' => 1, 'baz' => 2], $result); 39*ede46466SAndreas Gohr 40*ede46466SAndreas Gohr $result = $index->getRowIDs(['foo', 'bang', 'baz']); 41*ede46466SAndreas Gohr $index->save(); 42*ede46466SAndreas Gohr $this->assertEquals(['foo' => 0, 'baz' => 2, 'bang' => 3], $result); 43*ede46466SAndreas Gohr } 44*ede46466SAndreas Gohr 45*ede46466SAndreas Gohr public function testRetrieve() 46*ede46466SAndreas Gohr { 47*ede46466SAndreas Gohr $index = $this->getIndex(); 48*ede46466SAndreas Gohr $index->getRowIDs(['foo', 'bar', 'baz']); // add data 49*ede46466SAndreas Gohr $index->save(); 50*ede46466SAndreas Gohr 51*ede46466SAndreas Gohr $this->assertEquals('bar', $index->retrieveRow(1)); 52*ede46466SAndreas Gohr $this->assertEquals('', $index->retrieveRow(5)); // non existent, but will be created with padding 53*ede46466SAndreas Gohr $index->save(); 54*ede46466SAndreas Gohr 55*ede46466SAndreas Gohr // rows up to 5 exist now, 7 does not and is ignored 56*ede46466SAndreas Gohr $this->assertEquals([0 => 'foo', 2 => 'baz', 4 => ''], $index->retrieveRows([0, 2, 4, 7])); 57*ede46466SAndreas Gohr $index->save(); 58*ede46466SAndreas Gohr } 59*ede46466SAndreas Gohr 60*ede46466SAndreas Gohr public function testSearch() 61*ede46466SAndreas Gohr { 62*ede46466SAndreas Gohr $index = $this->getIndex(); 63*ede46466SAndreas Gohr $index->getRowIDs(['foo', 'bar', 'baz', 'bazzel']); 64*ede46466SAndreas Gohr $index->save(); 65*ede46466SAndreas Gohr 66*ede46466SAndreas Gohr $result = $index->search('/^ba.$/'); 67*ede46466SAndreas Gohr $this->assertEquals( 68*ede46466SAndreas Gohr [1 => 'bar', 2 => 'baz'], 69*ede46466SAndreas Gohr $result 70*ede46466SAndreas Gohr ); 71*ede46466SAndreas Gohr } 72*ede46466SAndreas Gohr 73*ede46466SAndreas Gohr public function testIterable() 74*ede46466SAndreas Gohr { 75*ede46466SAndreas Gohr $index = $this->getIndex(); 76*ede46466SAndreas Gohr $index->getRowIDs(['foo', 'bar', 'baz']); 77*ede46466SAndreas Gohr $index->save(); 78*ede46466SAndreas Gohr 79*ede46466SAndreas Gohr $result = iterator_to_array($index); 80*ede46466SAndreas Gohr $this->assertEquals([0 => 'foo', 1 => 'bar', 2 => 'baz'], $result); 81*ede46466SAndreas Gohr } 82*ede46466SAndreas Gohr} 83