public void testRemoveRandom() { final int N_KEYS = 1000; int prime = 41; map.insertAllRo(arithmetic(0, N_KEYS, 3), apply(swap(MOD), prime)); LongArray removed = new LongArray(); for (int i = 0; i < N_KEYS / 10; ++i) { int k; while (true) { k = myRand.nextInt(N_KEYS)*3; if (!removed.contains(k)) { removed.add(k); break; } } map.remove(k); checkMapValuesEqualKeysMod(prime); } }
public LongIterable get(LongArray ... arrays) { LongArray expected = new LongArray(); for (int i = 0; i < arrays[0].size(); i++) { boolean exist = true; long value = arrays[0].get(i); for (int j = 1; j < arrays.length && exist; j++) { if (isSorted) { if (arrays[j].binarySearch(value) < 0) exist = false; } else { if (!arrays[j].contains(value)) exist = false; } } if (exist) expected.add(value); } expected.sortUnique(); return expected; } }
public void testRemoveAllRandom() { final int N_KEYS = 3000; final int N_REMOVED_STEP = 20; final int N_TRIALS = 100; final int PRIME = 41; LongArray alreadyRemoved = new LongArray(); map.insertAllRo(LongProgression.arithmetic(0, N_KEYS), apply(swap(MOD), PRIME)); for (int i = 0; i < N_TRIALS; ++i) { LongArray toRemove = new LongArray(N_REMOVED_STEP); for (int j = 0; j < N_REMOVED_STEP; ++j) toRemove.add(myRand.nextInt(N_KEYS)); LongList notInMap = map.removeAll(toRemove); for (int j = 0; j < notInMap.size(); ++j) assertTrue(i + " " + j, alreadyRemoved.contains(notInMap.get(j))); checkMapValuesEqualKeysMod(PRIME); alreadyRemoved.addAll(toRemove); assertFalse(map.containsAnyKeys(toRemove)); assertFalse(map.containsAnyKeys(alreadyRemoved)); } }
public void testPutRandom() { final int N_KEYS = 1000; LongArray keySet = new LongArray(N_KEYS); int prime0 = 47; for (int n = 0; n < N_KEYS; ++n) { int key = myRand.nextInt(N_KEYS); boolean hasAdded = keySet.contains(key); assertEquals(hasAdded, map.containsKey(key)); if (!hasAdded) { int value = key % prime0; long added = map.put(key, value); assertEquals(value, added); keySet.add(key); } } keySet.sort(); compare.order(keySet.toNativeArray(), map.getKeys().toNativeArray()); checkMapValuesEqualKeysMod(prime0); int[] primes = new int[] { 53, 59, 61, 67, 71 }; int oldPrime = prime0; for (int prime : primes) { for (Long key : map.getKeys().toList()) { long put = map.put(key, key % prime); assertEquals("key=" + key + " | prime=" + prime, put, key % oldPrime); } compare.order(keySet.toNativeArray(), map.getKeys().toNativeArray()); checkMapValuesEqualKeysMod(prime); oldPrime = prime; } }