< prev index next >
test/jdk/java/foreign/TestByteBuffer.java
Print this page
M TestByteBuffer.java
@@ -76,11 +76,11 @@
import jdk.internal.foreign.MemoryAddressImpl;
import jdk.internal.foreign.NativeMemorySegmentImpl;
import org.testng.SkipException;
import org.testng.annotations.*;
import sun.nio.ch.DirectBuffer;
-
+import static jdk.incubator.foreign.MemorySegment.*;
import static org.testng.Assert.*;
public class TestByteBuffer {
static Path tempPath;
@@ -234,10 +234,25 @@
checkTuples(base, mbb);
});
}
}
+ static final int ALL_ACCESS_MODES = READ | WRITE | CLOSE | ACQUIRE | HANDOFF;
+
+ @Test
+ public void testDefaultAccessModesMappedSegment() throws Throwable {
+ try (MappedMemorySegment segment = MemorySegment.mapFromPath(tempPath, 8, FileChannel.MapMode.READ_WRITE)) {
+ assertTrue(segment.hasAccessModes(ALL_ACCESS_MODES));
+ assertEquals(segment.accessModes(), ALL_ACCESS_MODES);
+ }
+
+ try (MappedMemorySegment segment = MemorySegment.mapFromPath(tempPath, 8, FileChannel.MapMode.READ_ONLY)) {
+ assertTrue(segment.hasAccessModes(ALL_ACCESS_MODES & ~WRITE));
+ assertEquals(segment.accessModes(), ALL_ACCESS_MODES& ~WRITE);
+ }
+ }
+
@Test
public void testMappedSegment() throws Throwable {
File f = new File("test2.out");
f.createNewFile();
f.deleteOnExit();
@@ -444,10 +459,25 @@
MemoryAddress.copy(nativeArray.baseAddress(), heapArray.baseAddress(), bytes);
checker.accept(heapArray.baseAddress());
}
}
+ @Test
+ public void testDefaultAccessModesOfBuffer() {
+ ByteBuffer rwBuffer = ByteBuffer.wrap(new byte[4]);
+ try (MemorySegment segment = MemorySegment.ofByteBuffer(rwBuffer)) {
+ assertTrue(segment.hasAccessModes(ALL_ACCESS_MODES));
+ assertEquals(segment.accessModes(), ALL_ACCESS_MODES);
+ }
+
+ ByteBuffer roBuffer = rwBuffer.asReadOnlyBuffer();
+ try (MemorySegment segment = MemorySegment.ofByteBuffer(roBuffer)) {
+ assertTrue(segment.hasAccessModes(ALL_ACCESS_MODES & ~WRITE));
+ assertEquals(segment.accessModes(), ALL_ACCESS_MODES & ~WRITE);
+ }
+ }
+
@Test(dataProvider="bufferSources")
public void testBufferToSegment(ByteBuffer bb, Predicate<MemorySegment> segmentChecker) {
MemorySegment segment = MemorySegment.ofByteBuffer(bb);
assertEquals(segment.hasAccessModes(MemorySegment.WRITE), !bb.isReadOnly());
assertTrue(segmentChecker.test(segment));
< prev index next >