FSUtils.delTree(new File(PATH2));
DiskIndexWriter index = new DiskIndexWriter(PATH2, 4, COMPRESSED, MAX_BLOCK_FILE_SIZE);
index.writeIndex(getBufferIterator(testMap.entrySet().iterator()));
// read the disk index
DiskIndex diskIndex = new DiskIndex(PATH2, DefaultByteRangeComparator.getInstance(), COMPRESSED,
MMAPED);
// create an iterator w/ matching start and end buffers
Iterator<Entry<byte[], byte[]>> it = diskIndex.rangeLookup("brabbel".getBytes(), "yagga".getBytes(),
false);
assertIterator(it, keys, vals, 5, 2);
// create an iterator with matching start buffer
it = diskIndex.rangeLookup("brabbel".getBytes(), "g".getBytes(), false);
assertIterator(it, keys, vals, 2, 2);
// create an iterator with matching end buffer
it = diskIndex.rangeLookup("b".getBytes(), "brabbel".getBytes(), false);
assertIterator(it, keys, vals, 1, 0);
// create an iterator w/o matching start and end buffers
it = diskIndex.rangeLookup("blu".getBytes(), "yyz".getBytes(), false);
assertIterator(it, keys, vals, 6, 1);
// check ranges outside the boundaries; should be empty
it = diskIndex.rangeLookup("A".getBytes(), "Z".getBytes(), false);
assertFalse(it.hasNext());
it = diskIndex.rangeLookup("1".getBytes(), "2".getBytes(), false);
assertFalse(it.hasNext());
diskIndex.destroy();
// create a disk index from an empty index file
FSUtils.delTree(new File(PATH1));
index = new DiskIndexWriter(PATH1, 4, COMPRESSED, MAX_BLOCK_FILE_SIZE);
index.writeIndex(EMPTY_RESULT_SET);
diskIndex = new DiskIndex(PATH1, new DefaultByteRangeComparator(), COMPRESSED, MMAPED);
// check ranges; should all be empty
it = diskIndex.rangeLookup(new byte[0], new byte[0], false);
assertFalse(it.hasNext());
it = diskIndex.rangeLookup(null, null, false);
assertFalse(it.hasNext());
it = diskIndex.rangeLookup("b".getBytes(), null, false);
assertFalse(it.hasNext());
it = diskIndex.rangeLookup(null, "x".getBytes(), false);
assertFalse(it.hasNext());
it = diskIndex.rangeLookup("b".getBytes(), "x".getBytes(), false);
assertFalse(it.hasNext());
diskIndex.destroy();
}