@Override public List<LongIterator> get(final long... values) { List<LongIterator> res = new ArrayList<LongIterator>(); res.add(new LongConcatIterator(new LongNativeArrayIterator(values))); res.add(new LongConcatIterator(Arrays.<LongIterable>asList(new LongNativeArrayIterator(values)))); res.add(new LongConcatIterator(LongIterator.EMPTY, new LongNativeArrayIterator(values))); res.add(new LongConcatIterator(new LongNativeArrayIterator(values), LongIterator.EMPTY)); if (values.length < 2) return res; LongArray array = new LongArray(values); int size = values.length; res.add(new LongConcatIterator(array.subList(0, size / 2), array.subList(size / 2, size))); res.add(new LongConcatIterator(array.subList(0, size / 2), LongIterator.EMPTY, array.subList(size / 2, size))); if (values.length < 3) return res; int s31 = size / 3, s32 = s31 * 2; res.add(new LongConcatIterator(array.subList(0, s31), array.subList(s31, s32), array.subList(s32, size))); return res; } });
public void testRemoveAndResize() { int[] capacities = {16, 32, 64, 128, 256}; int maxVal = 100000; int attempts = 20; for (int capacity : capacities) { for (int attempt = 0; attempt < attempts; attempt++) { set = new LongOpenHashSet(capacity); int threshold = set.getThreshold(); LongArray values = generateRandomLongArray(capacity * 2, SORTED_UNIQUE, maxVal); int th1 = threshold / 2; set.addAll(values.subList(0, threshold)); assertEquals(threshold, set.getThreshold()); assertEquals(threshold, set.size()); checkSet(set, values.subList(0, threshold)); set.removeAll(values.subList(0, th1)); checkSet(set, values.subList(th1, threshold)); int th2 = threshold * 2; set.addAll(values.subList(threshold, th2)); checkSet(set, values.subList(th1, th2)); } } } }
public void testRemoveAndResize() { int[] capacities = {16, 32, 64, 128, 256}; int maxVal = 100000; int attempts = 20; for (int capacity : capacities) { for (int attempt = 0; attempt < attempts; attempt++) { set = new LongChainHashSet(capacity); int threshold = set.getThreshold(); LongArray values = generateRandomLongArray(capacity * 2, SORTED_UNIQUE, maxVal); int th1 = threshold / 2; set.addAll(values.subList(0, threshold)); assertEquals(threshold, set.getThreshold()); assertEquals(threshold, set.size()); checkSet(set, values.subList(0, threshold)); set.removeAll(values.subList(0, th1)); checkSet(set, values.subList(th1, threshold)); int th2 = threshold * 2; set.addAll(values.subList(threshold, th2)); checkSet(set, values.subList(th1, th2)); } } } }
public void testToSortedSimple() { int arrLength = 10; LongArray arr = new LongArray(LongProgression.arithmetic(0, arrLength, 1)); arr.add(arrLength++); for (int i = 0; i < arrLength; i++) { LongList expected = arr.subList(i, arr.size()); for (boolean uniqueStatus: new boolean[]{false, true}) { LongList actual = LongCollections.toSorted(uniqueStatus, arr.subList(i, arr.size()).iterator()); CHECK.order(actual, expected); actual = LongCollections.toSorted(uniqueStatus, arr.subList(i, arr.size())); CHECK.order(actual, expected); } } }
public void checkToBoundedString(String expected, int lim, LongArray array) { WritableLongSet set = LongTreeSet.createFromSortedUnique(array); LongIterable[] iterables = {array, set, array.iterator(), set.iterator(), LongIterators.unionIterator(array, array.subList(0, 1))}; for (LongIterable iterable : iterables) { assertEquals(iterable.toString(), expected, LongCollections.toBoundedString(iterable, lim)); } }
public void testAddAll2() { int attempts = 20; int addCount = 100, maxVal = Integer.MAX_VALUE; set = new LongAmortizedSet(); for (int attempt = 0; attempt < attempts; attempt++) { if (attempt % 3 == 0) set = new LongAmortizedSet(); set.clear(); LongArray expected = generateRandomLongArray(addCount, UNORDERED, maxVal); int size2 = expected.size() / 2; set.addAll(expected.subList(0, size2)); if (attempt % 2 == 0) { set.coalesce(); } set.addAll(expected.subList(size2, expected.size())); expected.sortUnique(); checkSet(set, expected); } }
public void testEquals2() { int attemptsCount = 20; int maxVal = 10; int mapSize = 200; for (int attempt = 0; attempt < attemptsCount; attempt++) { LongArray keys = generateRandomLongArray(mapSize, SORTED_UNIQUE); IntArray values = generateRandomIntArray(keys.size(), UNORDERED, maxVal); for (T map0 : createMapsFromLists(keys, values)) { assertTrue(map0.equals(map0)); assertFalse(map0.equals(null)); assertFalse(map0.equals(LongIntMap.EMPTY)); assertTrue(map0.equals(map0)); T expected = createMap(); expected.putAllKeys(keys.subList(0, keys.size() - 1), values); expected.put(keys.getLast(0), values.getLast(0) != 0 ? 0 : 1); assertFalse(map0.equals(expected)); for (T map1 : createMapsFromLists(keys, values)) { assertEquals(map1, map0); } } } } }
public void checkToNativeArray(LongArray array) { long[] expected = array.toNativeArray(); LongSet set = LongTreeSet.createFromSortedUnique(array); LongIterable[] iterables = {array, set, array.iterator(), set.iterator(), LongIterators.unionIterator(array, array.isEmpty() ? LongIterator.EMPTY : array.subList(0, 1))}; for (LongIterable iterable: iterables) { CHECK.order(expected, LongCollections.toNativeArray(iterable)); } }
public void testToNativeArray2() { for (T set : createSets(LongProgression.range(20, 40))) { long[] ar = new long[40]; set.toNativeArray(ar, 3); LongArray actual = new LongArray(new LongArray(ar).subList(3, 23)); LongList expected = LongProgression.range(20, 40); CHECK.unordered(actual, expected); set.removeAll(LongIterators.range(20, 40, 2)); set.toNativeArray(ar, 4); expected = LongProgression.range(21, 40, 2); actual = new LongArray(new LongArray(ar).subList(4, 4 + expected.size())); CHECK.unordered(actual, expected); } }
public void testAsList() { int attemptsCount = 10; int count = 10; for (int attempt = 0; attempt < attemptsCount; attempt++) { LongArray values = generateRandomLongArray(count, SORTED_UNIQUE); for (LongAmortizedSet aSet : createSets(values)) { CHECK.order(values, aSet.asList()); aSet.remove(values.getLast(0)); CHECK.order(values.subList(0, values.size() - 1), aSet.asList()); } } } }
long[] ar = new long[40]; curSet.toNativeArray(ar, 3); LongArray actual = new LongArray(new LongArray(ar).subList(3, 23)); LongList expected = LongProgression.range(20, 40); CHECK.unordered(actual, expected); curSet.toNativeArray(ar, 4); LongList expected = LongProgression.range(21, 40, 2); LongArray actual = new LongArray(new LongArray(ar).subList(4, 4 + expected.size())); CHECK.unordered(actual, expected);
public void testEquals() { int size = 100; int attemptsCount = 10; for (int attempt = 0; attempt < attemptsCount; attempt++) { LongArray array = generateRandomLongArray(size, SORTED_UNIQUE); // suppose array == [0, 1, 2, ... , size-1] if (array.equalSortedUniqueValues(range(size))) continue; long lastElem = array.getLast(0); LongList list = LongCollections.concatLists(array.subList(0, array.size() - 1), new LongList.Single(lastElem + 1)); for (T set0 : createSets(array)) { assertTrue(set0.equals(set0)); assertFalse(set0.equals(null)); assertFalse(set0.equals(LongSet.EMPTY)); assertFalse(set0.equals(setFromSortedUniqueList(list))); for (T set1 : createSets(array)) { assertTrue(set0.equals(set1)); assertTrue(set1.equals(set0)); } } } }