10888a09821a98ac0680fad765217302858e70fa4Paul Duffin/* 20888a09821a98ac0680fad765217302858e70fa4Paul Duffin * Copyright (C) 2013 The Guava Authors 30888a09821a98ac0680fad765217302858e70fa4Paul Duffin * 40888a09821a98ac0680fad765217302858e70fa4Paul Duffin * Licensed under the Apache License, Version 2.0 (the "License"); 50888a09821a98ac0680fad765217302858e70fa4Paul Duffin * you may not use this file except in compliance with the License. 60888a09821a98ac0680fad765217302858e70fa4Paul Duffin * You may obtain a copy of the License at 70888a09821a98ac0680fad765217302858e70fa4Paul Duffin * 80888a09821a98ac0680fad765217302858e70fa4Paul Duffin * http://www.apache.org/licenses/LICENSE-2.0 90888a09821a98ac0680fad765217302858e70fa4Paul Duffin * 100888a09821a98ac0680fad765217302858e70fa4Paul Duffin * Unless required by applicable law or agreed to in writing, software 110888a09821a98ac0680fad765217302858e70fa4Paul Duffin * distributed under the License is distributed on an "AS IS" BASIS, 120888a09821a98ac0680fad765217302858e70fa4Paul Duffin * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 130888a09821a98ac0680fad765217302858e70fa4Paul Duffin * See the License for the specific language governing permissions and 140888a09821a98ac0680fad765217302858e70fa4Paul Duffin * limitations under the License. 150888a09821a98ac0680fad765217302858e70fa4Paul Duffin */ 160888a09821a98ac0680fad765217302858e70fa4Paul Duffin 170888a09821a98ac0680fad765217302858e70fa4Paul Duffinpackage com.google.common.collect.testing.google; 180888a09821a98ac0680fad765217302858e70fa4Paul Duffin 190888a09821a98ac0680fad765217302858e70fa4Paul Duffinimport static com.google.common.collect.testing.features.CollectionFeature.SUPPORTS_ADD; 200888a09821a98ac0680fad765217302858e70fa4Paul Duffin 210888a09821a98ac0680fad765217302858e70fa4Paul Duffinimport com.google.common.annotations.GwtCompatible; 220888a09821a98ac0680fad765217302858e70fa4Paul Duffinimport com.google.common.collect.testing.features.CollectionFeature; 230888a09821a98ac0680fad765217302858e70fa4Paul Duffin 240888a09821a98ac0680fad765217302858e70fa4Paul Duffinimport java.util.Arrays; 250888a09821a98ac0680fad765217302858e70fa4Paul Duffinimport java.util.Collections; 260888a09821a98ac0680fad765217302858e70fa4Paul Duffin 270888a09821a98ac0680fad765217302858e70fa4Paul Duffin/** 280888a09821a98ac0680fad765217302858e70fa4Paul Duffin * Tests for {@code Multiset.add}. 290888a09821a98ac0680fad765217302858e70fa4Paul Duffin * 300888a09821a98ac0680fad765217302858e70fa4Paul Duffin * @author Jared Levy 310888a09821a98ac0680fad765217302858e70fa4Paul Duffin */ 320888a09821a98ac0680fad765217302858e70fa4Paul Duffin@GwtCompatible 330888a09821a98ac0680fad765217302858e70fa4Paul Duffinpublic class MultisetAddTester<E> extends AbstractMultisetTester<E> { 340888a09821a98ac0680fad765217302858e70fa4Paul Duffin @CollectionFeature.Require(absent = SUPPORTS_ADD) 350888a09821a98ac0680fad765217302858e70fa4Paul Duffin public void testAddUnsupported() { 360888a09821a98ac0680fad765217302858e70fa4Paul Duffin try { 370888a09821a98ac0680fad765217302858e70fa4Paul Duffin getMultiset().add(samples.e0); 380888a09821a98ac0680fad765217302858e70fa4Paul Duffin fail("Expected UnsupportedOperationException"); 390888a09821a98ac0680fad765217302858e70fa4Paul Duffin } catch (UnsupportedOperationException expected) {} 400888a09821a98ac0680fad765217302858e70fa4Paul Duffin } 410888a09821a98ac0680fad765217302858e70fa4Paul Duffin 420888a09821a98ac0680fad765217302858e70fa4Paul Duffin @CollectionFeature.Require(SUPPORTS_ADD) 430888a09821a98ac0680fad765217302858e70fa4Paul Duffin public void testAddMeansAddOne() { 440888a09821a98ac0680fad765217302858e70fa4Paul Duffin int originalCount = getMultiset().count(samples.e0); 450888a09821a98ac0680fad765217302858e70fa4Paul Duffin assertTrue(getMultiset().add(samples.e0)); 460888a09821a98ac0680fad765217302858e70fa4Paul Duffin assertEquals(originalCount + 1, getMultiset().count(samples.e0)); 470888a09821a98ac0680fad765217302858e70fa4Paul Duffin } 480888a09821a98ac0680fad765217302858e70fa4Paul Duffin 490888a09821a98ac0680fad765217302858e70fa4Paul Duffin @CollectionFeature.Require(SUPPORTS_ADD) 500888a09821a98ac0680fad765217302858e70fa4Paul Duffin public void testAddOccurrencesZero() { 510888a09821a98ac0680fad765217302858e70fa4Paul Duffin int originalCount = getMultiset().count(samples.e0); 520888a09821a98ac0680fad765217302858e70fa4Paul Duffin assertEquals("old count", originalCount, getMultiset().add(samples.e0, 0)); 530888a09821a98ac0680fad765217302858e70fa4Paul Duffin expectUnchanged(); 540888a09821a98ac0680fad765217302858e70fa4Paul Duffin } 550888a09821a98ac0680fad765217302858e70fa4Paul Duffin 560888a09821a98ac0680fad765217302858e70fa4Paul Duffin @CollectionFeature.Require(SUPPORTS_ADD) 570888a09821a98ac0680fad765217302858e70fa4Paul Duffin public void testAddOccurrences() { 580888a09821a98ac0680fad765217302858e70fa4Paul Duffin int originalCount = getMultiset().count(samples.e0); 590888a09821a98ac0680fad765217302858e70fa4Paul Duffin assertEquals("old count", originalCount, getMultiset().add(samples.e0, 2)); 600888a09821a98ac0680fad765217302858e70fa4Paul Duffin assertEquals("old count", originalCount + 2, getMultiset().count(samples.e0)); 610888a09821a98ac0680fad765217302858e70fa4Paul Duffin } 620888a09821a98ac0680fad765217302858e70fa4Paul Duffin 630888a09821a98ac0680fad765217302858e70fa4Paul Duffin @CollectionFeature.Require(SUPPORTS_ADD) 640888a09821a98ac0680fad765217302858e70fa4Paul Duffin public void testAddSeveralTimes() { 650888a09821a98ac0680fad765217302858e70fa4Paul Duffin int originalCount = getMultiset().count(samples.e0); 660888a09821a98ac0680fad765217302858e70fa4Paul Duffin assertEquals(originalCount, getMultiset().add(samples.e0, 2)); 670888a09821a98ac0680fad765217302858e70fa4Paul Duffin assertTrue(getMultiset().add(samples.e0)); 680888a09821a98ac0680fad765217302858e70fa4Paul Duffin assertEquals(originalCount + 3, getMultiset().add(samples.e0, 1)); 690888a09821a98ac0680fad765217302858e70fa4Paul Duffin assertEquals(originalCount + 4, getMultiset().count(samples.e0)); 700888a09821a98ac0680fad765217302858e70fa4Paul Duffin } 710888a09821a98ac0680fad765217302858e70fa4Paul Duffin 720888a09821a98ac0680fad765217302858e70fa4Paul Duffin @CollectionFeature.Require(absent = SUPPORTS_ADD) 730888a09821a98ac0680fad765217302858e70fa4Paul Duffin public void testAddOccurrences_unsupported() { 740888a09821a98ac0680fad765217302858e70fa4Paul Duffin try { 750888a09821a98ac0680fad765217302858e70fa4Paul Duffin getMultiset().add(samples.e0, 2); 760888a09821a98ac0680fad765217302858e70fa4Paul Duffin fail("unsupported multiset.add(E, int) didn't throw exception"); 770888a09821a98ac0680fad765217302858e70fa4Paul Duffin } catch (UnsupportedOperationException required) {} 780888a09821a98ac0680fad765217302858e70fa4Paul Duffin } 790888a09821a98ac0680fad765217302858e70fa4Paul Duffin 800888a09821a98ac0680fad765217302858e70fa4Paul Duffin @CollectionFeature.Require(SUPPORTS_ADD) 810888a09821a98ac0680fad765217302858e70fa4Paul Duffin public void testAddOccurrencesNegative() { 820888a09821a98ac0680fad765217302858e70fa4Paul Duffin try { 830888a09821a98ac0680fad765217302858e70fa4Paul Duffin getMultiset().add(samples.e0, -1); 840888a09821a98ac0680fad765217302858e70fa4Paul Duffin fail("multiset.add(E, -1) didn't throw an exception"); 850888a09821a98ac0680fad765217302858e70fa4Paul Duffin } catch (IllegalArgumentException required) {} 860888a09821a98ac0680fad765217302858e70fa4Paul Duffin } 870888a09821a98ac0680fad765217302858e70fa4Paul Duffin 880888a09821a98ac0680fad765217302858e70fa4Paul Duffin @CollectionFeature.Require(SUPPORTS_ADD) 890888a09821a98ac0680fad765217302858e70fa4Paul Duffin public void testAddTooMany() { 900888a09821a98ac0680fad765217302858e70fa4Paul Duffin getMultiset().add(samples.e3, Integer.MAX_VALUE); 910888a09821a98ac0680fad765217302858e70fa4Paul Duffin try { 920888a09821a98ac0680fad765217302858e70fa4Paul Duffin getMultiset().add(samples.e3); 930888a09821a98ac0680fad765217302858e70fa4Paul Duffin fail(); 940888a09821a98ac0680fad765217302858e70fa4Paul Duffin } catch (IllegalArgumentException expected) {} 950888a09821a98ac0680fad765217302858e70fa4Paul Duffin assertEquals(Integer.MAX_VALUE, getMultiset().count(samples.e3)); 960888a09821a98ac0680fad765217302858e70fa4Paul Duffin assertEquals(Integer.MAX_VALUE, getMultiset().size()); 970888a09821a98ac0680fad765217302858e70fa4Paul Duffin } 980888a09821a98ac0680fad765217302858e70fa4Paul Duffin 990888a09821a98ac0680fad765217302858e70fa4Paul Duffin @CollectionFeature.Require(SUPPORTS_ADD) 1000888a09821a98ac0680fad765217302858e70fa4Paul Duffin public void testAddAll_emptySet() { 1010888a09821a98ac0680fad765217302858e70fa4Paul Duffin assertFalse(getMultiset().addAll(Collections.<E>emptySet())); 1020888a09821a98ac0680fad765217302858e70fa4Paul Duffin expectUnchanged(); 1030888a09821a98ac0680fad765217302858e70fa4Paul Duffin } 1040888a09821a98ac0680fad765217302858e70fa4Paul Duffin 1050888a09821a98ac0680fad765217302858e70fa4Paul Duffin @CollectionFeature.Require(SUPPORTS_ADD) 1060888a09821a98ac0680fad765217302858e70fa4Paul Duffin public void testAddAll_emptyMultiset() { 1070888a09821a98ac0680fad765217302858e70fa4Paul Duffin assertFalse(getMultiset().addAll(getSubjectGenerator().create())); 1080888a09821a98ac0680fad765217302858e70fa4Paul Duffin expectUnchanged(); 1090888a09821a98ac0680fad765217302858e70fa4Paul Duffin } 1100888a09821a98ac0680fad765217302858e70fa4Paul Duffin 1110888a09821a98ac0680fad765217302858e70fa4Paul Duffin @CollectionFeature.Require(SUPPORTS_ADD) 1120888a09821a98ac0680fad765217302858e70fa4Paul Duffin public void testAddAll_nonEmptyList() { 1130888a09821a98ac0680fad765217302858e70fa4Paul Duffin assertTrue(getMultiset().addAll(Arrays.asList(samples.e3, samples.e4, samples.e3))); 1140888a09821a98ac0680fad765217302858e70fa4Paul Duffin expectAdded(samples.e3, samples.e4, samples.e3); 1150888a09821a98ac0680fad765217302858e70fa4Paul Duffin } 1160888a09821a98ac0680fad765217302858e70fa4Paul Duffin 1170888a09821a98ac0680fad765217302858e70fa4Paul Duffin @CollectionFeature.Require(SUPPORTS_ADD) 1180888a09821a98ac0680fad765217302858e70fa4Paul Duffin public void testAddAll_nonEmptyMultiset() { 1190888a09821a98ac0680fad765217302858e70fa4Paul Duffin assertTrue(getMultiset().addAll( 1200888a09821a98ac0680fad765217302858e70fa4Paul Duffin getSubjectGenerator().create(samples.e3, samples.e4, samples.e3))); 1210888a09821a98ac0680fad765217302858e70fa4Paul Duffin expectAdded(samples.e3, samples.e4, samples.e3); 1220888a09821a98ac0680fad765217302858e70fa4Paul Duffin } 1230888a09821a98ac0680fad765217302858e70fa4Paul Duffin} 124