1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.collections4.set;
18
19 import java.util.Arrays;
20 import java.util.Collection;
21 import java.util.HashSet;
22 import java.util.Set;
23
24 import org.apache.commons.collections4.collection.AbstractCollectionTest;
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42 public abstract class AbstractSetTest<E> extends AbstractCollectionTest<E> {
43
44
45
46
47
48
49 public AbstractSetTest(final String name) {
50 super(name);
51 }
52
53
54
55
56
57 @Override
58 public void verify() {
59 super.verify();
60
61 assertEquals("Sets should be equal", getConfirmed(), getCollection());
62 assertEquals("Sets should have equal hashCodes",
63 getConfirmed().hashCode(), getCollection().hashCode());
64 final Collection<E> set = makeConfirmedCollection();
65 for (final E element : getCollection()) {
66 assertTrue("Set.iterator should only return unique elements", set.add(element));
67 }
68 }
69
70
71
72
73
74 @Override
75 public boolean isEqualsCheckable() {
76 return true;
77 }
78
79
80
81
82
83
84 @Override
85 public Collection<E> makeConfirmedCollection() {
86 return new HashSet<>();
87 }
88
89
90
91
92
93
94 @Override
95 public Collection<E> makeConfirmedFullCollection() {
96 final Collection<E> set = makeConfirmedCollection();
97 set.addAll(Arrays.asList(getFullElements()));
98 return set;
99 }
100
101
102
103
104
105
106 @Override
107 public abstract Set<E> makeObject();
108
109
110
111
112
113
114
115
116
117 @Override
118 public Set<E> makeFullCollection() {
119 final Set<E> set = makeObject();
120 set.addAll(Arrays.asList(getFullElements()));
121 return set;
122 }
123
124
125
126
127
128 @Override
129 public Set<E> getCollection() {
130 return (Set<E>) super.getCollection();
131 }
132
133
134
135
136 @Override
137 public Set<E> getConfirmed() {
138 return (Set<E>) super.getConfirmed();
139 }
140
141
142
143
144
145 @SuppressWarnings("unchecked")
146 public void testSetEquals() {
147 resetEmpty();
148 assertEquals("Empty sets should be equal", getCollection(), getConfirmed());
149 verify();
150
151 final Collection<E> set2 = makeConfirmedCollection();
152 set2.add((E) "foo");
153 assertTrue("Empty set shouldn't equal nonempty set", !getCollection().equals(set2));
154
155 resetFull();
156 assertEquals("Full sets should be equal", getCollection(), getConfirmed());
157 verify();
158
159 set2.clear();
160 set2.addAll(Arrays.asList(getOtherElements()));
161 assertTrue("Sets with different contents shouldn't be equal", !getCollection().equals(set2));
162 }
163
164
165
166
167 public void testSetHashCode() {
168 resetEmpty();
169 assertEquals("Empty sets have equal hashCodes",
170 getCollection().hashCode(), getConfirmed().hashCode());
171
172 resetFull();
173 assertEquals("Equal sets have equal hashCodes",
174 getCollection().hashCode(), getConfirmed().hashCode());
175 }
176
177 }