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