11d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert/* 21d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * Copyright (C) 2009 The Guava Authors 31d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * 41d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * Licensed under the Apache License, Version 2.0 (the "License"); 51d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * you may not use this file except in compliance with the License. 61d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * You may obtain a copy of the License at 71d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * 81d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * http://www.apache.org/licenses/LICENSE-2.0 91d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * 101d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * Unless required by applicable law or agreed to in writing, software 111d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * distributed under the License is distributed on an "AS IS" BASIS, 121d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 131d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * See the License for the specific language governing permissions and 141d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * limitations under the License. 151d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */ 161d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 171d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertpackage com.google.common.collect; 181d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 191d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport com.google.common.collect.testing.SetTestSuiteBuilder; 201d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport com.google.common.collect.testing.TestStringSetGenerator; 211d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport com.google.common.collect.testing.features.CollectionFeature; 221d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport com.google.common.collect.testing.features.CollectionSize; 231d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport com.google.common.collect.testing.google.MultisetTestSuiteBuilder; 241d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport com.google.common.collect.testing.google.TestStringMultisetGenerator; 251d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 261d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport junit.framework.Test; 271d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport junit.framework.TestSuite; 281d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 291d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport java.util.Arrays; 301d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport java.util.Collection; 311d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport java.util.Collections; 321d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport java.util.Iterator; 331d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport java.util.Set; 341d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 351d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert/** 361d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * Tests for {@link ForwardingMultiset}. 371d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * 381d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * @author Hayward Chan 391d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * @author Louis Wasserman 401d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */ 411d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertpublic class ForwardingMultisetTest extends ForwardingTestCase { 421d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 431d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert static final class StandardImplForwardingMultiset<T> 441d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert extends ForwardingMultiset<T> { 451d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert private final Multiset<T> backingCollection; 461d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 471d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert StandardImplForwardingMultiset(Multiset<T> backingMultiset) { 481d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert this.backingCollection = backingMultiset; 491d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 501d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 511d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @Override protected Multiset<T> delegate() { 521d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert return backingCollection; 531d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 541d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 551d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @Override public boolean addAll(Collection<? extends T> collection) { 561d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert return standardAddAll(collection); 571d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 581d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 591d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @Override public boolean add(T element) { 601d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert return standardAdd(element); 611d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 621d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 631d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @Override public void clear() { 641d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert standardClear(); 651d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 661d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 671d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @Override public int count(Object element) { 681d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert return standardCount(element); 691d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 701d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 711d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @Override public boolean contains(Object object) { 721d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert return standardContains(object); 731d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 741d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 751d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @Override public boolean containsAll(Collection<?> collection) { 761d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert return standardContainsAll(collection); 771d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 781d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 791d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @Override public boolean remove(Object object) { 801d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert return standardRemove(object); 811d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 821d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 831d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @Override public boolean removeAll(Collection<?> collection) { 841d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert return standardRemoveAll(collection); 851d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 861d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 871d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @Override public boolean retainAll(Collection<?> collection) { 881d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert return standardRetainAll(collection); 891d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 901d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 911d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @Override public Object[] toArray() { 921d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert return standardToArray(); 931d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 941d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 951d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @Override public <T> T[] toArray(T[] array) { 961d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert return standardToArray(array); 971d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 981d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 991d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @Override public String toString() { 1001d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert return standardToString(); 1011d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1021d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1031d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @Override public boolean equals(Object object) { 1041d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert return standardEquals(object); 1051d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1061d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1071d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @Override public int hashCode() { 1081d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert return standardHashCode(); 1091d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1101d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1111d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @Override public boolean setCount(T element, int oldCount, int newCount) { 1121d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert return standardSetCount(element, oldCount, newCount); 1131d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1141d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1151d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @Override public int setCount(T element, int count) { 1161d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert return standardSetCount(element, count); 1171d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1181d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1191d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @Override public Set<T> elementSet() { 1201d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert return new StandardElementSet(); 1211d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1221d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1231d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @Override public Iterator<T> iterator() { 1241d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert return standardIterator(); 1251d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1261d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1271d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @Override public boolean isEmpty() { 1281d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert return standardIsEmpty(); 1291d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1301d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1311d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @Override public int size() { 1321d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert return standardSize(); 1331d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1341d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1351d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1361d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert private static final Collection<String> EMPTY_COLLECTION = 1371d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Collections.emptyList(); 1381d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1391d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert protected Multiset<String> forward; 1401d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1411d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public static Test suite() { 1421d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert TestSuite suite = new TestSuite(); 1431d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1441d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert suite.addTestSuite(ForwardingMultisetTest.class); 1451d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert suite.addTest( 1461d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert MultisetTestSuiteBuilder.using(new TestStringMultisetGenerator() { 1471d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1481d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @Override protected Multiset<String> create(String[] elements) { 1491d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert return new StandardImplForwardingMultiset<String>( 1501d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert LinkedHashMultiset.create(Arrays.asList(elements))); 1511d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1521d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert }).named("ForwardingMultiset[LinkedHashMultiset] with standard " 1531d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert + "implementations").withFeatures(CollectionSize.ANY, 1541d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert CollectionFeature.ALLOWS_NULL_VALUES, 1551d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert CollectionFeature.GENERAL_PURPOSE).createTestSuite()); 1561d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert suite.addTest( 1571d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert MultisetTestSuiteBuilder.using(new TestStringMultisetGenerator() { 1581d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1591d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @Override protected Multiset<String> create(String[] elements) { 1601d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert return new StandardImplForwardingMultiset<String>( 1611d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert ImmutableMultiset.copyOf(elements)); 1621d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1631d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert }).named("ForwardingMultiset[ImmutableMultiset] with standard " 1641d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert + "implementations") 1651d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .withFeatures(CollectionSize.ANY, 1661d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert CollectionFeature.ALLOWS_NULL_QUERIES) 1671d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .createTestSuite()); 1681d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert suite.addTest(SetTestSuiteBuilder.using(new TestStringSetGenerator() { 1691d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1701d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert /** 1711d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * Returns a Multiset that throws an exception on any attempt to use a 1721d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * method not specifically authorized by the elementSet() or hashCode() 1731d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * docs. 1741d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */ 1751d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @Override protected Set<String> create(String[] elements) { 1761d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert final Multiset<String> inner = 1771d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert LinkedHashMultiset.create(Arrays.asList(elements)); 1781d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert return new ForwardingMultiset<String>() { 1791d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @Override protected Multiset<String> delegate() { 1801d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert return inner; 1811d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1821d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1831d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @Override public Set<String> elementSet() { 1841d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert return new StandardElementSet(); 1851d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1861d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1871d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @Override public int add(String element, int occurrences) { 1881d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert throw new UnsupportedOperationException(); 1891d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1901d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @Override public Set<Entry<String>> entrySet() { 1911d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert final Set<Entry<String>> backingSet = super.entrySet(); 1921d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert return new ForwardingSet<Entry<String>>() { 1931d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @Override protected Set<Entry<String>> delegate() { 1941d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert return backingSet; 1951d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1961d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @Override public boolean add(Entry<String> element) { 1971d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert throw new UnsupportedOperationException(); 1981d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1991d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @Override public boolean addAll( 2001d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Collection<? extends Entry<String>> collection) { 2011d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert throw new UnsupportedOperationException(); 2021d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2031d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @Override public void clear() { 2041d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert throw new UnsupportedOperationException(); 2051d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2061d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @Override public boolean contains(Object object) { 2071d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert throw new UnsupportedOperationException(); 2081d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2091d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @Override public boolean containsAll(Collection<?> collection) { 2101d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert throw new UnsupportedOperationException(); 2111d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2121d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @Override public boolean isEmpty() { 2131d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert throw new UnsupportedOperationException(); 2141d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2151d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @Override public boolean remove(Object object) { 2161d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert throw new UnsupportedOperationException(); 2171d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2181d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @Override public boolean removeAll(Collection<?> collection) { 2191d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert throw new UnsupportedOperationException(); 2201d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2211d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @Override public boolean retainAll(Collection<?> collection) { 2221d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert throw new UnsupportedOperationException(); 2231d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2241d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert }; 2251d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2261d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @Override public boolean equals(Object object) { 2271d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert throw new UnsupportedOperationException(); 2281d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2291d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @Override public boolean remove(Object element) { 2301d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert throw new UnsupportedOperationException(); 2311d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2321d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @Override public boolean setCount( 2331d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert String element, int oldCount, int newCount) { 2341d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert throw new UnsupportedOperationException(); 2351d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2361d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @Override public int setCount(String element, int count) { 2371d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert throw new UnsupportedOperationException(); 2381d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2391d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @Override public boolean add(String element) { 2401d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert throw new UnsupportedOperationException(); 2411d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2421d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @Override public boolean addAll( 2431d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Collection<? extends String> collection) { 2441d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert throw new UnsupportedOperationException(); 2451d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2461d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @Override public Iterator<String> iterator() { 2471d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert throw new UnsupportedOperationException(); 2481d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2491d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @Override public boolean removeAll(Collection<?> collection) { 2501d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert throw new UnsupportedOperationException(); 2511d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2521d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @Override public boolean retainAll(Collection<?> collection) { 2531d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert throw new UnsupportedOperationException(); 2541d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2551d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @Override public int size() { 2561d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert throw new UnsupportedOperationException(); 2571d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2581d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert }.elementSet(); 2591d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2601d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert }).named("standardElementSet tripwire").withFeatures(CollectionSize.ANY, 2611d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert CollectionFeature.ALLOWS_NULL_VALUES, 2621d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert CollectionFeature.REMOVE_OPERATIONS).createTestSuite()); 2631d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 2641d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert return suite; 2651d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2661d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 2671d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @Override public void setUp() throws Exception { 2681d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert super.setUp(); 2691d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert /* 2701d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * Class parameters must be raw, so we can't create a proxy with generic 2711d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * type arguments. The created proxy only records calls and returns null, so 2721d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * the type is irrelevant at runtime. 2731d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */ 2741d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @SuppressWarnings("unchecked") 2751d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert final Multiset<String> multiset = createProxyInstance(Multiset.class); 2761d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert forward = new ForwardingMultiset<String>() { 2771d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @Override protected Multiset<String> delegate() { 2781d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert return multiset; 2791d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2801d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert }; 2811d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2821d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 2831d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testAdd_T() { 2841d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert forward().add("asdf"); 2851d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals("[add(Object)]", getCalls()); 2861d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2871d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 2881d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testAddAll_Collection() { 2891d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert forward().addAll(EMPTY_COLLECTION); 2901d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals("[addAll(Collection)]", getCalls()); 2911d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2921d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 2931d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testClear() { 2941d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert forward().clear(); 2951d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals("[clear]", getCalls()); 2961d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2971d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 2981d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testContains_Object() { 2991d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert forward().contains(null); 3001d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals("[contains(Object)]", getCalls()); 3011d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 3021d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 3031d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testContainsAll_Collection() { 3041d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert forward().containsAll(EMPTY_COLLECTION); 3051d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals("[containsAll(Collection)]", getCalls()); 3061d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 3071d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 3081d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testIsEmpty() { 3091d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert forward().isEmpty(); 3101d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals("[isEmpty]", getCalls()); 3111d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 3121d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 3131d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testIterator() { 3141d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert forward().iterator(); 3151d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals("[iterator]", getCalls()); 3161d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 3171d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 3181d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testRemove_Object() { 3191d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert forward().remove(null); 3201d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals("[remove(Object)]", getCalls()); 3211d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 3221d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 3231d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testRemoveAll_Collection() { 3241d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert forward().removeAll(EMPTY_COLLECTION); 3251d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals("[removeAll(Collection)]", getCalls()); 3261d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 3271d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 3281d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testRetainAll_Collection() { 3291d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert forward().retainAll(EMPTY_COLLECTION); 3301d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals("[retainAll(Collection)]", getCalls()); 3311d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 3321d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 3331d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testSize() { 3341d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert forward().size(); 3351d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals("[size]", getCalls()); 3361d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 3371d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 3381d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testToArray() { 3391d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert forward().toArray(); 3401d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals("[toArray]", getCalls()); 3411d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 3421d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 3431d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testToArray_TArray() { 3441d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert forward().toArray(new String[0]); 3451d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals("[toArray(Object[])]", getCalls()); 3461d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 3471d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 3481d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testToString() { 3491d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert forward().toString(); 3501d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals("[toString]", getCalls()); 3511d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 3521d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 3531d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testEquals_Object() { 3541d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert forward().equals("asdf"); 3551d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals("[equals(Object)]", getCalls()); 3561d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 3571d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 3581d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testHashCode() { 3591d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert forward().hashCode(); 3601d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals("[hashCode]", getCalls()); 3611d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 3621d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 3631d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testCount_Object() { 3641d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert forward().count(null); 3651d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals("[count(Object)]", getCalls()); 3661d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 3671d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 3681d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testAdd_Object_int() { 3691d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert forward().add("asd", 23); 3701d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals("[add(Object,int)]", getCalls()); 3711d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 3721d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 3731d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testRemove_Object_int() { 3741d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert forward().remove("asd", 23); 3751d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals("[remove(Object,int)]", getCalls()); 3761d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 3771d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 3781d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testSetCount_Object_int() { 3791d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert forward().setCount("asdf", 233); 3801d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals("[setCount(Object,int)]", getCalls()); 3811d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 3821d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 3831d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testSetCount_Object_oldCount_newCount() { 3841d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert forward().setCount("asdf", 4552, 1233); 3851d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals("[setCount(Object,int,int)]", getCalls()); 3861d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 3871d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 3881d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testElementSet() { 3891d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert forward().elementSet(); 3901d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals("[elementSet]", getCalls()); 3911d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 3921d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 3931d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testEntrySet() { 3941d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert forward().entrySet(); 3951d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals("[entrySet]", getCalls()); 3961d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 3971d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 3981d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert protected Multiset<String> forward() { 3991d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert return forward; 4001d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 4011d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert} 402