@NotNull private static LongList getPrefix(@NotNull LongList aseq, @NotNull LongList bseq, int maxsize) { int i = 0; while (i < maxsize && aseq.get(i) == bseq.get(i)) i++; return i == 0 ? LongList.EMPTY : aseq.subList(0, i); }
private static LongList getSuffix(LongList aseq, LongList bseq, int maxsize) { int i = 0; int ai = aseq.size(), bi = bseq.size(); while (i < maxsize && aseq.get(--ai) == bseq.get(--bi)) i++; return i == 0 ? LongList.EMPTY : aseq.subList(aseq.size() - i, aseq.size()); }
private void checkSetRangeAndRemoveRange(LongList values) { int size = values.size(); for (int from = 0; from < size; from++) { for(int to = from + 1; to < size; to++) { LongList valuesForSetRange = toSortedUnique(values.subList(max(0, from - 1), min(to + 1, size))); for (int val = 0; val < valuesForSetRange.size(); val++) { list = LongSameValuesList.create(values); list.setRange(from, to, val); LongList expected = concatLists(values.subList(0, from), repeat(val, to - from), values.subList(to, size)); CHECK.order(expected, list); assertEquals(getChangeCount(expected), list.getChangeCount()); } list = LongSameValuesList.create(values); list.removeRange(from, to); LongList expected = concatLists(values.subList(0, from), values.subList(to, size)); CHECK.order(expected, list); assertEquals(getChangeCount(expected), list.getChangeCount()); } } }
public void testSubSubList() { for (WritableLongList list: empty()) { for (int i = 0; i < 10000; i++) list.add(i); LongList sub = list.subList(1000, 2000); checkList(sub, ap(1000, 1000, 1)); LongList subsub = sub.subList(200, 300); checkList(subsub, ap(1200, 100, 1)); } }
public void checkCollect(LongList ... lists) { LongArray expected = new LongArray(); for (LongList array : lists) { expected.addAll(array); } CHECK.order(expected, collectLists(lists)); int attemptsCount = 5; for (int attempt = 0; attempt < attemptsCount; attempt++) { LongIterable[] iterables = new LongIterable[lists.length]; for (int i = 0; i < lists.length; i++) { switch (myRand.nextInt(3)) { case 0: iterables[i] = lists[i]; break; case 1: iterables[i] = lists[i].iterator(); break; case 2: int size2 = lists[i].size() / 2; iterables[i] = new LongConcatIterator(lists[i].subList(0, size2), lists[i].subList(size2, lists[i].size())); break; default: assert false; } } CHECK.order(expected, collectIterables(iterables)); for (int i = 0; i < iterables.length; i++) { if (iterables[i] instanceof LongIterator) { iterables[i] = lists[i].iterator(); } } CHECK.order(expected, collectIterables(expected.size(), iterables)); } }
public void checkPutIfAbsent(LongList keys) { map.clear(); for (int i = 0; i < keys.size(); i++) { long key = keys.get(i); int idx = keys.subList(0, i).indexOf(key); if (idx >= 0) { assertEquals(idx, map.get(key)); assertFalse(map.putIfAbsent(key, i)); assertEquals(idx, map.get(key)); } else { assertEquals(LongIntMap.DEFAULT_VALUE, map.get(key)); assertTrue(map.putIfAbsent(key, i)); assertEquals(i, map.get(key)); } } }