7 * published by the Free Software Foundation.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 *
23 */
24
25 /*
26 * @test
27 * @enablePreview
28 * @run testng TestTypeAccess
29 */
30
31 import java.lang.foreign.Arena;
32 import java.lang.foreign.MemorySegment;
33 import java.lang.foreign.ValueLayout;
34 import org.testng.annotations.*;
35
36 import java.lang.invoke.VarHandle;
37 import java.lang.invoke.WrongMethodTypeException;
38
39 public class TestTypeAccess {
40
41 static final VarHandle INT_HANDLE = ValueLayout.JAVA_INT.varHandle();
42 static final VarHandle ADDR_HANDLE = ValueLayout.ADDRESS.varHandle();
43
44 @Test(expectedExceptions=ClassCastException.class)
45 public void testMemoryAddressCoordinateAsString() {
46 int v = (int)INT_HANDLE.get("string");
47 }
48
49 @Test(expectedExceptions=WrongMethodTypeException.class)
50 public void testMemoryCoordinatePrimitive() {
51 int v = (int)INT_HANDLE.get(1);
52 }
53
54 @Test(expectedExceptions=ClassCastException.class)
55 public void testMemoryAddressValueGetAsString() {
56 try (Arena arena = Arena.ofConfined()) {
57 MemorySegment s = arena.allocate(8, 8);;
58 String address = (String)ADDR_HANDLE.get(s);
59 }
60 }
61
62 @Test(expectedExceptions=ClassCastException.class)
63 public void testMemoryAddressValueSetAsString() {
64 try (Arena arena = Arena.ofConfined()) {
65 MemorySegment s = arena.allocate(8, 8);;
66 ADDR_HANDLE.set(s, "string");
67 }
68 }
69
70 @Test(expectedExceptions=WrongMethodTypeException.class)
71 public void testMemoryAddressValueGetAsPrimitive() {
72 try (Arena arena = Arena.ofConfined()) {
73 MemorySegment s = arena.allocate(8, 8);;
74 int address = (int)ADDR_HANDLE.get(s);
75 }
76 }
77
78 @Test(expectedExceptions=WrongMethodTypeException.class)
79 public void testMemoryAddressValueSetAsPrimitive() {
80 try (Arena arena = Arena.ofConfined()) {
81 MemorySegment s = arena.allocate(8, 8);;
82 ADDR_HANDLE.set(s, 1);
83 }
84 }
85
86 }
|
7 * published by the Free Software Foundation.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 *
23 */
24
25 /*
26 * @test
27 * @run testng TestTypeAccess
28 */
29
30 import java.lang.foreign.Arena;
31 import java.lang.foreign.MemorySegment;
32 import java.lang.foreign.ValueLayout;
33 import org.testng.annotations.*;
34
35 import java.lang.invoke.VarHandle;
36 import java.lang.invoke.WrongMethodTypeException;
37
38 public class TestTypeAccess {
39
40 static final VarHandle INT_HANDLE = ValueLayout.JAVA_INT.varHandle();
41 static final VarHandle ADDR_HANDLE = ValueLayout.ADDRESS.varHandle();
42
43 @Test(expectedExceptions=ClassCastException.class)
44 public void testMemoryAddressCoordinateAsString() {
45 int v = (int)INT_HANDLE.get("string", 0L);
46 }
47
48 @Test(expectedExceptions=WrongMethodTypeException.class)
49 public void testMemoryCoordinatePrimitive() {
50 int v = (int)INT_HANDLE.get(1);
51 }
52
53 @Test(expectedExceptions=ClassCastException.class)
54 public void testMemoryAddressValueGetAsString() {
55 try (Arena arena = Arena.ofConfined()) {
56 MemorySegment s = arena.allocate(8, 8);
57 String address = (String)ADDR_HANDLE.get(s, 0L);
58 }
59 }
60
61 @Test(expectedExceptions=ClassCastException.class)
62 public void testMemoryAddressValueSetAsString() {
63 try (Arena arena = Arena.ofConfined()) {
64 MemorySegment s = arena.allocate(8, 8);;
65 ADDR_HANDLE.set(s, 0L, "string");
66 }
67 }
68
69 @Test(expectedExceptions=WrongMethodTypeException.class)
70 public void testMemoryAddressValueGetAsPrimitive() {
71 try (Arena arena = Arena.ofConfined()) {
72 MemorySegment s = arena.allocate(8, 8);
73 int address = (int)ADDR_HANDLE.get(s, 0L);
74 }
75 }
76
77 @Test(expectedExceptions=WrongMethodTypeException.class)
78 public void testMemoryAddressValueSetAsPrimitive() {
79 try (Arena arena = Arena.ofConfined()) {
80 MemorySegment s = arena.allocate(8, 8);;
81 ADDR_HANDLE.set(s, 1);
82 }
83 }
84
85 }
|