Exemplo n.º 1
0
 /**
  * Tests increasing the sector count on large containers
  *
  * @return void
  */
 public function testIncreaseSectorCount()
 {
     $generator = new FixedSizeIndexGenerator();
     $oldReadLength = $generator->getIndex()->getKeyReader()->getReadLength();
     $expectedFactor = 3;
     $generator->setIndexLength(100);
     $generator->setMinimumDataSize($oldReadLength * $expectedFactor);
     $index = $generator->getIndex();
     $binarySearch = new index\BinarySearch($index);
     $this->assertNotEmpty($binarySearch->search(3)->getData());
     $this->assertGreaterThanOrEqual($oldReadLength * $expectedFactor, $index->getKeyReader()->getReadLength());
 }
Exemplo n.º 2
0
 /**
  * Tests finding all keys with different index configurations 
  * 
  * @dataProvider provideTestIndexConfiguration
  */
 public function testIndexConfiguration($offset, $indexFieldLength, $length)
 {
     $generator = new FixedSizeIndexGenerator();
     $generator->setIndexFieldOffset($offset);
     $generator->setIndexFieldLength($indexFieldLength);
     $generator->setIndexLength($length);
     $index = $generator->getIndex();
     for ($key = 0; $key < $length; $key++) {
         $result = $index->search($key);
         $this->assertNotNull($result, "key: {$key}");
         $this->assertRegExp('/data_' . $key . '_.*\\$/s', $result->getData(), "key: {$key}");
     }
 }
Exemplo n.º 3
0
 /**
  * Test cases 
  */
 public function provideTestIteratorCases()
 {
     $cases = array();
     // [0,9] -> [0]
     $generator = new FixedSizeIndexGenerator();
     $generator->setIndexLength(10);
     $index = $generator->getIndex();
     $iterator = $index->getIterator();
     $iterator->setOffset($index->search(0)->getOffset(), index\Parser::HINT_RESULT_BOUNDARY);
     $iterator->setDirection(index\KeyReader::DIRECTION_BACKWARD);
     $cases[] = array($iterator, array(0));
     // [0,9] -> [1,0]
     $generator = new FixedSizeIndexGenerator();
     $generator->setIndexLength(10);
     $index = $generator->getIndex();
     $iterator = $index->getIterator();
     $iterator->setOffset($index->search(1)->getOffset(), index\Parser::HINT_RESULT_BOUNDARY);
     $iterator->setDirection(index\KeyReader::DIRECTION_BACKWARD);
     $cases[] = array($iterator, array(1, 0));
     // [0,9] -> [0]
     $generator = new FixedSizeIndexGenerator();
     $generator->setIndexLength(10);
     $index = $generator->getIndex();
     $iterator = $index->getIterator();
     $iterator->setOffset($index->search(1)->getOffset() - 1);
     $iterator->setDirection(index\KeyReader::DIRECTION_BACKWARD);
     $cases[] = array($iterator, array(0));
     // [0,9] -> [9,0]
     $generator = new FixedSizeIndexGenerator();
     $generator->setIndexLength(10);
     $index = $generator->getIndex();
     $iterator = $index->getIterator();
     $iterator->setOffset($index->search(9)->getOffset(), index\Parser::HINT_RESULT_BOUNDARY);
     $iterator->setDirection(index\KeyReader::DIRECTION_BACKWARD);
     $cases[] = array($iterator, array(9, 8, 7, 6, 5, 4, 3, 2, 1, 0));
     // [0,9] -> [9,0]
     $generator = new FixedSizeIndexGenerator();
     $generator->setIndexLength(10);
     $index = $generator->getIndex();
     $iterator = $index->getIterator();
     $iterator->setDirection(index\KeyReader::DIRECTION_BACKWARD);
     $cases[] = array($iterator, array(9, 8, 7, 6, 5, 4, 3, 2, 1, 0));
     // [0,9] -> [9,0]
     $generator = new FixedSizeIndexGenerator();
     $generator->setIndexLength(10);
     $index = $generator->getIndex();
     $iterator = $index->getIterator();
     $iterator->setOffset($index->search(9)->getOffset() - 1);
     $iterator->setDirection(index\KeyReader::DIRECTION_BACKWARD);
     $cases[] = array($iterator, array(8, 7, 6, 5, 4, 3, 2, 1, 0));
     // [0,9] -> [8,9]
     $generator = new FixedSizeIndexGenerator();
     $generator->setIndexLength(10);
     $index = $generator->getIndex();
     $iterator = $index->getIterator();
     $iterator->setOffset($index->search(8)->getOffset(), index\Parser::HINT_RESULT_BOUNDARY);
     $cases[] = array($iterator, array(8, 9));
     // [0,9] -> [9]
     $generator = new FixedSizeIndexGenerator();
     $generator->setIndexLength(10);
     $index = $generator->getIndex();
     $iterator = $index->getIterator();
     $iterator->setOffset($index->search(9)->getOffset(), index\Parser::HINT_RESULT_BOUNDARY);
     $cases[] = array($iterator, array(9));
     // [0,9] -> [9]
     $generator = new FixedSizeIndexGenerator();
     $generator->setIndexLength(10);
     $index = $generator->getIndex();
     $iterator = $index->getIterator();
     $iterator->setOffset($index->search(8)->getOffset() + 1);
     $cases[] = array($iterator, array(9));
     // [0,9] -> []
     $generator = new FixedSizeIndexGenerator();
     $generator->setIndexLength(10);
     $index = $generator->getIndex();
     $iterator = $index->getIterator();
     $iterator->setOffset($index->search(9)->getOffset() + 1);
     $cases[] = array($iterator, array());
     // [0,9] -> [0,9]
     $generator = new FixedSizeIndexGenerator();
     $generator->setIndexLength(10);
     $index = $generator->getIndex();
     $iterator = $index->getIterator();
     $cases[] = array($iterator, array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9));
     // [0,9] -> [1,9]
     $generator = new FixedSizeIndexGenerator();
     $generator->setIndexLength(10);
     $index = $generator->getIndex();
     $iterator = $index->getIterator();
     $iterator->setOffset(1);
     $cases[] = array($iterator, array(1, 2, 3, 4, 5, 6, 7, 8, 9));
     return $cases;
 }
Exemplo n.º 4
0
 /**
  * Test cases for testFailSearch()
  *
  * @return void
  */
 public function provideTestFailSearch()
 {
     $cases = array();
     // different sizes
     $lengths = array(0, 1, 10, IndexGenerator::getBlockSize() - 1, IndexGenerator::getBlockSize(), IndexGenerator::getBlockSize() + 1, IndexGenerator::getBlockSize() * 4);
     foreach ($lengths as $length) {
         // Fail searching for MIN(index) - 1
         $generator = new FixedSizeIndexGenerator();
         $generator->setIndexLength($length);
         $generator->getIndex();
         $cases[] = array($generator->getIndex(), $generator->getMinimum() - 1);
         // Fail searching for MAX(index) + 1
         $generator = new FixedSizeIndexGenerator();
         $generator->setIndexLength($length);
         $generator->getIndex();
         $cases[] = array($generator->getIndex(), $generator->getMaximum() + 1);
         // Fail searching for any missing key inside the index range
         $generator = new FixedSizeIndexGenerator();
         $generator->setIndexLength($length);
         $generator->setStepSize(2);
         $generator->getIndex();
         $cases[] = array($generator->getIndex(), $generator->getMaximum() / 2 + 0.1);
     }
     return $cases;
 }