< prev index next >

test/jdk/java/lang/invoke/VarHandles/VarHandleTestMethodHandleAccessByte.java

Print this page
@@ -19,10 +19,12 @@
   * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
   * or visit www.oracle.com if you need additional information or have any
   * questions.
   */
  
+ // -- This file was mechanically generated: Do not edit! -- //
+ 
  /*
   * @test
   * @run testng/othervm -Diters=20000 VarHandleTestMethodHandleAccessByte
   */
  

@@ -37,10 +39,12 @@
  import java.util.List;
  
  import static org.testng.Assert.*;
  
  public class VarHandleTestMethodHandleAccessByte extends VarHandleBaseTest {
+     static final Class<?> type = byte.class;
+ 
      static final byte static_final_v = (byte)0x01;
  
      static byte static_v;
  
      final byte final_v = (byte)0x01;

@@ -55,25 +59,30 @@
  
      VarHandle vhStaticFinalField;
  
      VarHandle vhArray;
  
+     VarHandle vhValueTypeField;
+ 
      @BeforeClass
      public void setup() throws Exception {
          vhFinalField = MethodHandles.lookup().findVarHandle(
-                 VarHandleTestMethodHandleAccessByte.class, "final_v", byte.class);
+                 VarHandleTestMethodHandleAccessByte.class, "final_v", type);
  
          vhField = MethodHandles.lookup().findVarHandle(
-                 VarHandleTestMethodHandleAccessByte.class, "v", byte.class);
+                 VarHandleTestMethodHandleAccessByte.class, "v", type);
  
          vhStaticFinalField = MethodHandles.lookup().findStaticVarHandle(
-             VarHandleTestMethodHandleAccessByte.class, "static_final_v", byte.class);
+             VarHandleTestMethodHandleAccessByte.class, "static_final_v", type);
  
          vhStaticField = MethodHandles.lookup().findStaticVarHandle(
-             VarHandleTestMethodHandleAccessByte.class, "static_v", byte.class);
+             VarHandleTestMethodHandleAccessByte.class, "static_v", type);
  
          vhArray = MethodHandles.arrayElementVarHandle(byte[].class);
+ 
+         vhValueTypeField = MethodHandles.lookup().findVarHandle(
+                     Value.class, "byte_v", type);
      }
  
  
      @DataProvider
      public Object[][] accessTestCaseProvider() throws Exception {

@@ -98,10 +107,15 @@
                                                       vhArray, f, VarHandleTestMethodHandleAccessByte::testArrayUnsupported,
                                                       false));
              cases.add(new MethodHandleAccessTestCase("Array index out of bounds",
                                                       vhArray, f, VarHandleTestMethodHandleAccessByte::testArrayIndexOutOfBounds,
                                                       false));
+         cases.add(new MethodHandleAccessTestCase("Value type field",
+                                                  vhValueTypeField, f, hs -> testValueTypeField(Value.getInstance(), hs)));
+         cases.add(new MethodHandleAccessTestCase("Value type field unsupported",
+                                                  vhValueTypeField, f, hs -> testValueTypeFieldUnsupported(Value.getInstance(), hs),
+                                                  false));
          }
  
          // Work around issue with jtreg summary reporting which truncates
          // the String result of Object.toString to 30 characters, hence
          // the first dummy argument

@@ -371,10 +385,28 @@
      static void testInstanceFieldUnsupported(VarHandleTestMethodHandleAccessByte recv, Handles hs) throws Throwable {
  
  
      }
  
+     static void testValueTypeField(Value recv, Handles hs) throws Throwable {
+         // Plain
+         {
+             byte x = (byte) hs.get(TestAccessMode.GET).invokeExact(recv);
+             assertEquals(x, (byte)0x01, "get byte value");
+         }
+     }
+ 
+     static void testValueTypeFieldUnsupported(Value recv, Handles hs) throws Throwable {
+         // Plain
+         for (TestAccessMode am : testAccessModesOfType(TestAccessType.SET)) {
+             checkUOE(am, () -> {
+                 hs.get(am).invokeExact(recv, (byte)0x01);
+             });
+         }
+ 
+ 
+     }
  
      static void testStaticField(Handles hs) throws Throwable {
          // Plain
          {
              hs.get(TestAccessMode.SET).invokeExact((byte)0x01);
< prev index next >