1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package com.google.common.collect.testing.google;
18
19 import static com.google.common.collect.testing.features.CollectionFeature.SUPPORTS_ADD;
20
21 import com.google.common.annotations.GwtCompatible;
22 import com.google.common.collect.testing.features.CollectionFeature;
23
24 import java.util.Arrays;
25 import java.util.Collections;
26
27
28
29
30
31
32 @GwtCompatible
33 public class MultisetAddTester<E> extends AbstractMultisetTester<E> {
34 @CollectionFeature.Require(absent = SUPPORTS_ADD)
35 public void testAddUnsupported() {
36 try {
37 getMultiset().add(samples.e0);
38 fail("Expected UnsupportedOperationException");
39 } catch (UnsupportedOperationException expected) {}
40 }
41
42 @CollectionFeature.Require(SUPPORTS_ADD)
43 public void testAddMeansAddOne() {
44 int originalCount = getMultiset().count(samples.e0);
45 assertTrue(getMultiset().add(samples.e0));
46 assertEquals(originalCount + 1, getMultiset().count(samples.e0));
47 }
48
49 @CollectionFeature.Require(SUPPORTS_ADD)
50 public void testAddOccurrencesZero() {
51 int originalCount = getMultiset().count(samples.e0);
52 assertEquals("old count", originalCount, getMultiset().add(samples.e0, 0));
53 expectUnchanged();
54 }
55
56 @CollectionFeature.Require(SUPPORTS_ADD)
57 public void testAddOccurrences() {
58 int originalCount = getMultiset().count(samples.e0);
59 assertEquals("old count", originalCount, getMultiset().add(samples.e0, 2));
60 assertEquals("old count", originalCount + 2, getMultiset().count(samples.e0));
61 }
62
63 @CollectionFeature.Require(SUPPORTS_ADD)
64 public void testAddSeveralTimes() {
65 int originalCount = getMultiset().count(samples.e0);
66 assertEquals(originalCount, getMultiset().add(samples.e0, 2));
67 assertTrue(getMultiset().add(samples.e0));
68 assertEquals(originalCount + 3, getMultiset().add(samples.e0, 1));
69 assertEquals(originalCount + 4, getMultiset().count(samples.e0));
70 }
71
72 @CollectionFeature.Require(absent = SUPPORTS_ADD)
73 public void testAddOccurrences_unsupported() {
74 try {
75 getMultiset().add(samples.e0, 2);
76 fail("unsupported multiset.add(E, int) didn't throw exception");
77 } catch (UnsupportedOperationException required) {}
78 }
79
80 @CollectionFeature.Require(SUPPORTS_ADD)
81 public void testAddOccurrencesNegative() {
82 try {
83 getMultiset().add(samples.e0, -1);
84 fail("multiset.add(E, -1) didn't throw an exception");
85 } catch (IllegalArgumentException required) {}
86 }
87
88 @CollectionFeature.Require(SUPPORTS_ADD)
89 public void testAddTooMany() {
90 getMultiset().add(samples.e3, Integer.MAX_VALUE);
91 try {
92 getMultiset().add(samples.e3);
93 fail();
94 } catch (IllegalArgumentException expected) {}
95 assertEquals(Integer.MAX_VALUE, getMultiset().count(samples.e3));
96 assertEquals(Integer.MAX_VALUE, getMultiset().size());
97 }
98
99 @CollectionFeature.Require(SUPPORTS_ADD)
100 public void testAddAll_emptySet() {
101 assertFalse(getMultiset().addAll(Collections.<E>emptySet()));
102 expectUnchanged();
103 }
104
105 @CollectionFeature.Require(SUPPORTS_ADD)
106 public void testAddAll_emptyMultiset() {
107 assertFalse(getMultiset().addAll(getSubjectGenerator().create()));
108 expectUnchanged();
109 }
110
111 @CollectionFeature.Require(SUPPORTS_ADD)
112 public void testAddAll_nonEmptyList() {
113 assertTrue(getMultiset().addAll(Arrays.asList(samples.e3, samples.e4, samples.e3)));
114 expectAdded(samples.e3, samples.e4, samples.e3);
115 }
116
117 @CollectionFeature.Require(SUPPORTS_ADD)
118 public void testAddAll_nonEmptyMultiset() {
119 assertTrue(getMultiset().addAll(
120 getSubjectGenerator().create(samples.e3, samples.e4, samples.e3)));
121 expectAdded(samples.e3, samples.e4, samples.e3);
122 }
123 }