Clover coverage report -
Coverage timestamp: Wed Jan 31 2007 15:38:53 EST
file stats: LOC: 379   Methods: 20
NCLOC: 311   Classes: 1
 
 Source file Conditionals Statements Methods TOTAL
LocalTest.java 50% 95.9% 95% 92.3%
coverage coverage
 1    /*
 2    * JBoss, Home of Professional Open Source
 3    *
 4    * Distributable under LGPL license.
 5    * See terms of license at gnu.org.
 6    */
 7   
 8    package org.jboss.cache.pojo.region;
 9   
 10    import junit.framework.Test;
 11    import junit.framework.TestCase;
 12    import junit.framework.TestSuite;
 13    import org.apache.commons.logging.Log;
 14    import org.apache.commons.logging.LogFactory;
 15    import org.jboss.aop.proxy.ClassProxy;
 16    import org.jboss.cache.CacheImpl;
 17    import org.jboss.cache.Fqn;
 18    import org.jboss.cache.Node;
 19    import org.jboss.cache.pojo.InternalConstant;
 20    import org.jboss.cache.pojo.PojoCache;
 21    import org.jboss.cache.pojo.PojoCacheFactory;
 22    import org.jboss.cache.pojo.test.Address;
 23    import org.jboss.cache.pojo.test.Person;
 24    import org.jboss.cache.pojo.test.Student;
 25   
 26    import java.util.ArrayList;
 27    import java.util.HashMap;
 28    import java.util.HashSet;
 29    import java.util.List;
 30    import java.util.Map;
 31    import java.util.Set;
 32   
 33    /**
 34    * Basic PojoCache test case.
 35    *
 36    * @author Ben Wang
 37    */
 38   
 39    public class LocalTest extends TestCase
 40    {
 41    Log log = LogFactory.getLog(org.jboss.cache.pojo.region.LocalTest.class);
 42    PojoCache cache_;
 43    static final String REGION = "person";
 44   
 45  26 public LocalTest(String name)
 46    {
 47  26 super(name);
 48    }
 49   
 50  26 protected void setUp() throws Exception
 51    {
 52  26 super.setUp();
 53  26 log.info("setUp() ....");
 54  26 String configFile = "META-INF/local-service.xml";
 55  26 boolean toStart = false;
 56  26 cache_ = PojoCacheFactory.createCache(configFile, toStart);
 57  26 cache_.start();
 58  26 cache_.getCache().getRegion(Fqn.fromString(REGION), true);
 59  26 cache_.getCache().getRegion(Fqn.fromString("RANDOM"), true);
 60    }
 61   
 62  26 protected void tearDown() throws Exception
 63    {
 64  26 super.tearDown();
 65  26 cache_.stop();
 66    }
 67   
 68    // public void testDummy() {}
 69   
 70  22 private Person createPerson(String id, String name, int age)
 71    {
 72  22 Person p = new Person();
 73  22 p.setName(name);
 74  22 p.setAge(age);
 75  22 Address add = new Address();
 76  22 add.setZip(95123);
 77  22 add.setCity("San Jose");
 78  22 p.setAddress(add);
 79  22 cache_.attach(id, p);
 80  22 return p;
 81    }
 82   
 83  2 private Student createStudent(String id, String name, int age, String grade)
 84    {
 85  2 Student p = new Student();
 86  2 p.setName(name);
 87  2 p.setAge(age);
 88  2 p.setYear(grade);
 89  2 Address add = new Address();
 90  2 add.setZip(95123);
 91  2 add.setCity("San Jose");
 92  2 p.setAddress(add);
 93  2 cache_.attach(id, p);
 94  2 return p;
 95    }
 96   
 97  2 public void testSimple() throws Exception
 98    {
 99  2 log.info("testSimple() ....");
 100  2 Person p = createPerson("person/test1", "Joe Black", 32);
 101  2 assertEquals((Object) "Joe Black", p.getName());
 102   
 103  2 assertTrue("Region node should exist ",
 104    cache_.getCache().getRoot().hasChild(new Fqn(REGION)));
 105  2 Fqn fqn = new Fqn(Fqn.fromString(REGION), InternalConstant.JBOSS_INTERNAL);
 106  2 assertTrue("Internal region node should exist ",
 107    cache_.getCache().getRoot().hasChild(fqn));
 108    }
 109   
 110  2 public void testModification() throws Exception
 111    {
 112  2 Person joe = createPerson("person/test2", "Joe", 32);
 113  2 joe.setName("Joe Black");
 114  2 assertEquals(joe.getName(), "Joe Black");
 115  2 cache_.detach("person/test2");
 116    }
 117   
 118  2 public void testRemove() throws Exception
 119    {
 120  2 Person joe = createPerson("person/test3", "Joe", 32);
 121  2 cache_.detach("person/test3");
 122   
 123  2 String str = ((CacheImpl) cache_.getCache()).printDetails();
 124  2 System.out.println("**** Details ***/n" + str);
 125   
 126  2 Fqn fqn = new Fqn(Fqn.fromString(REGION), InternalConstant.JBOSS_INTERNAL);
 127  2 Node n = cache_.getCache().getRoot().getChild(fqn);
 128  2 assertTrue("Internal region node should not exist ",
 129    n.getChildren().size() == 0);
 130    }
 131   
 132  2 public void testDynamicRefSwapping() throws Exception
 133    {
 134  2 Person person = createPerson("person/test3", "Joe", 32);
 135  2 try
 136    {
 137  2 person.setAge(30);
 138  2 List med = person.getMedication();
 139  2 assertNull("Medication should be null ", med);
 140  2 person.setAge(60);
 141  2 med = person.getMedication();
 142  2 assertEquals("Medication ", (Object) "Lipitor", (Object) med.get(0));
 143    }
 144    catch (Exception e)
 145    {
 146    // should be thrown
 147    }
 148    }
 149   
 150  2 public void testMap() throws Exception
 151    {
 152  2 log.info("testMap() ....");
 153  2 Person ben = createPerson("person/test1", "Ben Wang", 40);
 154  2 assertEquals((Object) "Ben Wang", ben.getName());
 155  2 Map<String, String> hobbies = ben.getHobbies();
 156  2 if (hobbies == null)
 157    {
 158  2 hobbies = new HashMap<String, String>();
 159  2 ben.setHobbies(hobbies);
 160    // NB: it is neccessary to get hobbies again to get advised version
 161  2 hobbies = ben.getHobbies();
 162    }
 163  2 hobbies.put("1", "English");
 164  2 hobbies.put("2", "French");
 165  2 if (!(hobbies instanceof ClassProxy))
 166    {
 167  0 fail("Hobbies is not an instance of ClassProxy");
 168    }
 169   
 170  2 hobbies = ben.getHobbies();
 171  2 assertEquals("Hobbies size", 2, hobbies.size());
 172  2 log.debug("Hobbies is " + hobbies.toString());
 173    }
 174   
 175  2 public void testMapDetachAttach() throws Exception
 176    {
 177  2 log.info("testMapDetachATtach() ....");
 178  2 Person ben = createPerson("person/test1", "Ben Wang", 40);
 179  2 assertEquals((Object) "Ben Wang", ben.getName());
 180  2 Map<String, String> hobbies = ben.getHobbies();
 181  2 if (hobbies == null)
 182    {
 183  2 hobbies = new HashMap<String, String>();
 184  2 ben.setHobbies(hobbies);
 185    // NB: it is neccessary to get hobbies again to get advised version
 186  2 hobbies = ben.getHobbies();
 187    }
 188  2 hobbies.put("1", "English");
 189  2 hobbies.put("2", "French");
 190  2 if (!(hobbies instanceof ClassProxy))
 191    {
 192  0 fail("Hobbies is not an instance of ClassProxy");
 193    }
 194   
 195  2 hobbies = ben.getHobbies();
 196  2 assertEquals("Hobbies size", 2, hobbies.size());
 197  2 log.debug("Hobbies is " + hobbies.toString());
 198   
 199  2 cache_.detach("person/test1");
 200   
 201  2 Fqn fqn = new Fqn(Fqn.fromString(REGION), InternalConstant.JBOSS_INTERNAL);
 202  2 Node n = cache_.getCache().getRoot().getChild(fqn);
 203  2 assertTrue("Internal region node should not exist ",
 204    n.getChildren().size() == 0);
 205   
 206  2 hobbies = ben.getHobbies();
 207  2 if ((hobbies instanceof ClassProxy))
 208    {
 209  0 fail("Hobbies should not be an instance of ClassProxy");
 210    }
 211   
 212  2 cache_.attach("person/1", ben);
 213   
 214    }
 215   
 216  2 public void testMap2() throws Throwable
 217    {
 218  2 Person joe = createPerson("person/test5", "Joe Black", 32);
 219  2 Map<String, String> hobby = new HashMap<String, String>();
 220  2 hobby.put("music", "guitar");
 221  2 joe.setHobbies(hobby);
 222  2 Object val = joe.getHobbies().get("music");
 223  2 assertEquals("guitar", val);
 224  2 hobby = joe.getHobbies();
 225  2 hobby.put("novel", "English");
 226  2 assertEquals("Size of map ", 2, joe.getHobbies().size());
 227    }
 228   
 229  2 public void testList() throws Throwable
 230    {
 231  2 Person joe = createPerson("person/test6", "Joe", 50);
 232  2 List<String> language = new ArrayList<String>();
 233  2 language.add("German");
 234  2 language.add("English");
 235  2 language.add("French");
 236  2 joe.setLanguages(language);
 237   
 238  2 assertEquals("Size of language ", 3, joe.getLanguages().size());
 239  2 language = joe.getLanguages();
 240  2 language.add("Mandarin");
 241  2 language.add("Taiwanese");
 242  2 language.add("Haka");
 243  2 assertEquals("Size of language ", 6, joe.getLanguages().size());
 244   
 245  2 String English = (String) language.get(1);
 246  2 assertEquals((Object) "English", English);
 247  2 cache_.detach("person/test6");
 248    }
 249   
 250  2 public void testListDetachAndAttach() throws Throwable
 251    {
 252  2 String id = "person/test6";
 253  2 Person joe = new Person();
 254  2 List<String> language = new ArrayList<String>();
 255  2 language.add("German");
 256  2 language.add("English");
 257  2 language.add("French");
 258  2 joe.setLanguages(language);
 259   
 260  2 cache_.attach(id, joe);
 261   
 262  2 cache_.detach(id);
 263  2 joe.getAge();
 264  2 cache_.attach(id, joe);
 265    }
 266   
 267  2 public void testListDetachAndAttach2() throws Throwable
 268    {
 269  2 String id = "person/test6";
 270  2 Person joe = createPerson(id, "Joe", 50);
 271  2 List<String> language = new ArrayList<String>();
 272  2 language.add("German");
 273  2 language.add("English");
 274  2 language.add("French");
 275  2 joe.setLanguages(language);
 276   
 277  2 assertEquals("Size of language ", 3, joe.getLanguages().size());
 278  2 language = joe.getLanguages();
 279  2 language.add("Mandarin");
 280  2 language.add("Taiwanese");
 281  2 language.add("Haka");
 282  2 assertEquals("Size of language ", 6, joe.getLanguages().size());
 283   
 284  2 String English = (String) language.get(1);
 285  2 assertEquals((Object) "English", English);
 286   
 287  2 if (!(language instanceof ClassProxy))
 288    {
 289  0 fail("Language is not an instance of ClassProxy");
 290    }
 291   
 292  2 cache_.detach(id);
 293  2 joe.getAge();
 294  2 language = joe.getLanguages();
 295  2 if ((language instanceof ClassProxy))
 296    {
 297  0 fail("Language is an instance of ClassProxy");
 298    }
 299   
 300  2 cache_.attach(id, joe);
 301    }
 302   
 303  2 public void testSet() throws Throwable
 304    {
 305  2 Person joe = createPerson("person/test7", "Joe", 27);
 306  2 Set<String> skill = new HashSet<String>();
 307  2 skill.add("Java");
 308  2 skill.add("Java");
 309  2 skill.add("Java");
 310  2 joe.setSkills(skill);
 311  2 skill = joe.getSkills();
 312  2 assertEquals("Size of skill ", 1, skill.size());
 313   
 314  2 skill.remove("Java");
 315  2 assertTrue(skill.isEmpty());
 316  2 skill.add("Java");
 317  2 skill.add("J2EE");
 318  2 skill.add("JBoss");
 319  2 assertEquals(new Integer(3), new Integer(skill.size()));
 320    }
 321   
 322  2 public void testSetDetachAttach() throws Throwable
 323    {
 324  2 String id = "person/test7";
 325  2 Person joe = createPerson(id, "Joe", 27);
 326  2 Set<String> skill = new HashSet<String>();
 327  2 skill.add("Java");
 328  2 skill.add("Java");
 329  2 skill.add("Java");
 330  2 joe.setSkills(skill);
 331  2 skill = joe.getSkills();
 332  2 assertEquals("Size of skill ", 1, skill.size());
 333   
 334  2 skill.remove("Java");
 335  2 assertTrue(skill.isEmpty());
 336  2 skill.add("Java");
 337  2 skill.add("J2EE");
 338  2 skill.add("JBoss");
 339  2 assertEquals(new Integer(3), new Integer(skill.size()));
 340   
 341  2 if (!(skill instanceof ClassProxy))
 342    {
 343  0 fail("Skill is not an instance of ClassProxy");
 344    }
 345   
 346  2 cache_.detach(id);
 347  2 joe.getAge();
 348  2 skill = joe.getSkills();
 349  2 if ((skill instanceof ClassProxy))
 350    {
 351  0 fail("Skill is an instance of ClassProxy");
 352    }
 353   
 354  2 cache_.attach(id, joe);
 355    }
 356   
 357  2 public void testInheritance() throws Exception
 358    {
 359  2 Student joe = createStudent("person/joe", "Joe", 32, "Senior");
 360  2 joe.setName("Joe Black");
 361  2 assertEquals(joe.getName(), "Joe Black");
 362  2 joe.setYear("Junior");
 363  2 assertEquals(joe.getYear(), "Junior");
 364  2 cache_.detach("person/joe");
 365    }
 366   
 367   
 368  2 public static Test suite() throws Exception
 369    {
 370  2 return new TestSuite(org.jboss.cache.pojo.region.LocalTest.class);
 371    }
 372   
 373   
 374  0 public static void main(String[] args) throws Exception
 375    {
 376  0 junit.textui.TestRunner.run(org.jboss.cache.pojo.region.LocalTest.suite());
 377    }
 378   
 379    }