11d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert/* 21d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * Copyright (C) 2008 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 static java.util.Arrays.asList; 201d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport static org.junit.contrib.truth.Truth.ASSERT; 211d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 221d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport com.google.common.annotations.GwtCompatible; 231d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport com.google.common.annotations.GwtIncompatible; 241d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport com.google.common.collect.testing.MinimalCollection; 251d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport com.google.common.collect.testing.SetTestSuiteBuilder; 261d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport com.google.common.collect.testing.TestStringSetGenerator; 271d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport com.google.common.collect.testing.features.CollectionFeature; 281d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport com.google.common.collect.testing.features.CollectionSize; 291d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport com.google.common.collect.testing.google.MultisetTestSuiteBuilder; 301d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport com.google.common.collect.testing.google.TestStringMultisetGenerator; 311d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport com.google.common.collect.testing.google.UnmodifiableCollectionTests; 321d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport com.google.common.testing.NullPointerTester; 331d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport com.google.common.testing.SerializableTester; 341d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 351d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport junit.framework.Test; 361d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport junit.framework.TestCase; 371d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport junit.framework.TestSuite; 381d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 391d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport java.util.Collection; 401d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport java.util.Iterator; 411d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport java.util.List; 421d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport java.util.Set; 431d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 441d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert/** 451d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * Tests for {@link ImmutableMultiset}. 461d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * 471d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * @author Jared Levy 481d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */ 491d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert@GwtCompatible(emulated = true) 501d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertpublic class ImmutableMultisetTest extends TestCase { 511d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 521d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @GwtIncompatible("suite") // TODO(cpovirk): add to collect/gwt/suites 531d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public static Test suite() { 541d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert TestSuite suite = new TestSuite(); 551d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert suite.addTestSuite(ImmutableMultisetTest.class); 561d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 571d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert suite.addTest(MultisetTestSuiteBuilder.using( 581d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert new TestStringMultisetGenerator() { 591d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @Override protected Multiset<String> create(String[] elements) { 601d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert return ImmutableMultiset.copyOf(elements); 611d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 621d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert }) 631d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .named("ImmutableMultiset") 641d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .withFeatures(CollectionSize.ANY, 651d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert CollectionFeature.ALLOWS_NULL_QUERIES) 661d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .createTestSuite()); 671d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 681d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert suite.addTest(MultisetTestSuiteBuilder.using( 691d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert new TestStringMultisetGenerator() { 701d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @Override protected Multiset<String> create(String[] elements) { 711d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert return SerializableTester.reserialize( 721d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert ImmutableMultiset.copyOf(elements)); 731d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 741d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert }) 751d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .named("ImmutableMultiset, reserialized") 761d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .withFeatures(CollectionSize.ANY, 771d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert CollectionFeature.ALLOWS_NULL_QUERIES) 781d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .createTestSuite()); 791d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 801d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert suite.addTest(SetTestSuiteBuilder.using(new TestStringSetGenerator() { 811d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @Override protected Set<String> create(String[] elements) { 821d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert return SerializableTester.reserialize( 831d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert ImmutableMultiset.copyOf(elements).elementSet()); 841d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 851d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert }) 861d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .named("ImmutableMultiset, element set") 871d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .withFeatures(CollectionSize.ANY, 881d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert CollectionFeature.ALLOWS_NULL_QUERIES) 891d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .createTestSuite()); 901d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 911d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert return suite; 921d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 931d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 941d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testCreation_noArgs() { 951d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Multiset<String> multiset = ImmutableMultiset.of(); 961d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertTrue(multiset.isEmpty()); 971d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 981d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 991d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testCreation_oneElement() { 1001d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Multiset<String> multiset = ImmutableMultiset.of("a"); 1011d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals(HashMultiset.create(asList("a")), multiset); 1021d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1031d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1041d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testCreation_twoElements() { 1051d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Multiset<String> multiset = ImmutableMultiset.of("a", "b"); 1061d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals(HashMultiset.create(asList("a", "b")), multiset); 1071d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1081d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1091d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testCreation_threeElements() { 1101d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Multiset<String> multiset = ImmutableMultiset.of("a", "b", "c"); 1111d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals(HashMultiset.create(asList("a", "b", "c")), multiset); 1121d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1131d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1141d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testCreation_fourElements() { 1151d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Multiset<String> multiset = ImmutableMultiset.of("a", "b", "c", "d"); 1161d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals(HashMultiset.create(asList("a", "b", "c", "d")), multiset); 1171d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1181d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1191d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testCreation_fiveElements() { 1201d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Multiset<String> multiset = ImmutableMultiset.of("a", "b", "c", "d", "e"); 1211d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals(HashMultiset.create(asList("a", "b", "c", "d", "e")), 1221d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert multiset); 1231d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1241d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1251d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testCreation_sixElements() { 1261d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Multiset<String> multiset = ImmutableMultiset.of( 1271d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert "a", "b", "c", "d", "e", "f"); 1281d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals(HashMultiset.create(asList("a", "b", "c", "d", "e", "f")), 1291d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert multiset); 1301d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1311d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1321d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testCreation_sevenElements() { 1331d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Multiset<String> multiset = ImmutableMultiset.of( 1341d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert "a", "b", "c", "d", "e", "f", "g"); 1351d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals( 1361d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert HashMultiset.create(asList("a", "b", "c", "d", "e", "f", "g")), 1371d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert multiset); 1381d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1391d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1401d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testCreation_emptyArray() { 1411d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert String[] array = new String[0]; 1421d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Multiset<String> multiset = ImmutableMultiset.copyOf(array); 1431d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertTrue(multiset.isEmpty()); 1441d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1451d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1461d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testCreation_arrayOfOneElement() { 1471d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert String[] array = new String[] { "a" }; 1481d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Multiset<String> multiset = ImmutableMultiset.copyOf(array); 1491d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals(HashMultiset.create(asList("a")), multiset); 1501d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1511d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1521d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testCreation_arrayOfArray() { 1531d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert String[] array = new String[] { "a" }; 1541d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Multiset<String[]> multiset = ImmutableMultiset.<String[]>of(array); 1551d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Multiset<String[]> expected = HashMultiset.create(); 1561d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert expected.add(array); 1571d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals(expected, multiset); 1581d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1591d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1601d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testCreation_arrayContainingOnlyNull() { 1611d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert String[] array = new String[] { null }; 1621d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert try { 1631d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert ImmutableMultiset.copyOf(array); 1641d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert fail(); 1651d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } catch (NullPointerException expected) {} 1661d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1671d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1681d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testCopyOf_collection_empty() { 1691d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert // "<String>" is required to work around a javac 1.5 bug. 1701d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Collection<String> c = MinimalCollection.<String>of(); 1711d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Multiset<String> multiset = ImmutableMultiset.copyOf(c); 1721d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertTrue(multiset.isEmpty()); 1731d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1741d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1751d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testCopyOf_collection_oneElement() { 1761d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Collection<String> c = MinimalCollection.of("a"); 1771d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Multiset<String> multiset = ImmutableMultiset.copyOf(c); 1781d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals(HashMultiset.create(asList("a")), multiset); 1791d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1801d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1811d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testCopyOf_collection_general() { 1821d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Collection<String> c = MinimalCollection.of("a", "b", "a"); 1831d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Multiset<String> multiset = ImmutableMultiset.copyOf(c); 1841d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals(HashMultiset.create(asList("a", "b", "a")), multiset); 1851d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1861d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1871d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testCopyOf_collectionContainingNull() { 1881d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Collection<String> c = MinimalCollection.of("a", null, "b"); 1891d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert try { 1901d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert ImmutableMultiset.copyOf(c); 1911d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert fail(); 1921d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } catch (NullPointerException expected) {} 1931d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1941d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1951d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testCopyOf_multiset_empty() { 1961d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Multiset<String> c = HashMultiset.create(); 1971d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Multiset<String> multiset = ImmutableMultiset.copyOf(c); 1981d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertTrue(multiset.isEmpty()); 1991d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2001d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 2011d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testCopyOf_multiset_oneElement() { 2021d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Multiset<String> c = HashMultiset.create(asList("a")); 2031d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Multiset<String> multiset = ImmutableMultiset.copyOf(c); 2041d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals(HashMultiset.create(asList("a")), multiset); 2051d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2061d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 2071d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testCopyOf_multiset_general() { 2081d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Multiset<String> c = HashMultiset.create(asList("a", "b", "a")); 2091d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Multiset<String> multiset = ImmutableMultiset.copyOf(c); 2101d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals(HashMultiset.create(asList("a", "b", "a")), multiset); 2111d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2121d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 2131d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testCopyOf_multisetContainingNull() { 2141d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Multiset<String> c = HashMultiset.create(asList("a", null, "b")); 2151d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert try { 2161d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert ImmutableMultiset.copyOf(c); 2171d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert fail(); 2181d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } catch (NullPointerException expected) {} 2191d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2201d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 2211d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testCopyOf_iterator_empty() { 2221d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Iterator<String> iterator = Iterators.emptyIterator(); 2231d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Multiset<String> multiset = ImmutableMultiset.copyOf(iterator); 2241d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertTrue(multiset.isEmpty()); 2251d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2261d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 2271d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testCopyOf_iterator_oneElement() { 2281d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Iterator<String> iterator = Iterators.singletonIterator("a"); 2291d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Multiset<String> multiset = ImmutableMultiset.copyOf(iterator); 2301d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals(HashMultiset.create(asList("a")), multiset); 2311d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2321d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 2331d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testCopyOf_iterator_general() { 2341d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Iterator<String> iterator = asList("a", "b", "a").iterator(); 2351d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Multiset<String> multiset = ImmutableMultiset.copyOf(iterator); 2361d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals(HashMultiset.create(asList("a", "b", "a")), multiset); 2371d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2381d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 2391d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testCopyOf_iteratorContainingNull() { 2401d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Iterator<String> iterator = asList("a", null, "b").iterator(); 2411d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert try { 2421d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert ImmutableMultiset.copyOf(iterator); 2431d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert fail(); 2441d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } catch (NullPointerException expected) {} 2451d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2461d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 2471d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert private static class CountingIterable implements Iterable<String> { 2481d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert int count = 0; 2491d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @Override 2501d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public Iterator<String> iterator() { 2511d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert count++; 2521d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert return asList("a", "b", "a").iterator(); 2531d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2541d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2551d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 2561d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testCopyOf_plainIterable() { 2571d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert CountingIterable iterable = new CountingIterable(); 2581d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Multiset<String> multiset = ImmutableMultiset.copyOf(iterable); 2591d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals(HashMultiset.create(asList("a", "b", "a")), multiset); 2601d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals(1, iterable.count); 2611d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2621d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 2631d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testCopyOf_shortcut_empty() { 2641d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Collection<String> c = ImmutableMultiset.of(); 2651d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertSame(c, ImmutableMultiset.copyOf(c)); 2661d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2671d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 2681d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testCopyOf_shortcut_singleton() { 2691d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Collection<String> c = ImmutableMultiset.of("a"); 2701d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertSame(c, ImmutableMultiset.copyOf(c)); 2711d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2721d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 2731d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testCopyOf_shortcut_immutableMultiset() { 2741d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Collection<String> c = ImmutableMultiset.of("a", "b", "c"); 2751d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertSame(c, ImmutableMultiset.copyOf(c)); 2761d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2771d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 2781d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testBuilderAdd() { 2791d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert ImmutableMultiset<String> multiset = new ImmutableMultiset.Builder<String>() 2801d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .add("a") 2811d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .add("b") 2821d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .add("a") 2831d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .add("c") 2841d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .build(); 2851d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals(HashMultiset.create(asList("a", "b", "a", "c")), multiset); 2861d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2871d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 2881d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testBuilderAddAll() { 2891d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert List<String> a = asList("a", "b"); 2901d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert List<String> b = asList("c", "d"); 2911d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert ImmutableMultiset<String> multiset = new ImmutableMultiset.Builder<String>() 2921d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .addAll(a) 2931d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .addAll(b) 2941d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .build(); 2951d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals(HashMultiset.create(asList("a", "b", "c", "d")), multiset); 2961d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2971d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 2981d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testBuilderAddAllMultiset() { 2991d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Multiset<String> a = HashMultiset.create(asList("a", "b", "b")); 3001d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Multiset<String> b = HashMultiset.create(asList("c", "b")); 3011d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert ImmutableMultiset<String> multiset = new ImmutableMultiset.Builder<String>() 3021d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .addAll(a) 3031d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .addAll(b) 3041d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .build(); 3051d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals( 3061d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert HashMultiset.create(asList("a", "b", "b", "b", "c")), multiset); 3071d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 3081d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 3091d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testBuilderAddAllIterator() { 3101d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Iterator<String> iterator = asList("a", "b", "a", "c").iterator(); 3111d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert ImmutableMultiset<String> multiset = new ImmutableMultiset.Builder<String>() 3121d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .addAll(iterator) 3131d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .build(); 3141d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals(HashMultiset.create(asList("a", "b", "a", "c")), multiset); 3151d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 3161d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 3171d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testBuilderAddCopies() { 3181d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert ImmutableMultiset<String> multiset = new ImmutableMultiset.Builder<String>() 3191d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .addCopies("a", 2) 3201d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .addCopies("b", 3) 3211d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .addCopies("c", 0) 3221d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .build(); 3231d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals( 3241d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert HashMultiset.create(asList("a", "a", "b", "b", "b")), multiset); 3251d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 3261d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 3271d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testBuilderSetCount() { 3281d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert ImmutableMultiset<String> multiset = new ImmutableMultiset.Builder<String>() 3291d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .add("a") 3301d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .setCount("a", 2) 3311d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .setCount("b", 3) 3321d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert .build(); 3331d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals( 3341d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert HashMultiset.create(asList("a", "a", "b", "b", "b")), multiset); 3351d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 3361d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 3371d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testBuilderAddHandlesNullsCorrectly() { 3381d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert ImmutableMultiset.Builder<String> builder = ImmutableMultiset.builder(); 3391d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert try { 3401d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert builder.add((String) null); 3411d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert fail("expected NullPointerException"); 3421d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } catch (NullPointerException expected) {} 3431d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 3441d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 3451d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testBuilderAddAllHandlesNullsCorrectly() { 3461d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert ImmutableMultiset.Builder<String> builder = ImmutableMultiset.builder(); 3471d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert try { 3481d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert builder.addAll((Collection<String>) null); 3491d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert fail("expected NullPointerException"); 3501d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } catch (NullPointerException expected) {} 3511d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 3521d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert builder = ImmutableMultiset.builder(); 3531d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert List<String> listWithNulls = asList("a", null, "b"); 3541d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert try { 3551d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert builder.addAll(listWithNulls); 3561d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert fail("expected NullPointerException"); 3571d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } catch (NullPointerException expected) {} 3581d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 3591d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert builder = ImmutableMultiset.builder(); 3601d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Multiset<String> multisetWithNull 3611d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert = LinkedHashMultiset.create(asList("a", null, "b")); 3621d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert try { 3631d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert builder.addAll(multisetWithNull); 3641d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert fail("expected NullPointerException"); 3651d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } catch (NullPointerException expected) {} 3661d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 3671d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 3681d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testBuilderAddCopiesHandlesNullsCorrectly() { 3691d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert ImmutableMultiset.Builder<String> builder = ImmutableMultiset.builder(); 3701d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert try { 3711d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert builder.addCopies(null, 2); 3721d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert fail("expected NullPointerException"); 3731d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } catch (NullPointerException expected) {} 3741d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 3751d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 3761d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testBuilderAddCopiesIllegal() { 3771d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert ImmutableMultiset.Builder<String> builder = ImmutableMultiset.builder(); 3781d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert try { 3791d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert builder.addCopies("a", -2); 3801d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert fail("expected IllegalArgumentException"); 3811d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } catch (IllegalArgumentException expected) {} 3821d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 3831d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 3841d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testBuilderSetCountHandlesNullsCorrectly() { 3851d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert ImmutableMultiset.Builder<String> builder = ImmutableMultiset.builder(); 3861d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert try { 3871d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert builder.setCount(null, 2); 3881d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert fail("expected NullPointerException"); 3891d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } catch (NullPointerException expected) {} 3901d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 3911d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 3921d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testBuilderSetCountIllegal() { 3931d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert ImmutableMultiset.Builder<String> builder = ImmutableMultiset.builder(); 3941d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert try { 3951d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert builder.setCount("a", -2); 3961d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert fail("expected IllegalArgumentException"); 3971d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } catch (IllegalArgumentException expected) {} 3981d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 3991d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 4001d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @GwtIncompatible("NullPointerTester") 4011d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testNullPointers() throws Exception { 4021d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert NullPointerTester tester = new NullPointerTester(); 4031d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert tester.testAllPublicStaticMethods(ImmutableMultiset.class); 4041d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 4051d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 4061d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @GwtIncompatible("SerializableTester") 4071d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testSerialization_empty() { 4081d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Collection<String> c = ImmutableMultiset.of(); 4091d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertSame(c, SerializableTester.reserialize(c)); 4101d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 4111d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 4121d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @GwtIncompatible("SerializableTester") 4131d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testSerialization_multiple() { 4141d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Collection<String> c = ImmutableMultiset.of("a", "b", "a"); 4151d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Collection<String> copy = SerializableTester.reserializeAndAssert(c); 4161d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert ASSERT.that(copy).hasContentsInOrder("a", "a", "b"); 4171d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 4181d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 4191d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @GwtIncompatible("SerializableTester") 4201d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testSerialization_elementSet() { 4211d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Multiset<String> c = ImmutableMultiset.of("a", "b", "a"); 4221d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Collection<String> copy = 4231d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert LenientSerializableTester.reserializeAndAssertLenient(c.elementSet()); 4241d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert ASSERT.that(copy).hasContentsInOrder("a", "b"); 4251d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 4261d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 4271d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @GwtIncompatible("SerializableTester") 4281d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testSerialization_entrySet() { 4291d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Multiset<String> c = ImmutableMultiset.of("a", "b", "c"); 4301d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert SerializableTester.reserializeAndAssert(c.entrySet()); 4311d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 4321d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 4331d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testEquals_immutableMultiset() { 4341d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Collection<String> c = ImmutableMultiset.of("a", "b", "a"); 4351d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals(c, ImmutableMultiset.of("a", "b", "a")); 4361d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals(c, ImmutableMultiset.of("a", "a", "b")); 4371d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert ASSERT.that(c).isNotEqualTo(ImmutableMultiset.of("a", "b")); 4381d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert ASSERT.that(c).isNotEqualTo(ImmutableMultiset.of("a", "b", "c", "d")); 4391d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 4401d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 4411d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testIterationOrder() { 4421d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Collection<String> c = ImmutableMultiset.of("a", "b", "a"); 4431d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert ASSERT.that(c).hasContentsInOrder("a", "a", "b"); 4441d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 4451d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 4461d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testMultisetWrites() { 4471d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Multiset<String> multiset = ImmutableMultiset.of("a", "b", "a"); 4481d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert UnmodifiableCollectionTests.assertMultisetIsUnmodifiable(multiset, "test"); 4491d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 4501d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 4511d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testAsList() { 4521d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert ImmutableMultiset<String> multiset 4531d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert = ImmutableMultiset.of("a", "a", "b", "b", "b"); 4541d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert ImmutableList<String> list = multiset.asList(); 4551d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals(ImmutableList.of("a", "a", "b", "b", "b"), list); 4561d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals(2, list.indexOf("b")); 4571d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert assertEquals(4, list.lastIndexOf("b")); 4581d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 4591d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 4601d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @GwtIncompatible("SerializableTester") 4611d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public void testSerialization_asList() { 4621d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert ImmutableMultiset<String> multiset 4631d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert = ImmutableMultiset.of("a", "a", "b", "b", "b"); 4641d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert SerializableTester.reserializeAndAssert(multiset.asList()); 4651d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 4661d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert} 467