@SuppressWarnings("unchecked") SerializedForm(SortedMultiset<E> multiset) { this.comparator = multiset.comparator(); int n = multiset.entrySet().size(); elements = (E[]) new Object[n]; counts = new int[n]; int i = 0; for (Entry<E> entry : multiset.entrySet()) { elements[i] = entry.getElement(); counts[i] = entry.getCount(); i++; } }
@CollectionSize.Require(SEVERAL) public void testDescendingNavigation() { List<Entry<E>> ascending = new ArrayList<>(); Iterators.addAll(ascending, sortedMultiset.entrySet().iterator()); List<Entry<E>> descending = new ArrayList<>(); Iterators.addAll(descending, sortedMultiset.descendingMultiset().entrySet().iterator()); Collections.reverse(descending); assertEquals(ascending, descending); }
private void testSubMultisetDistinctElements(SubMultisetSpec spec) { List<Entry<E>> entries = copyToList(sortedMultiset.entrySet()); for (int i = 0; i < entries.size(); i++) { List<Entry<E>> expected = spec.expectedEntries(i, entries); SortedMultiset<E> subMultiset = spec.subMultiset(sortedMultiset, entries, i); assertEquals(expected.size(), subMultiset.entrySet().size()); assertEquals(expected.size(), subMultiset.elementSet().size()); } }
@Override public Iterator<E> iterator() { return Multisets.elementIterator(multiset().entrySet().iterator()); }
public void testEmptyRangeSubMultiset(SortedMultiset<E> multiset) { assertTrue(multiset.isEmpty()); assertEquals(0, multiset.size()); assertEquals(0, multiset.toArray().length); assertTrue(multiset.entrySet().isEmpty()); assertFalse(multiset.iterator().hasNext()); assertEquals(0, multiset.entrySet().size()); assertEquals(0, multiset.entrySet().toArray().length); assertFalse(multiset.entrySet().iterator().hasNext()); }
private void testSubMultisetEntrySet(SubMultisetSpec spec) { List<Entry<E>> entries = copyToList(sortedMultiset.entrySet()); for (int i = 0; i < entries.size(); i++) { List<Entry<E>> expected = spec.expectedEntries(i, entries); SortedMultiset<E> subMultiset = spec.subMultiset(sortedMultiset, entries, i); assertEquals(expected, copyToList(subMultiset.entrySet())); } }
/** * A sensible definition of {@link #pollLastEntry()} in terms of {@code * descendingMultiset().entrySet().iterator()}. * * <p>If you override {@link #descendingMultiset()} or {@link #entrySet()}, you may wish to * override {@link #pollLastEntry()} to forward to this implementation. */ protected Entry<E> standardPollLastEntry() { Iterator<Entry<E>> entryIterator = descendingMultiset().entrySet().iterator(); if (!entryIterator.hasNext()) { return null; } Entry<E> entry = entryIterator.next(); entry = Multisets.immutableEntry(entry.getElement(), entry.getCount()); entryIterator.remove(); return entry; }
@CollectionSize.Require(SEVERAL) @CollectionFeature.Require(SUPPORTS_REMOVE) public void testClearTailClosedEntrySet() { List<Entry<E>> expected = copyToList(sortedMultiset.headMultiset(b.getElement(), OPEN).entrySet()); sortedMultiset.tailMultiset(b.getElement(), CLOSED).entrySet().clear(); assertEquals(expected, copyToList(sortedMultiset.entrySet())); }
@CollectionSize.Require(SEVERAL) @CollectionFeature.Require(SUPPORTS_REMOVE) public void testClearHeadClosedEntrySet() { List<Entry<E>> expected = copyToList(sortedMultiset.tailMultiset(b.getElement(), OPEN).entrySet()); sortedMultiset.headMultiset(b.getElement(), CLOSED).entrySet().clear(); assertEquals(expected, copyToList(sortedMultiset.entrySet())); } }
/** * A sensible definition of {@link #lastEntry()} in terms of {@code * descendingMultiset().entrySet().iterator()}. * * <p>If you override {@link #descendingMultiset} or {@link #entrySet()}, you may wish to override * {@link #firstEntry()} to forward to this implementation. */ protected Entry<E> standardLastEntry() { Iterator<Entry<E>> entryIterator = descendingMultiset().entrySet().iterator(); if (!entryIterator.hasNext()) { return null; } Entry<E> entry = entryIterator.next(); return Multisets.immutableEntry(entry.getElement(), entry.getCount()); }
@CollectionSize.Require(SEVERAL) @CollectionFeature.Require(SUPPORTS_REMOVE) public void testClearTailOpenEntrySet() { List<Entry<E>> expected = copyToList(sortedMultiset.headMultiset(b.getElement(), CLOSED).entrySet()); sortedMultiset.tailMultiset(b.getElement(), OPEN).entrySet().clear(); assertEquals(expected, copyToList(sortedMultiset.entrySet())); }
@CollectionSize.Require(SEVERAL) @CollectionFeature.Require(SUPPORTS_REMOVE) public void testClearHeadOpenEntrySet() { List<Entry<E>> expected = copyToList(sortedMultiset.tailMultiset(b.getElement(), CLOSED).entrySet()); sortedMultiset.headMultiset(b.getElement(), OPEN).entrySet().clear(); assertEquals(expected, copyToList(sortedMultiset.entrySet())); }
@Override Iterator<Entry<E>> entryIterator() { return backingMultiset.descendingMultiset().entrySet().iterator(); } };
@SuppressWarnings("unchecked") @CollectionFeature.Require(SUPPORTS_REMOVE) @CollectionSize.Require(SEVERAL) public void testPollLast() { assertEquals(c, sortedMultiset.pollLastEntry()); assertEquals(Arrays.asList(a, b), copyToList(sortedMultiset.entrySet())); }
@SuppressWarnings("unchecked") @CollectionFeature.Require(SUPPORTS_REMOVE) @CollectionSize.Require(SEVERAL) public void testPollFirst() { assertEquals(a, sortedMultiset.pollFirstEntry()); assertEquals(Arrays.asList(b, c), copyToList(sortedMultiset.entrySet())); }
private void testSubMultisetSize(SubMultisetSpec spec) { List<Entry<E>> entries = copyToList(sortedMultiset.entrySet()); for (int i = 0; i < entries.size(); i++) { List<Entry<E>> expected = spec.expectedEntries(i, entries); SortedMultiset<E> subMultiset = spec.subMultiset(sortedMultiset, entries, i); assertEquals(totalSize(expected), subMultiset.size()); } }
@CollectionSize.Require(SEVERAL) @CollectionFeature.Require(SUPPORTS_REMOVE) public void testClearHeadClosed() { List<Entry<E>> expected = copyToList(sortedMultiset.tailMultiset(b.getElement(), OPEN).entrySet()); sortedMultiset.headMultiset(b.getElement(), CLOSED).clear(); assertEquals(expected, copyToList(sortedMultiset.entrySet())); }
@CollectionSize.Require(SEVERAL) @CollectionFeature.Require(SUPPORTS_REMOVE) public void testClearTailOpen() { List<Entry<E>> expected = copyToList(sortedMultiset.headMultiset(b.getElement(), CLOSED).entrySet()); sortedMultiset.tailMultiset(b.getElement(), OPEN).clear(); assertEquals(expected, copyToList(sortedMultiset.entrySet())); }
@CollectionSize.Require(SEVERAL) @CollectionFeature.Require(SUPPORTS_REMOVE) public void testClearTailClosed() { List<Entry<E>> expected = copyToList(sortedMultiset.headMultiset(b.getElement(), OPEN).entrySet()); sortedMultiset.tailMultiset(b.getElement(), CLOSED).clear(); assertEquals(expected, copyToList(sortedMultiset.entrySet())); }
@CollectionSize.Require(SEVERAL) @CollectionFeature.Require(SUPPORTS_REMOVE) public void testClearHeadOpen() { List<Entry<E>> expected = copyToList(sortedMultiset.tailMultiset(b.getElement(), CLOSED).entrySet()); sortedMultiset.headMultiset(b.getElement(), OPEN).clear(); assertEquals(expected, copyToList(sortedMultiset.entrySet())); }