use of jetbrains.exodus.util.Random in project xodus by JetBrains.
the class Persistent23TreeTest method testSize.
@Test
public void testSize() {
Random random = new Random(249578);
int[] p = genPermutation(random, 10000);
final Persistent23Tree<Integer> source = new Persistent23Tree<>();
Persistent23Tree.MutableTree<Integer> tree = null;
for (int i = 0; i < p.length; i++) {
if ((i & 15) == 0) {
if (i > 0) {
tree.endWrite();
Assert.assertEquals(i, source.size());
}
tree = source.beginWrite();
}
Assert.assertEquals(i, tree.size());
tree.add(p[i]);
Assert.assertEquals(i + 1, tree.size());
for (int j = 0; j < 3; j++) {
tree.add(p[random.nextInt(i + 1)]);
Assert.assertEquals(i + 1, tree.size());
}
}
tree.endWrite();
Assert.assertEquals(p.length, source.size());
p = genPermutation(random, p.length);
tree = null;
for (int i = 0; i < p.length; i++) {
if ((i & 15) == 0) {
if (i > 0) {
tree.endWrite();
Assert.assertEquals(p.length - i, source.size());
}
tree = source.beginWrite();
}
Assert.assertEquals(p.length - i, tree.size());
tree.exclude(p[i]);
Assert.assertEquals(p.length - i - 1, tree.size());
for (int j = 0; j < 3; j++) {
tree.exclude(p[random.nextInt(i + 1)]);
Assert.assertEquals(p.length - i - 1, tree.size());
}
}
tree.endWrite();
Assert.assertEquals(0, source.size());
}
use of jetbrains.exodus.util.Random in project xodus by JetBrains.
the class Persistent23TreeTest method reverseIterationTest.
@Test
public void reverseIterationTest() {
Random random = new Random(5743);
Persistent23Tree.MutableTree<Integer> tree = new Persistent23Tree<Integer>().beginWrite();
int[] p = genPermutation(random);
TreeSet<Integer> added = new TreeSet<>();
for (int i = 0; i < ENTRIES_TO_ADD; i++) {
int size = tree.size();
Assert.assertEquals(i, size);
if ((size & 1023) == 0 || size < 100) {
Iterator<Integer> iterator = added.descendingIterator();
for (Iterator<Integer> treeItr = tree.reverseIterator(); treeItr.hasNext(); ) {
Assert.assertTrue(iterator.hasNext());
Integer key = treeItr.next();
Assert.assertEquals(iterator.next(), key);
}
Assert.assertFalse(iterator.hasNext());
iterator = added.descendingIterator();
Iterator<Integer> treeItr = tree.reverseIterator();
for (int j = 0; j < size; j++) {
Integer key = treeItr.next();
Assert.assertTrue(iterator.hasNext());
Assert.assertEquals(iterator.next(), key);
}
Assert.assertFalse(iterator.hasNext());
try {
treeItr.next();
Assert.fail();
} catch (NoSuchElementException e) {
}
Assert.assertFalse(treeItr.hasNext());
}
tree.add(p[i]);
added.add(p[i]);
}
}
use of jetbrains.exodus.util.Random in project xodus by JetBrains.
the class Persistent23TreeTest method testGetMinimumMaximum2.
@Test
public void testGetMinimumMaximum2() {
final Persistent23Tree<Integer> source = new Persistent23Tree<>();
final Persistent23Tree.MutableTree<Integer> tree = source.beginWrite();
int min = Integer.MAX_VALUE;
int max = Integer.MIN_VALUE;
Random rnd = new Random();
for (int i = 0; i < BENCHMARK_SIZE; i++) {
final Integer key = rnd.nextInt();
tree.add(key);
if (key > max) {
max = key;
}
if (key < min) {
min = key;
}
}
Assert.assertTrue(tree.endWrite());
System.gc();
System.gc();
System.gc();
System.gc();
System.gc();
System.gc();
System.gc();
System.gc();
System.gc();
System.gc();
System.out.print("Memory used: " + (Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory()));
final Persistent23Tree.ImmutableTree<Integer> current = source.beginRead();
Assert.assertEquals(min, current.getMinimum().intValue());
Assert.assertEquals(max, tree.getMaximum().intValue());
tree.testConsistency();
}
use of jetbrains.exodus.util.Random in project xodus by JetBrains.
the class Persistent23TreeTest method tailIterationTest.
@Test
public void tailIterationTest() {
Random random = new Random(239786);
Persistent23Tree.MutableTree<Integer> tree = new Persistent23Tree<Integer>().beginWrite();
int[] p = genPermutation(random);
TreeSet<Integer> added = new TreeSet<>();
for (int i = 0; i < ENTRIES_TO_ADD; i++) {
int size = tree.size();
Assert.assertEquals(i, size);
if ((size & 1023) == 0 || size < 100) {
if (i > 0) {
checkTailIteration(tree, added, added.first());
checkTailIteration(tree, added, added.first() - 1);
checkTailIteration(tree, added, added.last());
checkTailIteration(tree, added, added.last() + 1);
}
checkTailIteration(tree, added, Integer.MAX_VALUE);
checkTailIteration(tree, added, Integer.MIN_VALUE);
for (int j = 0; j < 10; j++) {
checkTailIteration(tree, added, p[i * j / 10]);
}
}
tree.add(p[i]);
added.add(p[i]);
}
}
use of jetbrains.exodus.util.Random in project xodus by JetBrains.
the class PersistentHashMapTest method mutableTreeRandomInsertDeleteTest.
@Test
public void mutableTreeRandomInsertDeleteTest() {
Random random = new Random(2343489);
PersistentHashMap<Integer, String> map = new PersistentHashMap<>();
checkInsertRemove(random, map, 100);
checkInsertRemove(random, map, ENTRIES_TO_ADD);
for (int i = 0; i < 100; i++) {
checkInsertRemove(random, map, 100);
}
}
Aggregations