value3 = nextValue();
applyBasicOps(key1, value1, key2, value2, key3, value3);
}
protected void applyBasicOps(byte[] key1, byte[] value1, byte[] key2, byte[] value2, byte[] key3, byte[] value3) {
DataStoreHandler h = createDataStoreHandler();
byte[] data;
byte[] data1 = h.assemble(key1, value1);
byte[] data2 = h.assemble(key1, value1, null);
assertTrue(Arrays.equals(data1, data2));
data2 = h.assemble(key1, value1, new byte[0]);
assertTrue(Arrays.equals(data1, data2));
data = h.assemble(key1, value1);
assertTrue(Arrays.equals(value1, h.extractByKey(key1, data)));
assertEquals(1, h.countCollisions(key1, data));
data = h.assemble(key2, value2, data);
assertTrue(Arrays.equals(value1, h.extractByKey(key1, data)));
assertTrue(Arrays.equals(value2, h.extractByKey(key2, data)));
assertEquals(2, h.countCollisions(key1, data));
assertEquals(2, h.countCollisions(key2, data));
data = h.assemble(key3, value3, data);
assertTrue(Arrays.equals(value1, h.extractByKey(key1, data)));
assertTrue(Arrays.equals(value2, h.extractByKey(key2, data)));
assertTrue(Arrays.equals(value3, h.extractByKey(key3, data)));
assertEquals(3, h.countCollisions(key1, data));
assertEquals(3, h.countCollisions(key2, data));
assertEquals(3, h.countCollisions(key3, data));
int newLength = h.removeByKey(key3, data);
data = Arrays.copyOf(data, newLength);
assertTrue(Arrays.equals(value1, h.extractByKey(key1, data)));
assertTrue(Arrays.equals(value2, h.extractByKey(key2, data)));
assertEquals(null, h.extractByKey(key3, data));
assertEquals(2, h.countCollisions(key1, data));
assertEquals(2, h.countCollisions(key2, data));
assertEquals(-2, h.countCollisions(key3, data));
newLength = h.removeByKey(key1, data);
data = Arrays.copyOf(data, newLength);
assertEquals(null, h.extractByKey(key1, data));
assertTrue(Arrays.equals(value2, h.extractByKey(key2, data)));
assertEquals(-1, h.countCollisions(key1, data));
assertEquals(1, h.countCollisions(key2, data));
newLength = h.removeByKey(key2, data);
data = Arrays.copyOf(data, newLength);
assertEquals(null, h.extractByKey(key1, data));
assertEquals(0, h.countCollisions(key1, data));
assertEquals(null, h.extractByKey(key2, data));
assertEquals(0, h.countCollisions(key2, data));
assertEquals(null, h.extractByKey(key3, data));
assertEquals(0, h.countCollisions(key3, data));
data1 = h.assemble(key1, value1);
data1 = h.assemble(key2, value2, data1);
data1 = h.assemble(key3, value3, data1);
List<byte[]> keys = h.extractKeys(data1);
assertEquals(3, keys.size());
List<Entry<byte[], byte[]>> entries = h.extractEntries(data1);
assertEquals(3, entries.size());
data2 = h.assembleEntries(entries);
assertTrue(Arrays.equals(data1, data2));
}