KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > jboss > cache > pojo > optimistic > CachedListTest


1 /*
2  * JBoss, Home of Professional Open Source.
3  * Copyright 2006, Red Hat Middleware LLC, and individual contributors
4  * as indicated by the @author tags. See the copyright.txt file in the
5  * distribution for a full listing of individual contributors.
6  *
7  * This is free software; you can redistribute it and/or modify it
8  * under the terms of the GNU Lesser General Public License as
9  * published by the Free Software Foundation; either version 2.1 of
10  * the License, or (at your option) any later version.
11  *
12  * This software is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15  * Lesser General Public License for more details.
16  *
17  * You should have received a copy of the GNU Lesser General Public
18  * License along with this software; if not, write to the Free
19  * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
20  * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
21  */

22
23 package org.jboss.cache.pojo.optimistic;
24
25 import junit.framework.TestCase;
26 import junit.framework.Test;
27 import junit.framework.TestSuite;
28 import org.apache.commons.logging.Log;
29 import org.apache.commons.logging.LogFactory;
30 import org.jboss.cache.pojo.PojoCache;
31 import org.jboss.cache.pojo.PojoCacheFactory;
32 import org.jboss.cache.pojo.test.Address;
33
34 import java.util.List JavaDoc;
35 import java.util.ArrayList JavaDoc;
36 import java.util.Iterator JavaDoc;
37 import java.util.ListIterator JavaDoc;
38 import java.util.NoSuchElementException JavaDoc;
39
40 /**
41  * List interface testing.
42  *
43  * @author Ben Wang
44  */

