Search in sources :

Example 6 with Random

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]);
    }
}
Also used : Random(jetbrains.exodus.util.Random) Test(org.junit.Test)

Example 7 with Random

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]);
    }
}
Also used : Random(jetbrains.exodus.util.Random) Test(org.junit.Test)

Example 8 with Random

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());
}
Also used : Random(jetbrains.exodus.util.Random) Test(org.junit.Test)

Example 9 with Random

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]);
    }
}
Also used : Random(jetbrains.exodus.util.Random) Test(org.junit.Test)

Example 10 with Random

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]);
    }
}
Also used : Random(jetbrains.exodus.util.Random) Test(org.junit.Test)

Aggregations

Random (jetbrains.exodus.util.Random)31 Test (org.junit.Test)28 java.util (java.util)2 ArrayList (java.util.ArrayList)2 ObjectProcedure (jetbrains.exodus.core.dataStructures.hash.ObjectProcedure)2 Assert (org.junit.Assert)2 List (java.util.List)1 TreeSet (java.util.TreeSet)1 CountDownLatch (java.util.concurrent.CountDownLatch)1 ArrayByteIterable (jetbrains.exodus.ArrayByteIterable)1 ByteIterable (jetbrains.exodus.ByteIterable)1 ComparableSet (jetbrains.exodus.bindings.ComparableSet)1 Pair (jetbrains.exodus.core.dataStructures.Pair)1 LongHashMap (jetbrains.exodus.core.dataStructures.hash.LongHashMap)1 LongHashSet (jetbrains.exodus.core.dataStructures.hash.LongHashSet)1 Cursor (jetbrains.exodus.env.Cursor)1 Before (org.junit.Before)1