1 package com.atlassian.core.util.collection;
2
3 import com.atlassian.core.util.collection.EasyList;
4 import junit.framework.TestCase;
5
6 import java.util.Iterator;
7 import java.util.List;
8 import java.util.ArrayList;
9
10
11
12
13 public class TestEasyList extends TestCase
14 {
15 String[] letters = { "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l" };
16
17 public void testMergeListsWithItems()
18 {
19
20 List[] a = new List[3];
21
22
23 int j = 0;
24 a[0] = EasyList.createList(4);
25 for (int i = 0; i < letters.length; i++)
26 {
27 a[j].add(letters[i]);
28 if ((((i + 1) % 4) == 0) && (j < 2))
29 {
30 j++;
31 a[j] = EasyList.createList(4);
32 }
33 }
34
35 List d = EasyList.mergeLists(a[0], a[1], a[2]);
36
37
38 int i = 0;
39 for (Iterator iter = d.iterator(); iter.hasNext(); i++)
40 {
41 String listLetter = (String) iter.next();
42 assertEquals(letters[i], listLetter);
43 }
44 }
45
46 public void testMergeListWithAllNulls()
47 {
48 List[] a = new List[3];
49 a[0] = null;
50 a[1] = null;
51 a[2] = null;
52 List d = EasyList.mergeLists(a[0], a[1], a[2]);
53
54 assertEquals(d.size(), 0);
55 }
56
57 public void testMergeListOneNull()
58 {
59 List[] a = new List[3];
60 a[0] = EasyList.build("a");
61 a[1] = EasyList.build("b");
62 a[2] = null;
63 List d = EasyList.mergeLists(a[0], a[1], a[2]);
64
65 assertEquals(d.size(), 2);
66
67 int i = 0;
68 for (Iterator iter = d.iterator(); iter.hasNext(); i++)
69 {
70 String listLetter = (String) iter.next();
71 assertEquals(letters[i], listLetter);
72 }
73
74 }
75
76 public void testMergeListTwoNulls()
77 {
78 List[] a = new List[3];
79 a[0] = null;
80 a[1] = EasyList.build("a", "b", "c");
81 a[2] = null;
82 List d = EasyList.mergeLists(a[0], a[1], a[2]);
83
84 assertEquals(d.size(), 3);
85
86 int i = 0;
87 for (Iterator iter = d.iterator(); iter.hasNext(); i++)
88 {
89 String listLetter = (String) iter.next();
90 assertEquals(letters[i], listLetter);
91 }
92 }
93
94 public void testSplitListWithNull()
95 {
96 List input = null;
97 try
98 {
99 EasyList.shallowSplit(input, 5);
100 fail("Split method should have thrown exception");
101 }
102 catch (NullPointerException yay)
103 {}
104 }
105
106 public void testSplitListWithSmallList()
107 {
108 List input = new ArrayList();
109 input.add("1");
110 input.add("2");
111 input.add("3");
112 input.add("4");
113 try
114 {
115 List res = EasyList.shallowSplit(input, 5);
116 assertNotNull(res);
117 assertEquals("Length", 1, res.size());
118 assertEquals("LengthSub", 4, ((List) res.get(0)).size());
119 }
120 catch (Exception e)
121 {
122 fail("Split method throw exception: " + e);
123 }
124 }
125
126 public void testSplitListWithEqualListSizeAndSublength()
127 {
128 List input = new ArrayList();
129 input.add("1");
130 input.add("2");
131 input.add("3");
132 input.add("4");
133 input.add("5");
134 try
135 {
136 List res = EasyList.shallowSplit(input, 5);
137 assertNotNull(res);
138 assertEquals("Length", 1, res.size());
139 assertEquals("LengthSub", 5, ((List) res.get(0)).size());
140 }
141 catch (Exception e)
142 {
143 fail("Split method throw exception: " + e);
144 }
145 }
146
147 public void testSplitListWithLargeList()
148 {
149 List input = new ArrayList();
150 input.add("1");
151 input.add("2");
152 input.add("3");
153 input.add("4");
154 input.add("5");
155 input.add("6");
156 try
157 {
158 List res = EasyList.shallowSplit(input, 5);
159 assertNotNull(res);
160 assertEquals("Length", 2, res.size());
161 assertEquals("LengthSub", 5, ((List) res.get(0)).size());
162 assertEquals("LengthSub2", 1, ((List) res.get(1)).size());
163 }
164 catch (Exception e)
165 {
166 fail("Split method throw exception: " + e);
167 }
168 }
169
170 public void testSplitWithSameSizeList()
171 {
172 List input = new ArrayList();
173 input.add("1");
174 input.add("2");
175 input.add("3");
176 input.add("4");
177 try
178 {
179 List res = EasyList.shallowSplit(input, 2);
180 assertNotNull(res);
181 assertEquals("Length", 2, res.size());
182 assertEquals("LengthSub", 2, ((List) res.get(0)).size());
183 assertEquals("LengthSub2", 2, ((List) res.get(1)).size());
184 }
185 catch (Exception e)
186 {
187 fail("Split method throw exception: " + e);
188 }
189 }
190
191 public void testBuild1()
192 {
193 List list = EasyList.build("A");
194 assertEquals(1, list.size());
195 assertEquals("A", list.get(0));
196 }
197
198 public void testBuild2()
199 {
200 List list = EasyList.build("A", "B");
201 assertEquals(2, list.size());
202 assertEquals("A", list.get(0));
203 assertEquals("B", list.get(1));
204 }
205
206 public void testBuild3()
207 {
208 List list = EasyList.build("A", "B", "C");
209 assertEquals(3, list.size());
210 assertEquals("A", list.get(0));
211 assertEquals("B", list.get(1));
212 assertEquals("C", list.get(2));
213 }
214
215 public void testBuild4()
216 {
217 List list = EasyList.build("A", "B", "C", "D");
218 assertEquals(4, list.size());
219 assertEquals("A", list.get(0));
220 assertEquals("B", list.get(1));
221 assertEquals("C", list.get(2));
222 assertEquals("D", list.get(3));
223 }
224
225 public void testBuild5()
226 {
227 List list = EasyList.build("A", "B", "C", "D", "E");
228 assertEquals(5, list.size());
229 assertEquals("A", list.get(0));
230 assertEquals("B", list.get(1));
231 assertEquals("C", list.get(2));
232 assertEquals("D", list.get(3));
233 assertEquals("E", list.get(4));
234 }
235
236 public void testBuild6()
237 {
238 List list = EasyList.build("A", "B", "C", "D", "E", "F");
239 assertEquals(6, list.size());
240 assertEquals("A", list.get(0));
241 assertEquals("B", list.get(1));
242 assertEquals("C", list.get(2));
243 assertEquals("D", list.get(3));
244 assertEquals("E", list.get(4));
245 assertEquals("F", list.get(5));
246 }
247
248 public void testBuild7()
249 {
250 List list = EasyList.build("A", "B", "C", "D", "E", "F", "G");
251 assertEquals(7, list.size());
252 assertEquals("A", list.get(0));
253 assertEquals("B", list.get(1));
254 assertEquals("C", list.get(2));
255 assertEquals("D", list.get(3));
256 assertEquals("E", list.get(4));
257 assertEquals("F", list.get(5));
258 assertEquals("G", list.get(6));
259 }
260
261 public void testBuild8()
262 {
263 List list = EasyList.build("A", "B", "C", "D", "E", "F", "G", "H");
264 assertEquals(8, list.size());
265 assertEquals("A", list.get(0));
266 assertEquals("B", list.get(1));
267 assertEquals("C", list.get(2));
268 assertEquals("D", list.get(3));
269 assertEquals("E", list.get(4));
270 assertEquals("F", list.get(5));
271 assertEquals("G", list.get(6));
272 assertEquals("H", list.get(7));
273 }
274 }