changeset 21212:9a7125f0eeda

Add test for arrays of interface
author Stefan Anzinger <stefan.anzinger@oracle.com>
date Mon, 04 May 2015 09:10:52 +0200
parents 6b11405f0279
children 0028ab94d268
files graal/com.oracle.graal.nodes.test/src/com/oracle/graal/nodes/test/ObjectStampJoinTest.java
diffstat 1 files changed, 37 insertions(+), 15 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.nodes.test/src/com/oracle/graal/nodes/test/ObjectStampJoinTest.java	Mon May 04 08:49:06 2015 +0200
+++ b/graal/com.oracle.graal.nodes.test/src/com/oracle/graal/nodes/test/ObjectStampJoinTest.java	Mon May 04 09:10:52 2015 +0200
@@ -122,34 +122,56 @@
     }
 
     @Test
-    public void testJoinInterface0() {
-        Stamp a = StampFactory.declared(getType(A.class));
-        Stamp i = StampFactory.declaredTrusted(getType(I.class));
+    public void testJoinInterfaceSimple() {
+        // Tests joining of interface
+        testJoinInterface(A.class, B.class, I.class);
+    }
+
+    @Test
+    public void testJoinInterfaceArray() {
+        // Tests joining of arrays interface
+        testJoinInterface(A[].class, B[].class, I[].class);
+    }
+
+    @Test
+    public void testJoinInterfaceMultiArray() {
+        // Tests joining of multidimensional arrays of interface
+        testJoinInterface(A[][].class, B[][].class, I[][].class);
+    }
+
+    private void testJoinInterface(Class<?> typeA, Class<?> typeB, Class<?> typeI) {
+        testJoinInterface0(typeA, typeI);
+        testJoinInterface1(typeA, typeI);
+        testJoinInterface2(typeB, typeI);
+        testJoinInterface3(typeB, typeI);
+    }
+
+    private void testJoinInterface0(Class<?> typeA, Class<?> typeI) {
+        Stamp a = StampFactory.declared(getType(typeA));
+        Stamp i = StampFactory.declaredTrusted(getType(typeI));
         Assert.assertNotSame(StampFactory.empty(Kind.Object), join(a, i));
     }
 
-    @Test
-    public void testJoinInterface1() {
-        Stamp aNonNull = StampFactory.declaredNonNull(getType(A.class));
-        Stamp i = StampFactory.declaredTrusted(getType(I.class));
+    private void testJoinInterface1(Class<?> typeA, Class<?> typeI) {
+        Stamp aNonNull = StampFactory.declaredNonNull(getType(typeA));
+        Stamp i = StampFactory.declaredTrusted(getType(typeI));
         Stamp join = join(aNonNull, i);
         Assert.assertTrue(join instanceof ObjectStamp);
         Assert.assertTrue(((ObjectStamp) join).nonNull());
     }
 
-    @Test
-    public void testJoinInterface2() {
-        Stamp bExact = StampFactory.exactNonNull(getType(B.class));
-        Stamp i = StampFactory.declaredTrusted(getType(I.class));
+    private void testJoinInterface2(Class<?> typeB, Class<?> typeI) {
+        Stamp bExact = StampFactory.exactNonNull(getType(typeB));
+        Stamp i = StampFactory.declaredTrusted(getType(typeI));
         Stamp join = join(i, bExact);
         Assert.assertEquals(StampFactory.empty(Kind.Object), join);
     }
 
-    @Test
-    public void testJoinInterface3() {
-        Stamp bExact = StampFactory.exactNonNull(getType(B.class));
-        Stamp i = StampFactory.declared(getType(I.class)); // not trusted
+    private void testJoinInterface3(Class<?> typeB, Class<?> typeI) {
+        Stamp bExact = StampFactory.exactNonNull(getType(typeB));
+        Stamp i = StampFactory.declared(getType(typeI)); // not trusted
         Stamp join = join(i, bExact);
         Assert.assertEquals(bExact, join);
     }
+
 }