Search in sources :

Example 1 with Random

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

Example 2 with Random

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

Example 3 with Random

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

Example 4 with Random

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]);
    }
}
Also used : CountDownLatch(java.util.concurrent.CountDownLatch) java.util(java.util) Random(jetbrains.exodus.util.Random) Test(org.junit.Test) Assert(org.junit.Assert) ObjectProcedure(jetbrains.exodus.core.dataStructures.hash.ObjectProcedure) Random(jetbrains.exodus.util.Random) Test(org.junit.Test)

Example 5 with Random

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);
    }
}
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