1   /*
2    * ObjectEnhancerTest.java
3    *
4    * Created on 9 Май 2006 г., 22:21
5    */
6   
7   package org.weda.enhance;
8   
9   import java.util.ArrayList;
10  import org.apache.hivemind.service.ClassFactory;
11  import org.weda.test.WedaTestCase;
12  import org.weda.enhance.impl.ObjectEnhancerImpl;
13  import org.weda.property.ObjectDescriptorRegistry;
14  import org.weda.property.PropertyValue;
15  
16  /**
17   *
18   * @author Mikhail Titov
19   */
20  public class ObjectEnhancerTest extends WedaTestCase {
21      
22      public ObjectEnhancerTest(String name) throws Exception {
23          super(name);
24      }
25         
26      public void test_service() throws Exception {
27          ObjectEnhancer en = 
28                  (ObjectEnhancer)registry.getService(ObjectEnhancer.class);
29          assertNotNull(en);
30          Class clazz = en.enhanceClass(this.getClass());
31          assertEquals(this.getClass(), clazz);
32          //
33          clazz = en.enhanceClass(ObjectForEnhance.class);
34          assertNotNull(clazz);
35          assertFalse(ObjectForEnhance.class.equals(clazz));
36          ObjectForEnhance obj = (ObjectForEnhance)en.newInstance(clazz);
37          checkEnhancedObject(obj);
38          
39          obj = (ObjectForEnhance)clazz.newInstance();
40          en.initObject(obj);
41          checkEnhancedObject(obj);
42      }
43      
44      public void test_INSTANCE() {
45          assertNotNull(ObjectEnhancerImpl.INSTANCE);
46      }
47      
48      private void checkEnhancedObject(ObjectForEnhance obj) throws Exception {
49          assertNotNull(obj);
50          assertEquals("test", obj.test());
51          assertNotNull(obj.getRegistry());
52          assertSame(
53                  registry.getService(ObjectDescriptorRegistry.class)
54                  , obj.getRegistry());
55          assertSame(
56                  registry.getService(PropertyValue.class)
57                  , obj.getPropertyValue());
58          assertNotNull(obj.getClassFactory());
59          assertSame(
60                  registry.getService(ClassFactory.class), obj.getClassFactory());
61          //
62          ArrayList list1, list2;
63          list1 = obj.getCachedObject();
64          list2 = obj.getCachedObject();
65          assertSame(list1, list2);
66          //
67          list1 = obj.getNotCachedObject();
68          list2 = obj.getNotCachedObject();
69          assertNotSame(list1, list2);
70      }
71  
72      
73  }