public function testWriteDb() { $dbData = new dbDataProcessor(); $hashStep = dbWriter::HASH_STEP; $dbData->addCarrierInterval(new ipSegment(0, 1 * $hashStep), "carrier1"); $dbData->addCarrierInterval(new ipSegment(2 * $hashStep, 3 * $hashStep - 1), "carrier2"); $dbData->addCarrierInterval(new ipSegment(4 * $hashStep, 5 * $hashStep + 1), "carrier3"); $dbData->addCarrierInterval(new ipSegment(6 * $hashStep - 1, 7 * $hashStep - 1), "carrier4"); $dbData->addCarrierInterval(new ipSegment(8 * $hashStep + 1, 9 * $hashStep - 1), "carrier5"); $dbData->addCarrierInterval(new ipSegment(9 * $hashStep, 10 * $hashStep), "carrier6"); $opts = new optionsMock(); $dbStream = new dbStream(dirname(__FILE__) . "/tmp/test2.db", false); $dbWriter = new dbWriter($opts, $dbData, $dbStream); $dbWriter->writeDb(); $dbReader = new dbReader($dbStream); $dbReader->readAll(); $dbReader->checkConsistency(); $header = $dbReader->getHeader(); $this->assertEquals("DBCA", $header['header']); $this->assertEquals(dbWriter::STRUCT_VERSION, $header['structVersion']); $this->assertEquals(1, $header['buildVersion']); $this->assertTrue(time() - $header['dateTime'] < 10); // меньше 10 секунд назад $this->assertEquals(6, $header['count']); $this->assertEquals("carrier1", $dbReader->getContentByPos(0)); $this->assertEquals("carrier2", $dbReader->getContentByPos(1)); $this->assertEquals("carrier3", $dbReader->getContentByPos(2)); $this->assertEquals("carrier4", $dbReader->getContentByPos(3)); $this->assertEquals("carrier5", $dbReader->getContentByPos(4)); $this->assertEquals("carrier6", $dbReader->getContentByPos(5)); //В комментах пример для HASH_STEP = 128 $etalon = array(array(array(0, $hashStep, 20)), array(array(0, $hashStep, 20)), array(array(2 * $hashStep, 3 * $hashStep - 1, 32)), array(), array(array(4 * $hashStep, 5 * $hashStep + 1, 44)), array(array(4 * $hashStep, 5 * $hashStep + 1, 44), array(6 * $hashStep - 1, 7 * $hashStep - 1, 56)), array(array(6 * $hashStep - 1, 7 * $hashStep - 1, 56)), array(), array(array(8 * $hashStep + 1, 9 * $hashStep - 1, 68)), array(array(9 * $hashStep, 10 * $hashStep, 80)), array(array(9 * $hashStep, 10 * $hashStep, 80))); for ($i = 0; $i < count($etalon); $i++) { $this->assertEquals($etalon[$i], $dbReader->getHashListByPos($i)); } $this->assertEquals(false, $dbReader->getHashListByPos($i)); }