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          // create three lists of four items
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          // check they are all there
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 }