45
46 public class CachedListTest extends AbstractOptimisticTestCase
47 {
48    Log log = LogFactory.getLog(CachedListTest.class);
49    PojoCache cache_;
50    List JavaDoc languages;
51    List JavaDoc languages2;
52
53    public CachedListTest(String JavaDoc name)
54    {
55       super(name);
56    }
57
58
59    protected void setUp() throws Exception JavaDoc
60    {
61       super.setUp();
62       cache_ = createCache();
63 // cache_ = createPessimisticCache();
64
log.info("setUp() ....");
65    }
66
67    protected void tearDown()
68    {
69       super.tearDown();
70       cache_.stop();
71    }
72
73    public void testAddAndRemoveIndex() throws Throwable JavaDoc
74    {
75       stage();
76
77       languages.add(1, "Taiwanese");
78       assertEquals("Languages size ", 4, languages.size());
79       assertEquals("Language ", (Object JavaDoc) "Taiwanese", (Object JavaDoc) languages.get(1));
80       languages.remove(2);
81       assertEquals("Languages size ", 3, languages.size());
82       assertEquals("Language ", (Object JavaDoc) "English", (Object JavaDoc) languages.get(2));
83
84       languages.add("Mandarin");
85       assertEquals("Languages size ", 4, languages.size());
86       languages.remove("Mandarin");
87       assertEquals("Languages size ", 3, languages.size());
88    }
89
90    protected void stage() throws Throwable JavaDoc
91    {
92       languages = new ArrayList JavaDoc();
93       languages.add("English");
94       languages.add("French");
95       languages.add("English");
96       cache_.attach("/person/test6", languages);
97       languages = (List JavaDoc) cache_.find("/person/test6");
98       int size = languages.size();
99       assertEquals("Size of list ", 3, size);
100
101       languages2 = new ArrayList JavaDoc();
102       languages2.addAll(languages);
103       assertEquals("New ArrayList().addAll(CachedList)", languages, languages2);
104    }
105
106    public void testAddAllAndClear() throws Throwable JavaDoc
107    {
108       stage();
109       List JavaDoc list = new ArrayList JavaDoc();
110       list.add("Taiwanese");
111       list.add("Madarin");
112
113       assertTrue("Language is Taiwanese ", list.contains("Taiwanese"));
114
115       languages.addAll(list);
116       assertEquals("Languages size ", 5, languages.size());
117
118       languages.removeAll(list);
119       assertEquals("Languages size ", 3, languages.size());
120
121       assertEquals("Index of French ", 1, languages.indexOf("French"));
122
123       languages.clear();
124       assertEquals("Languages size ", 0, languages.size());
125
126       assertTrue("Languages empty ", languages.isEmpty());
127    }
128
129    public void testEquals() throws Throwable JavaDoc
130    {
131       stage();
132
133       List JavaDoc list = (List JavaDoc) cache_.find("/person/test6");
134       assertTrue("List should be the same ", list.equals(languages));
135       list = new ArrayList JavaDoc();
136       list.add("German");
137       list.add("test");
138       list.add("English");
139       assertFalse("List should not be the same ", languages.equals(list));
140       assertFalse("List should not be the same ", list.equals(languages));
141    }
142
143    public void testIterator() throws Throwable JavaDoc
144    {
145       languages = new ArrayList JavaDoc();
146       Iterator JavaDoc it0 = languages.iterator();
147       assertFalse("Iterator should be empty ", it0.hasNext());
148
149       stage();
150
151       Iterator JavaDoc it = languages.iterator();
152       Iterator JavaDoc it2 = languages2.iterator();
153       int counter = 0;
154       while (it.hasNext())
155       {
156          counter++;
157          assertEquals(it.next(), it2.next());
158          it.remove();
159          it2.remove();
160       }
161
162       assertEquals("Size should be ", 3, counter);
163       assertEquals("Skills should be empty ", 0, languages.size());
164    }
165
166    public void testListIterator() throws Throwable JavaDoc
167    {
168       languages = new ArrayList JavaDoc();
169       ListIterator JavaDoc it0 = languages.listIterator();
170       assertFalse("Iterator should be empty ", it0.hasNext());
171       assertFalse("Iterator should be empty ", it0.hasPrevious());
172
173       stage();
174
175       ListIterator JavaDoc li = languages.listIterator();
176       ListIterator JavaDoc li2 = languages2.listIterator();
177       assertFalse("LI has no previous element ", li.hasPrevious());
178       assertFalse("LI2 has no previous element ", li2.hasPrevious());
179       assertTrue("LI has next element ", li.hasNext());
180       assertTrue("LI2 has next element ", li2.hasNext());
181       assertEquals(li.next(), li2.next());
182       assertEquals("Index is ", 1, li.nextIndex());
183       assertEquals("Index is ", 1, li2.nextIndex());
184       assertEquals("Index is ", 0, li.previousIndex());
185       assertEquals("Index is ", 0, li2.previousIndex());
186       assertEquals(li.next(), li2.next());
187       assertEquals(li.next(), li2.next()); // the end
188
try
189       {
190          li.next();
191          fail("Should throw an exception here ");
192       }
193       catch (NoSuchElementException JavaDoc ex)
194       {
195          ;
196       }
197       try
198       {
199          li2.next();
200          fail("Should throw an exception here ");
201       }
202       catch (NoSuchElementException JavaDoc ex)
203       {
204          ;
205       }
206
207       assertEquals("Index is ", 3, li.nextIndex());
208       assertEquals("Index is ", 3, li2.nextIndex());
209       assertEquals("Index is ", 2, li.previousIndex());
210       assertEquals("Index is ", 2, li2.previousIndex());
211       li.previous();
212       li2.previous();
213       assertEquals("Index is ", 2, li.nextIndex());
214       assertEquals("Index is ", 2, li2.nextIndex());
215       assertEquals("Index is ", 1, li.previousIndex());
216       assertEquals("Index is ", 1, li2.previousIndex());
217       li.previous();
218       li2.previous();
219       li.previous();
220       li2.previous();
221
222       try
223       {
224          li.previous();
225          fail("Should throw an exception here ");
226       }
227       catch (NoSuchElementException JavaDoc ex)
228       {
229          ;
230       }
231
232       try
233       {
234          li2.previous();
235          fail("Should throw an exception here ");
236       }
237       catch (NoSuchElementException JavaDoc ex)
238       {
239          ;
240       }
241
242       try
243       {
244          assertEquals(li.next(), li2.next());
245          li.remove();
246          li2.remove();
247       }
248       catch (Exception JavaDoc e)
249       {
250          fail("ListIterator.remove failed" + e);
251       }
252
253
254       try
255       {
256          assertEquals(li.next(), li2.next());
257          li.remove();
258          li2.remove();
259       }
260       catch (Exception JavaDoc e)
261       {
262          fail("ListIterator.remove failed" + e);
263       }
264
265       try
266       {
267          assertEquals(li.next(), li2.next());
268          assertEquals("ListIterator.remove test problem with nextIndex, cache next index=" + li.nextIndex() +
269                  ", jdk next index=" + li2.nextIndex() + "cache list size = " + languages.size() + ", jdk list size = " + languages.size(),
270                  li.nextIndex(), li2.nextIndex());
271          li2.set("German");
272          li.set("German");
273          String JavaDoc s1 = (String JavaDoc) li.previous();
274          String JavaDoc s2 = (String JavaDoc) li2.previous();
275          assertEquals(s1, s2);
276          assertEquals(s2, "German");
277       }
278       catch (Exception JavaDoc e)
279       {
280          fail("ListIterator.remove failed" + e + ", cache list size = " + languages.size() + ", jdk list size = " + languages.size());
281       }
282
283       try
284       {
285          assertEquals(li.next(), li2.next());
286          li2.add("Vulcan");
287          li.add("Vulcan");
288          String JavaDoc s1 = (String JavaDoc) li.previous();
289          String JavaDoc s2 = (String JavaDoc) li2.previous();
290          assertEquals(s1, s2);
291          assertEquals(s2, "Vulcan");
292       }
293       catch (Exception JavaDoc e)
294       {
295          fail("ListIterator.add failed" + e + ", cache list size = " + languages.size() + ", jdk list size = " + languages.size());
296       }
297
298    }
299
300
301    public void testAttachAndDetach() throws Exception JavaDoc
302    {
303       List JavaDoc list = new ArrayList JavaDoc();
304       list.add("English");
305       list.add("French");
306       list.add("Taiwanese");
307
308       cache_.attach("/test", list); // attach
309
list = (List JavaDoc) cache_.find("/test");
310       assertEquals("Size ", 3, list.size());
311
312       list = (List JavaDoc) cache_.detach("/test");
313       assertEquals("Size ", 3, list.size());
314
315       System.out.println("**** End of cache content **** ");
316       list.remove(2);
317       list.add("Hoklo");
318       assertEquals("Size ", 3, list.size());
319       assertEquals("Content ", "Hoklo", list.get(2));
320
321       // Try to re-attach
322
cache_.attach("/test", list);
323       list.remove(2);
324       assertEquals("Size ", 2, list.size());
325    }
326
327    public void testPojoAttachAndDetach() throws Exception JavaDoc
328    {
329       Address add1 = new Address();
330       add1.setCity("San Jose");
331       add1.setZip(95123);
332
333       Address add2 = new Address();
334       add2.setCity("Sunnyvale");
335       add2.setZip(94086);
336
337       Address add3 = new Address();
338       add3.setCity("Santa Clara");
339       add3.setZip(951131);
340
341       List JavaDoc list = new ArrayList JavaDoc();
342       list.add(add1);
343       list.add(add2);
344       list.add(add3);
345
346       cache_.attach("/test", list); // attach
347
list = (List JavaDoc) cache_.find("/test");
348       assertEquals("Size ", 3, list.size());
349
350       list = (List JavaDoc) cache_.detach("/test");
351       assertEquals("Size ", 3, list.size());
352
353       System.out.println("**** End of cache content **** ");
354       list.remove(2);
355       list.add(add2);
356       assertEquals("Size ", 3, list.size());
357       assertEquals("Content ", add2, list.get(2));
358
359       // Try to re-attach
360
cache_.attach("/test", list);
361       list.remove(2);
362       assertEquals("Size ", 2, list.size());
363    }
364
365    public void testEqual1() throws Exception JavaDoc
366    {
367       List JavaDoc list1 = new ArrayList JavaDoc();
368       list1.add("ID1");
369       list1.add("ID2");
370       cache_.attach("test1", list1);
371       list1 = (List JavaDoc)cache_.find("test1");
372
373       List JavaDoc list2 = new ArrayList JavaDoc();
374       list2.add("ID1");
375       list2.add("ID2");
376       cache_.attach("test2", list2);
377       list2 = (List JavaDoc)cache_.find("test2");
378
379       List JavaDoc list3 = new ArrayList JavaDoc();
380       list3.add("ID2");
381       list3.add("ID1");
382       cache_.attach("test3", list3);
383       list3 = (List JavaDoc)cache_.find("test3");
384
385       assertEquals("List should be equal: ", list1, list1);
386       assertTrue("List should be equal: ", list1.equals(list1));
387       assertTrue("List should be equal: ", list1.equals(list2));
388       assertFalse("List should not be equal: ", list1.equals(list3));
389    }
390
391    public void testEqual2() throws Exception JavaDoc
392    {
393       List JavaDoc list1 = new ArrayList JavaDoc();
394       cache_.attach("test1", list1);
395       list1 = (List JavaDoc)cache_.find("test1");
396       list1.add("ID1");
397       list1.add("ID2");
398
399       List JavaDoc list2 = new ArrayList JavaDoc();
400       cache_.attach("test2", list2);
401       list2 = (List JavaDoc)cache_.find("test2");
402       list2.add("ID1");
403       list2.add("ID2");
404
405       List JavaDoc list3 = new ArrayList JavaDoc();
406       cache_.attach("test3", list3);
407       list3 = (List JavaDoc)cache_.find("test3");
408       list3.add("ID2");
409       list3.add("ID1");
410
411       assertEquals("List should be equal: ", list1, list1);
412       assertTrue("List should be equal: ", list1.equals(list1));
413       assertTrue("List should be equal: ", list1.equals(list2));
414       assertFalse("List should not be equal: ", list1.equals(list3));
415    }
416
417    public static Test suite() throws Exception JavaDoc
418    {
419       return new TestSuite(CachedListTest.class);
420    }
421
422    public static void main(String JavaDoc[] args) throws Exception JavaDoc
423    {
424       junit.textui.TestRunner.run(suite());
425    }
426
427 }
428
Popular Tags