< prev index next >

test/valhalla/mvt/MVTAccessCheck.java

Print this page
rev 17246 : [mq]: findWither-access

@@ -2,13 +2,11 @@
  * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
  * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
+ * published by the Free Software Foundation.
  *
  * This code is distributed in the hope that it will be useful, but WITHOUT
  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  * version 2 for more details (a copy is included in the LICENSE file that

@@ -23,78 +21,86 @@
  * questions.
  */
 
 /*
  * @test
- * @run main/othervm -Xint -Xverify:none -XX:+EnableMVT -XX:+ValueArrayFlatten MVTAccessCheck
- * @run main/othervm -Xint -Xverify:none -XX:+EnableMVT -XX:-ValueArrayFlatten MVTAccessCheck
- * @run main/othervm -Xint -Xverify:none -XX:+EnableMVT -Dvalhalla.enableValueLambdaForms=true MVTAccessCheck
- * @run main/othervm -Xint -Xverify:none -XX:+EnableMVT -Dvalhalla.enableValueLambdaForms=true -Dvalhalla.enablePoolPatches=true MVTAccessCheck
+ * @run testng/othervm -Xint -Xverify:none -XX:+EnableMVT -XX:+ValueArrayFlatten MVTAccessCheck
+ * @run testng/othervm -Xint -Xverify:none -XX:+EnableMVT -XX:-ValueArrayFlatten MVTAccessCheck
+ * @run testng/othervm -Xint -Xverify:none -XX:+EnableMVT -Dvalhalla.enableValueLambdaForms=true MVTAccessCheck
+ * @run testng/othervm -Xint -Xverify:none -XX:+EnableMVT -Dvalhalla.enableValueLambdaForms=true -Dvalhalla.enablePoolPatches=true MVTAccessCheck
  */
 
 import jdk.experimental.value.ValueType;
+import org.testng.Assert;
+import org.testng.annotations.Test;
 
 import java.lang.invoke.MethodHandle;
 import java.lang.invoke.MethodHandles;
 
+import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertTrue;
+
+@Test
 public class MVTAccessCheck {
 
-    public static void main(String[] args) throws Throwable {
-        MethodHandles.Lookup lookup = MethodHandles.lookup();
-        Class<?> VCC = PrivatePoint.class;
-        ValueType<?> VT = ValueType.forClass(VCC);
-        String[] fieldNames = {"x", "y", "z"};
-        Class<?>[] fieldTypes = {int.class, short.class, short.class};
+    static final ValueType<?> VT_Point = ValueType.forClass(Point.class);
+    static final ValueType<?> VT_PrivatePoint = ValueType.forClass(PrivatePoint.class);
+
+    static final String[] FIELD_NAMES = {"x", "y", "z"};
+    static final  Class<?>[] FIELD_TYPES = {int.class, short.class, short.class};
 
-        for (int i = 0; i < fieldNames.length; i++) {
+    public void testGetter() throws Throwable {
+        for (int i = 0; i < FIELD_NAMES.length; i++) {
             final int offset = i;
-            assertThrow(() -> VT.findGetter(lookup, fieldNames[offset], fieldTypes[offset]),IllegalAccessException.class);
+            assertThrow(() -> VT_PrivatePoint.findGetter(
+                    MethodHandles.lookup(), FIELD_NAMES[offset], FIELD_TYPES[offset]), IllegalAccessException.class);
+        }
+    }
+
+    public void testWither() throws Throwable {
+        testWither(VT_Point);
+        testWither(VT_PrivatePoint);
         }
 
-        for (int i = 0; i < fieldNames.length; i++) {
+    void testWither(ValueType<?> vt) throws Throwable {
+        for (int i = 0; i < FIELD_NAMES.length; i++) {
             final int offset = i;
-            assertThrow(() -> VT.findWither(lookup, fieldNames[offset], fieldTypes[offset]), IllegalAccessException.class);
+            assertThrow(() -> vt.findWither(
+                    MethodHandles.lookup(), FIELD_NAMES[offset], FIELD_TYPES[offset]), IllegalAccessException.class);
+        }
         }
 
+    public void testSubstitutability() throws Throwable {
         PrivatePoint[] pts = {new PrivatePoint(1, (short) 6, (short) 3), new PrivatePoint(1, (short) 2, (short) 3)};
 
-        MethodHandle substTest = VT.substitutabilityTest();
+        MethodHandle substTest = VT_PrivatePoint.substitutabilityTest();
         for (PrivatePoint p1 : pts) {
             for (PrivatePoint p2 : pts) {
                 boolean b1 = (boolean) substTest.invoke(p1, p2);
                 boolean b2 = p1.equals(p2);
-                assertTrue(b1 == b2);
+                assertEquals(b1, b2);
             }
         }
 
-        MethodHandle hash = VT.substitutabilityHashCode();
+        MethodHandle hash = VT_PrivatePoint.substitutabilityHashCode();
         for (PrivatePoint p1 : pts) {
             for (PrivatePoint p2 : pts) {
                 boolean vHashEq = (int) hash.invoke(p1) == (int) hash.invoke(p2);
                 boolean rHashEq = p1.hashCode() == p2.hashCode();
-                assertTrue(vHashEq == rHashEq);
+                assertEquals(vHashEq, rHashEq);
             }
         }
     }
 
-    static int assertCount = 0;
-
     interface MHAction {
         void run() throws Throwable;
     }
 
     static void assertThrow(MHAction action, Class<? extends Throwable> ex) {
         try {
             action.run();
-            assertTrue(false);
+            Assert.fail();
         } catch (Throwable t) {
             assertTrue(ex.isAssignableFrom(t.getClass()));
         }
     }
-
-    static void assertTrue(boolean cond) {
-        assertCount++;
-        if (!cond) {
-            throw new AssertionError();
-        }
-    }
 }
< prev index next >