Author: aadamchik
Date: Thu Oct 12 17:41:27 2006
New Revision: 463532

URL: http://svn.apache.org/viewvc?view=rev&rev=463532
Log:
CAY-682: Generic Cayenne POJO enhancer
Tests for primitive getters

Modified:
    
incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/test/java/org/apache/cayenne/enhancer/CayenneEnhancerVisitorFactoryTest.java

Modified: 
incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/test/java/org/apache/cayenne/enhancer/CayenneEnhancerVisitorFactoryTest.java
URL: 
http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/test/java/org/apache/cayenne/enhancer/CayenneEnhancerVisitorFactoryTest.java?view=diff&rev=463532&r1=463531&r2=463532
==============================================================================
--- 
incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/test/java/org/apache/cayenne/enhancer/CayenneEnhancerVisitorFactoryTest.java
 (original)
+++ 
incubator/cayenne/main/trunk/core/cayenne-jdk1.5/src/test/java/org/apache/cayenne/enhancer/CayenneEnhancerVisitorFactoryTest.java
 Thu Oct 12 17:41:27 2006
@@ -154,7 +154,7 @@
         assertEquals(PersistenceState.DELETED, state);
     }
 
-    public void testGetterIntercepted() throws Exception {
+    public void testStringGetterIntercepted() throws Exception {
 
         Class e1Class = Class.forName(C1, true, loader);
         assertNotNull(e1Class);
@@ -250,6 +250,42 @@
         assertEquals("y", change[3]);
     }
 
+    public void testIntGetterIntercepted() throws Exception {
+
+        Class e1Class = Class.forName(C1, true, loader);
+        Object o = e1Class.newInstance();
+
+        // attempt calling on detached object - must not fail
+        Method getAttribute2 = e1Class.getDeclaredMethod("getAttribute2", 
(Class[]) null);
+        assertEquals(new Integer(0), getAttribute2.invoke(o, (Object[]) null));
+
+        // now call on attached object
+
+        final Object[] prepared = new Object[2];
+        ObjectContext context = new MockObjectContext() {
+
+            @Override
+            public void prepareForAccess(Persistent object, String property) {
+                prepared[0] = object;
+                prepared[1] = property;
+            }
+        };
+
+        Method setObjectContext = e1Class.getDeclaredMethod(
+                "setObjectContext",
+                new Class[] {
+                    ObjectContext.class
+                });
+
+        setObjectContext.invoke(o, new Object[] {
+            context
+        });
+
+        assertEquals(new Integer(0), getAttribute2.invoke(o, (Object[]) null));
+        assertSame(o, prepared[0]);
+        assertEquals("attribute2", prepared[1]);
+    }
+
     public void testIntSetterIntercepted() throws Exception {
 
         Class e1Class = Class.forName(C1, true, loader);
@@ -305,6 +341,42 @@
         assertEquals(new Integer(4), change[3]);
     }
     
+    public void testDoubleGetterIntercepted() throws Exception {
+
+        Class e1Class = Class.forName(C1, true, loader);
+        Object o = e1Class.newInstance();
+
+        // attempt calling on detached object - must not fail
+        Method getAttribute3 = e1Class.getDeclaredMethod("getAttribute3", 
(Class[]) null);
+        assertEquals(new Double(0d), getAttribute3.invoke(o, (Object[]) null));
+
+        // now call on attached object
+
+        final Object[] prepared = new Object[2];
+        ObjectContext context = new MockObjectContext() {
+
+            @Override
+            public void prepareForAccess(Persistent object, String property) {
+                prepared[0] = object;
+                prepared[1] = property;
+            }
+        };
+
+        Method setObjectContext = e1Class.getDeclaredMethod(
+                "setObjectContext",
+                new Class[] {
+                    ObjectContext.class
+                });
+
+        setObjectContext.invoke(o, new Object[] {
+            context
+        });
+
+        assertEquals(new Double(0d), getAttribute3.invoke(o, (Object[]) null));
+        assertSame(o, prepared[0]);
+        assertEquals("attribute3", prepared[1]);
+    }
+
     public void testDoubleSetterIntercepted() throws Exception {
 
         Class e1Class = Class.forName(C1, true, loader);


Reply via email to