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.assertSame;
21 import static org.junit.jupiter.api.Assertions.assertTrue;
22
23 import java.util.ArrayList;
24 import java.util.Iterator;
25 import java.util.List;
26
27 import org.junit.jupiter.api.Test;
28
29
30
31
32
33 public class ListOrderedSet2Test<E> extends AbstractSetTest<E> {
34
35 private static final Integer ZERO = Integer.valueOf(0);
36 private static final Integer ONE = Integer.valueOf(1);
37 private static final Integer TWO = Integer.valueOf(2);
38 private static final Integer THREE = Integer.valueOf(3);
39
40 public ListOrderedSet2Test() {
41 super(ListOrderedSet2Test.class.getSimpleName());
42 }
43
44 @Override
45 public String getCompatibilityVersion() {
46 return "4";
47 }
48
49 @Override
50 public ListOrderedSet<E> makeObject() {
51 return new ListOrderedSet<>();
52 }
53
54 @SuppressWarnings("unchecked")
55 protected ListOrderedSet<E> setupSet() {
56 final ListOrderedSet<E> set = makeObject();
57
58 for (int i = 0; i < 10; i++) {
59 set.add((E) Integer.toString(i));
60 }
61 return set;
62 }
63
64 @Test
65 @SuppressWarnings("unchecked")
66 public void testListAddIndexed() {
67 final ListOrderedSet<E> set = makeObject();
68 set.add((E) ZERO);
69 set.add((E) TWO);
70
71 set.add(1, (E) ONE);
72 assertEquals(3, set.size());
73 assertSame(ZERO, set.get(0));
74 assertSame(ONE, set.get(1));
75 assertSame(TWO, set.get(2));
76
77 set.add(0, (E) ONE);
78 assertEquals(3, set.size());
79 assertSame(ZERO, set.get(0));
80 assertSame(ONE, set.get(1));
81 assertSame(TWO, set.get(2));
82
83 final List<E> list = new ArrayList<>();
84 list.add((E) ZERO);
85 list.add((E) TWO);
86
87 set.addAll(0, list);
88 assertEquals(3, set.size());
89 assertSame(ZERO, set.get(0));
90 assertSame(ONE, set.get(1));
91 assertSame(TWO, set.get(2));
92
93 list.add(0, (E) THREE);
94 set.remove(TWO);
95 set.addAll(1, list);
96 assertEquals(4, set.size());
97 assertSame(ZERO, set.get(0));
98 assertSame(THREE, set.get(1));
99 assertSame(TWO, set.get(2));
100 assertSame(ONE, set.get(3));
101 }
102
103 @Test
104 @SuppressWarnings("unchecked")
105 public void testListAddRemove() {
106 final ListOrderedSet<E> set = makeObject();
107 final List<E> view = set.asList();
108 set.add((E) ZERO);
109 set.add((E) ONE);
110 set.add((E) TWO);
111
112 assertEquals(3, set.size());
113 assertSame(ZERO, set.get(0));
114 assertSame(ONE, set.get(1));
115 assertSame(TWO, set.get(2));
116 assertEquals(3, view.size());
117 assertSame(ZERO, view.get(0));
118 assertSame(ONE, view.get(1));
119 assertSame(TWO, view.get(2));
120
121 assertEquals(0, set.indexOf(ZERO));
122 assertEquals(1, set.indexOf(ONE));
123 assertEquals(2, set.indexOf(TWO));
124
125 set.remove(1);
126 assertEquals(2, set.size());
127 assertSame(ZERO, set.get(0));
128 assertSame(TWO, set.get(1));
129 assertEquals(2, view.size());
130 assertSame(ZERO, view.get(0));
131 assertSame(TWO, view.get(1));
132 }
133
134 @Test
135 @SuppressWarnings("unchecked")
136 public void testOrdering() {
137 final ListOrderedSet<E> set = setupSet();
138 Iterator<E> it = set.iterator();
139
140 for (int i = 0; i < 10; i++) {
141 assertEquals(Integer.toString(i), it.next(), "Sequence is wrong");
142 }
143
144 for (int i = 0; i < 10; i += 2) {
145 assertTrue(set.remove(Integer.toString(i)), "Must be able to remove int");
146 }
147
148 it = set.iterator();
149 for (int i = 1; i < 10; i += 2) {
150 assertEquals(Integer.toString(i), it.next(), "Sequence is wrong after remove ");
151 }
152
153 for (int i = 0; i < 10; i++) {
154 set.add((E) Integer.toString(i));
155 }
156
157 assertEquals(10, set.size(), "Size of set is wrong!");
158
159 it = set.iterator();
160 for (int i = 1; i < 10; i += 2) {
161 assertEquals(Integer.toString(i), it.next(), "Sequence is wrong");
162 }
163 for (int i = 0; i < 10; i += 2) {
164 assertEquals(Integer.toString(i), it.next(), "Sequence is wrong");
165 }
166 }
167
168
169
170
171
172
173
174
175 }