# HG changeset patch # User Stefan Anzinger # Date 1430723452 -7200 # Node ID 9a7125f0eedad9d0f9e20d0c38d6a4cb163541fb # Parent 6b11405f0279c18f44311d03b44e240b0ba7e9b8 Add test for arrays of interface diff -r 6b11405f0279 -r 9a7125f0eeda graal/com.oracle.graal.nodes.test/src/com/oracle/graal/nodes/test/ObjectStampJoinTest.java --- 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); } + }