use of jetbrains.exodus.util.Random in project xodus by JetBrains.
the class Persistent23TreeMapTest method iterationTest.
@SuppressWarnings({ "OverlyLongMethod" })
@Test
public void iterationTest() {
Random random = new Random(8234890);
Persistent23TreeMap<Integer, String> map = new Persistent23TreeMap<>();
Persistent23TreeMap.MutableMap<Integer, String> write = map.beginWrite();
int[] p = genPermutation(random);
TreeSet<Integer> added = new TreeSet<>();
for (int i = 0; i < ENTRIES_TO_ADD; i++) {
int size = write.size();
Assert.assertEquals(i, size);
if ((size & 1023) == 0 || size < 100) {
Iterator<Integer> iterator = added.iterator();
for (Persistent23TreeMap.Entry<Integer, String> key : write) {
Assert.assertTrue(iterator.hasNext());
Integer next = iterator.next();
Assert.assertEquals(next, key.getKey());
Assert.assertEquals(String.valueOf(next), key.getValue());
}
Assert.assertFalse(iterator.hasNext());
iterator = added.iterator();
Iterator<Persistent23TreeMap.Entry<Integer, String>> treeItr = write.iterator();
for (int j = 0; j < size; j++) {
Persistent23TreeMap.Entry<Integer, String> key = treeItr.next();
Assert.assertTrue(iterator.hasNext());
Integer next = iterator.next();
Assert.assertEquals(next, key.getKey());
Assert.assertEquals(String.valueOf(next), key.getValue());
}
Assert.assertFalse(iterator.hasNext());
try {
treeItr.next();
Assert.fail();
} catch (NoSuchElementException e) {
}
Assert.assertFalse(treeItr.hasNext());
}
write.put(p[i], String.valueOf(p[i]));
added.add(p[i]);
}
}
use of jetbrains.exodus.util.Random in project xodus by JetBrains.
the class Persistent23TreeMapTest method mutableTreeRandomInsertDeleteTest.
@Test
public void mutableTreeRandomInsertDeleteTest() {
Random random = new Random(2343489);
Persistent23TreeMap<Integer, String> map = new Persistent23TreeMap<>();
checkInsertRemove(random, map, 100);
checkInsertRemove(random, map, ENTRIES_TO_ADD);
for (int i = 0; i < 100; i++) {
checkInsertRemove(random, map, 100);
}
}
use of jetbrains.exodus.util.Random in project xodus by JetBrains.
the class PersistentHashSetTest method mutableSetRandomInsertDeleteTest.
@SuppressWarnings({ "OverlyLongMethod" })
@Test
public void mutableSetRandomInsertDeleteTest() {
Random random = new Random(2343489);
PersistentHashSet.MutablePersistentHashSet<Integer> tree = new PersistentHashSet<Integer>().beginWrite();
tree.checkTip();
int[] p = genPermutation(random);
for (int i = 0; i < ENTRIES_TO_ADD; i++) {
int size = tree.size();
Assert.assertEquals(i, size);
int key = p[i];
tree.add(key);
AbstractPersistentHashSet.TableNode<Integer> root = tree.getRoot();
Assert.assertFalse(tree.isEmpty());
tree.checkTip();
tree.add(key);
Assert.assertNotSame(root, tree.getRoot());
tree.checkTip();
for (int j = 0; j <= 10; j++) {
int testKey = p[i * j / 10];
Assert.assertTrue(tree.contains(testKey));
if (i < ENTRIES_TO_ADD - 1) {
Assert.assertFalse(tree.contains(p[i + 1]));
}
}
}
p = genPermutation(random);
for (int i = 0; i < ENTRIES_TO_ADD; i++) {
int size = tree.size();
Assert.assertEquals(ENTRIES_TO_ADD - i, size);
Assert.assertFalse(tree.isEmpty());
int key = p[i];
Assert.assertTrue(tree.remove(key));
tree.checkTip();
Assert.assertFalse(tree.remove(key));
tree.checkTip();
for (int j = 0; j <= 10; j++) {
int testKey = p[i * j / 10];
Assert.assertFalse(tree.contains(testKey));
if (i < ENTRIES_TO_ADD - 1) {
Assert.assertTrue(tree.contains(p[i + 1]));
}
}
}
Assert.assertEquals(0, tree.size());
Assert.assertTrue(tree.isEmpty());
Assert.assertTrue(tree.endWrite());
}
use of jetbrains.exodus.util.Random in project xodus by JetBrains.
the class PersistentHashSetTest method forEachKeyTest.
@Test
public void forEachKeyTest() {
Random random = new Random(8234890);
PersistentHashSet.MutablePersistentHashSet<Integer> tree = new PersistentHashSet<Integer>().beginWrite();
int[] p = genPermutation(random);
HashSet<Integer> added = new HashSet<>();
for (int i = 0; i < ENTRIES_TO_ADD; i++) {
int size = tree.size();
Assert.assertEquals(i, size);
if ((size & 1023) == 0 || size < 100) {
final Collection<Integer> actual = new HashSet<>(size);
ObjectProcedure<Integer> proc = object -> {
Assert.assertFalse(actual.contains(object));
actual.add(object);
return true;
};
tree.forEachKey(proc);
Assert.assertEquals(size, actual.size());
for (Integer key : added) {
Assert.assertTrue(actual.contains(key));
}
}
tree.add(p[i]);
added.add(p[i]);
}
}
use of jetbrains.exodus.util.Random in project xodus by JetBrains.
the class PersistentLongMapTest method mutableTreeRandomInsertDeleteTest.
@Test
public void mutableTreeRandomInsertDeleteTest() {
Random random = new Random(2343489);
PersistentLongMap<String> map = createMap();
checkInsertRemove(random, map, 100);
checkInsertRemove(random, map, ENTRIES_TO_ADD);
for (int i = 0; i < 100; i++) {
checkInsertRemove(random, map, 100);
}
}
Aggregations