--- old/test/jdk/java/foreign/TestByteBuffer.java 2020-04-30 16:04:05.000000000 +0100 +++ new/test/jdk/java/foreign/TestByteBuffer.java 2020-04-30 16:04:05.000000000 +0100 @@ -78,7 +78,7 @@ 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 { @@ -236,6 +236,21 @@ } } + 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"); @@ -446,6 +461,21 @@ } } + @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 segmentChecker) { MemorySegment segment = MemorySegment.ofByteBuffer(bb);