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