use of jetbrains.exodus.util.Random in project xodus by JetBrains.
the class PersistentLongMapTest method tailReverseIterationTest.
@Test
public void tailReverseIterationTest() {
Random random = new Random(239786);
PersistentLongMap<String> map = createMap();
PersistentLongMap.MutableMap<String> write = map.beginWrite();
long[] p = genPermutation(random);
TreeSet<Long> 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) {
if (i > 0) {
checkTailReverseIteration(write, added, added.first());
checkTailReverseIteration(write, added, added.first() - 1);
checkTailReverseIteration(write, added, added.last());
checkTailReverseIteration(write, added, added.last() + 1);
}
checkTailReverseIteration(write, added, Long.MAX_VALUE);
checkTailReverseIteration(write, added, Long.MIN_VALUE);
for (int j = 0; j < 10; j++) {
checkTailReverseIteration(write, added, p[i * j / 10]);
}
}
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 PersistentLongMapTest method tailIterationTest.
@Test
public void tailIterationTest() {
Random random = new Random(239786);
PersistentLongMap<String> map = createMap();
PersistentLongMap.MutableMap<String> write = map.beginWrite();
long[] p = genPermutation(random);
TreeSet<Long> 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) {
if (i > 0) {
checkTailIteration(write, added, added.first());
checkTailIteration(write, added, added.first() - 1);
checkTailIteration(write, added, added.last());
checkTailIteration(write, added, added.last() + 1);
}
checkTailIteration(write, added, Long.MAX_VALUE);
checkTailIteration(write, added, Long.MIN_VALUE);
for (int j = 0; j < 10; j++) {
checkTailIteration(write, added, p[i * j / 10]);
}
}
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 PersistentLongMapTest method testSize.
@Test
public void testSize() {
Random random = new Random(249578);
long[] p = genPermutation(random, ENTRIES_TO_ADD);
final PersistentLongMap<String> source = createMap();
PersistentLongMap.MutableMap<String> tree = null;
for (int i = 0; i < p.length; i++) {
if ((i & 15) == 0) {
if (i > 0) {
tree.endWrite();
Assert.assertEquals(i, source.beginRead().size());
}
tree = source.beginWrite();
}
Assert.assertEquals(i, tree.size());
tree.put(p[i], String.valueOf(p[i]));
Assert.assertEquals(i + 1, tree.size());
for (int j = 0; j < 3; j++) {
tree.put(p[random.nextInt(i + 1)], p[random.nextInt(i + 1)] + " " + i + " " + j);
Assert.assertEquals(i + 1, tree.size());
}
}
tree.endWrite();
Assert.assertEquals(p.length, source.beginRead().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.beginRead().size());
}
tree = source.beginWrite();
}
Assert.assertEquals(p.length - i, tree.size());
tree.remove(p[i]);
Assert.assertEquals(p.length - i - 1, tree.size());
for (int j = 0; j < 3; j++) {
tree.remove(p[random.nextInt(i + 1)]);
Assert.assertEquals(p.length - i - 1, tree.size());
}
}
tree.endWrite();
Assert.assertEquals(0, source.beginRead().size());
}
use of jetbrains.exodus.util.Random in project xodus by JetBrains.
the class PersistentLongMapTest method iterationTest.
@SuppressWarnings({ "OverlyLongMethod" })
@Test
public void iterationTest() {
Random random = new Random(8234890);
PersistentLongMap<String> map = createMap();
PersistentLongMap.MutableMap<String> write = map.beginWrite();
long[] p = genPermutation(random);
TreeSet<Long> 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<Long> iterator = added.iterator();
for (PersistentLongMap.Entry<String> entry : write) {
Assert.assertTrue(iterator.hasNext());
long next = iterator.next();
Assert.assertEquals(next, entry.getKey());
Assert.assertEquals(String.valueOf(next), entry.getValue());
}
Assert.assertFalse(iterator.hasNext());
boolean first = true;
iterator = added.iterator();
Iterator<PersistentLongMap.Entry<String>> treeItr = write.iterator();
for (int j = 0; j < size; j++) {
PersistentLongMap.Entry<String> key = treeItr.next();
Assert.assertTrue(iterator.hasNext());
long next = iterator.next();
if (first) {
Assert.assertEquals(new LongMapEntry<>(next, String.valueOf(next)), write.getMinimum());
first = false;
}
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 PersistentLongMapTest method reverseIterationTest.
@SuppressWarnings({ "OverlyLongMethod" })
@Test
public void reverseIterationTest() {
Random random = new Random(5743);
PersistentLongMap.MutableMap<String> tree = createMap().beginWrite();
long[] p = genPermutation(random);
TreeSet<Long> 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<Long> iterator = added.descendingIterator();
for (Iterator<PersistentLongMap.Entry<String>> treeItr = tree.reverseIterator(); treeItr.hasNext(); ) {
Assert.assertTrue(iterator.hasNext());
PersistentLongMap.Entry<String> key = treeItr.next();
long next = iterator.next();
Assert.assertEquals(next, key.getKey());
Assert.assertEquals(String.valueOf(next), key.getValue());
}
Assert.assertFalse(iterator.hasNext());
iterator = added.descendingIterator();
Iterator<PersistentLongMap.Entry<String>> treeItr = tree.reverseIterator();
for (int j = 0; j < size; j++) {
PersistentLongMap.Entry<String> key = treeItr.next();
Assert.assertTrue(iterator.hasNext());
long 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 ignored) {
}
Assert.assertFalse(treeItr.hasNext());
}
tree.put(p[i], String.valueOf(p[i]));
added.add(p[i]);
}
}
Aggregations