001/* 002 * Copyright (C) 2013 The Guava Authors 003 * 004 * Licensed under the Apache License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.apache.org/licenses/LICENSE-2.0 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 */ 016 017package com.google.common.collect.testing.google; 018 019import static com.google.common.collect.testing.features.CollectionFeature.SUPPORTS_ADD; 020 021import com.google.common.annotations.GwtCompatible; 022import com.google.common.collect.testing.features.CollectionFeature; 023import java.util.Arrays; 024import java.util.Collections; 025 026/** 027 * Tests for {@code Multiset.add}. 028 * 029 * @author Jared Levy 030 */ 031@GwtCompatible 032public class MultisetAddTester<E> extends AbstractMultisetTester<E> { 033 @CollectionFeature.Require(absent = SUPPORTS_ADD) 034 public void testAddUnsupported() { 035 try { 036 getMultiset().add(e0()); 037 fail("Expected UnsupportedOperationException"); 038 } catch (UnsupportedOperationException expected) { 039 } 040 } 041 042 @CollectionFeature.Require(SUPPORTS_ADD) 043 public void testAddMeansAddOne() { 044 int originalCount = getMultiset().count(e0()); 045 assertTrue(getMultiset().add(e0())); 046 assertEquals(originalCount + 1, getMultiset().count(e0())); 047 } 048 049 @CollectionFeature.Require(SUPPORTS_ADD) 050 public void testAddOccurrencesZero() { 051 int originalCount = getMultiset().count(e0()); 052 assertEquals("old count", originalCount, getMultiset().add(e0(), 0)); 053 expectUnchanged(); 054 } 055 056 @CollectionFeature.Require(SUPPORTS_ADD) 057 public void testAddOccurrences() { 058 int originalCount = getMultiset().count(e0()); 059 assertEquals("old count", originalCount, getMultiset().add(e0(), 2)); 060 assertEquals("old count", originalCount + 2, getMultiset().count(e0())); 061 } 062 063 @CollectionFeature.Require(SUPPORTS_ADD) 064 public void testAddSeveralTimes() { 065 int originalCount = getMultiset().count(e0()); 066 assertEquals(originalCount, getMultiset().add(e0(), 2)); 067 assertTrue(getMultiset().add(e0())); 068 assertEquals(originalCount + 3, getMultiset().add(e0(), 1)); 069 assertEquals(originalCount + 4, getMultiset().count(e0())); 070 } 071 072 @CollectionFeature.Require(absent = SUPPORTS_ADD) 073 public void testAddOccurrences_unsupported() { 074 try { 075 getMultiset().add(e0(), 2); 076 fail("unsupported multiset.add(E, int) didn't throw exception"); 077 } catch (UnsupportedOperationException required) { 078 } 079 } 080 081 @CollectionFeature.Require(SUPPORTS_ADD) 082 public void testAddOccurrencesNegative() { 083 try { 084 getMultiset().add(e0(), -1); 085 fail("multiset.add(E, -1) didn't throw an exception"); 086 } catch (IllegalArgumentException required) { 087 } 088 } 089 090 @CollectionFeature.Require(SUPPORTS_ADD) 091 public void testAddTooMany() { 092 getMultiset().add(e3(), Integer.MAX_VALUE); 093 try { 094 getMultiset().add(e3()); 095 fail(); 096 } catch (IllegalArgumentException expected) { 097 } 098 assertEquals(Integer.MAX_VALUE, getMultiset().count(e3())); 099 assertEquals(Integer.MAX_VALUE, getMultiset().size()); 100 } 101 102 @CollectionFeature.Require(SUPPORTS_ADD) 103 public void testAddAll_emptySet() { 104 assertFalse(getMultiset().addAll(Collections.<E>emptySet())); 105 expectUnchanged(); 106 } 107 108 @CollectionFeature.Require(SUPPORTS_ADD) 109 public void testAddAll_emptyMultiset() { 110 assertFalse(getMultiset().addAll(getSubjectGenerator().create())); 111 expectUnchanged(); 112 } 113 114 @CollectionFeature.Require(SUPPORTS_ADD) 115 public void testAddAll_nonEmptyList() { 116 assertTrue(getMultiset().addAll(Arrays.asList(e3(), e4(), e3()))); 117 expectAdded(e3(), e4(), e3()); 118 } 119 120 @CollectionFeature.Require(SUPPORTS_ADD) 121 public void testAddAll_nonEmptyMultiset() { 122 assertTrue(getMultiset().addAll(getSubjectGenerator().create(e3(), e4(), e3()))); 123 expectAdded(e3(), e4(), e3()); 124 } 125}