< prev index next >

test/jdk/java/foreign/TestSegments.java

Print this page
M TestSegments.java

@@ -41,12 +41,13 @@
 import java.util.List;
 import java.util.Spliterator;
 import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.concurrent.atomic.AtomicReference;
 import java.util.function.LongFunction;
+import java.util.function.Supplier;
 import java.util.stream.Stream;
-
+import static jdk.incubator.foreign.MemorySegment.*;
 import static org.testng.Assert.*;
 
 public class TestSegments {
 
     @Test(dataProvider = "badSizeAndAlignments", expectedExceptions = IllegalArgumentException.class)

@@ -142,10 +143,37 @@
                 start++;
             }
         }
     }
 
+    static final int ALL_ACCESS_MODES = READ | WRITE | CLOSE | ACQUIRE | HANDOFF;
+
+    @DataProvider(name = "segmentFactories")
+    public Object[][] segmentFactories() {
+        List<Supplier<MemorySegment>> l = List.of(
+                () -> MemorySegment.ofArray(new byte[1]),
+                () -> MemorySegment.ofArray(new char[1]),
+                () -> MemorySegment.ofArray(new double[1]),
+                () -> MemorySegment.ofArray(new float[1]),
+                () -> MemorySegment.ofArray(new int[1]),
+                () -> MemorySegment.ofArray(new long[1]),
+                () -> MemorySegment.ofArray(new short[1]),
+                () -> MemorySegment.ofArray(new int[1]),
+                () -> MemorySegment.allocateNative(1),
+                () -> MemorySegment.allocateNative(1, 2),
+                () -> MemorySegment.allocateNative(MemoryLayout.ofValueBits(8, ByteOrder.LITTLE_ENDIAN))
+        );
+        return l.stream().map(s -> new Object[] { s }).toArray(Object[][]::new);
+    }
+    @Test(dataProvider = "segmentFactories")
+    public void testAccessModesOfFactories(Supplier<MemorySegment> memorySegmentSupplier) {
+        try (MemorySegment segment = memorySegmentSupplier.get()) {
+            assertTrue(segment.hasAccessModes(ALL_ACCESS_MODES));
+            assertEquals(segment.accessModes(), ALL_ACCESS_MODES);
+        }
+    }
+
     @Test(dataProvider = "accessModes")
     public void testAccessModes(int accessModes) {
         int[] arr = new int[1];
         for (AccessActions action : AccessActions.values()) {
             MemorySegment segment = MemorySegment.ofArray(arr);
< prev index next >