Esempio n. 1
0
 /**
  * Tests searching
  *
  * @param IndexGenerator $generator Index generator
  *
  * @return void
  * @dataProvider provideTestSearch
  */
 public function testSearch(IndexGenerator $generator)
 {
     $index = $generator->getIndex();
     foreach ($generator->getKeys() as $key) {
         $result = $index->search($key);
         $this->assertNotNull($result, "key: {$key}, max: {$generator->getMaximum()}," . " step: {$generator->getStepSize()}" . " length: {$generator->getIndexLength()}");
         $expected = preg_quote($generator->generateData($key));
         $this->assertRegExp("/{$expected}/", $result->getData());
     }
 }
Esempio n. 2
0
 /**
  * Test for the search complexity
  * 
  * @dataProvider provideTestComplexity
  */
 public function testComplexity(IndexGenerator $generator)
 {
     $index = $generator->getIndex();
     foreach ($index as $result) {
         $counter = new SplitCounter();
         $index->search($result->getKey());
         $counter->stopCounting();
         $this->assertComplexity($generator, $counter);
     }
 }
Esempio n. 3
0
 /**
  * @dataProvider provideTestAllValidRanges
  */
 public function testAllValidRanges(IndexGenerator $generator)
 {
     $index = $generator->getIndex();
     for ($length = 0; $length <= $generator->getIndexLength(); $length++) {
         for ($min = $generator->getMinimum(); $min + $length <= $generator->getMaximum(); $min++) {
             $range = new index\Range($min, $min + $length);
             $range->setInclusive(true);
             $foundKeys = index\IteratorUtil::toKeysArray($index->searchRange($range));
             $expectedKeys = array();
             for ($key = $range->getMin(); $key <= $range->getMax(); $key++) {
                 $expectedKeys[] = $key;
             }
             $this->assertEquals($expectedKeys, $foundKeys, "failed range[{$range->getMin()}, {$range->getMax()}] for index[{$generator->getMinimum()}, {$generator->getMaximum()}]");
         }
     }
 }
Esempio n. 4
0
 /**
  * Tests iterating with a different offset
  * 
  * @dataProvider provideTestCases
  */
 public function testOffset(IndexGenerator $generator)
 {
     $index = $generator->getIndex();
     $expectedResults = array();
     foreach ($index->getIterator() as $result) {
         $expectedResults[] = $result;
     }
     for ($offset = 0; $offset < $index->getFile()->getFileSize(); $offset++) {
         // shift $expectedResults after passing the first offset
         if (isset($expectedResults[0]) && $offset > $expectedResults[0]->getOffset()) {
             array_shift($expectedResults);
         }
         $iterator = $index->getIterator();
         if (isset($expectedResults[0]) && $offset == $expectedResults[0]->getOffset()) {
             $iterator->setOffset($offset, index\Parser::HINT_RESULT_BOUNDARY);
         } else {
             $iterator->setOffset($offset);
         }
         $results = array();
         foreach ($iterator as $result) {
             $results[] = $result;
         }
         $expectedArray = $this->toPrimitiveResultArray($expectedResults);
         $resultArray = $this->toPrimitiveResultArray($results);
         $this->assertEquals($expectedArray, $resultArray, "not equal at offset {$offset}");
     }
 }