Copilot commented on code in PR #675:
URL: https://github.com/apache/datasketches-java/pull/675#discussion_r2243669278


##########
src/test/java/org/apache/datasketches/quantiles/ReadOnlyMemoryTest.java:
##########
@@ -184,92 +185,92 @@ public void wrapEmptyUpdateSketch() {
   @Test
   public void wrapEmptyCompactSketch() {
     final UpdateDoublesSketch s1 = DoublesSketch.builder().build();
-    final Memory mem = Memory.wrap(s1.compact().toByteArray());
-    DoublesSketch s2 = DoublesSketch.wrap(mem); // compact, so this is ok
+    final MemorySegment seg = 
MemorySegment.ofArray(s1.compact().toByteArray());
+    final DoublesSketch s2 = DoublesSketch.wrap(seg); // compact, so this is ok
     Assert.assertTrue(s2.isEmpty());
   }
 
   @Test
   public void heapifyUnionFromSparse() {
-    UpdateDoublesSketch s1 = DoublesSketch.builder().build();
+    final UpdateDoublesSketch s1 = DoublesSketch.builder().build();
     s1.update(1);
     s1.update(2);
-    Memory mem = Memory.wrap(s1.toByteArray(false));
-    DoublesUnion u = DoublesUnion.heapify(mem);
+    final MemorySegment seg = MemorySegment.ofArray(s1.toByteArray(false));
+    final DoublesUnion u = DoublesUnion.heapify(seg);
     u.update(3);
-    DoublesSketch s2 = u.getResult();
+    final DoublesSketch s2 = u.getResult();
     Assert.assertEquals(s2.getMinItem(), 1.0);
     Assert.assertEquals(s2.getMaxItem(), 3.0);
   }
 
   @Test
   public void heapifyUnionFromCompact() {
-    UpdateDoublesSketch s1 = DoublesSketch.builder().build();
+    final UpdateDoublesSketch s1 = DoublesSketch.builder().build();
     s1.update(1);
     s1.update(2);
-    Memory mem = Memory.wrap(s1.toByteArray(true));
-    DoublesUnion u = DoublesUnion.heapify(mem);
+    final MemorySegment seg = MemorySegment.ofArray(s1.toByteArray(true));
+    final DoublesUnion u = DoublesUnion.heapify(seg);
     u.update(3);
-    DoublesSketch s2 = u.getResult();
+    final DoublesSketch s2 = u.getResult();
     Assert.assertEquals(s2.getMinItem(), 1.0);
     Assert.assertEquals(s2.getMaxItem(), 3.0);
   }
 
   @Test
   public void wrapUnionFromSparse() {
-    UpdateDoublesSketch s1 = DoublesSketch.builder().build();
+    final UpdateDoublesSketch s1 = DoublesSketch.builder().build();
     s1.update(1);
     s1.update(2);
-    Memory mem = Memory.wrap(s1.toByteArray(false));
-    DoublesUnion u = DoublesUnion.wrap(mem);
-    DoublesSketch s2 = u.getResult();
+    final MemorySegment seg = 
MemorySegment.ofArray(s1.toByteArray(false)).asReadOnly();
+    final DoublesUnion u = DoublesUnion.wrap(seg);

Review Comment:
   The MemorySegment should be made read-only using `.asReadOnly()` to properly 
test read-only behavior, as the original test was checking read-only buffer 
behavior.



##########
src/test/java/org/apache/datasketches/quantiles/DoublesSketchTest.java:
##########
@@ -115,66 +114,68 @@ static void testSketchEquality(final DoublesSketch 
sketch1,
 
   @Test
   public void checkIsSameResource() {
-    int k = 16;
-    WritableMemory mem = WritableMemory.writableWrap(new byte[(k*16) +24]);
-    WritableMemory cmem = WritableMemory.writableWrap(new byte[8]);
-    DirectUpdateDoublesSketch duds =
-            (DirectUpdateDoublesSketch) 
DoublesSketch.builder().setK(k).build(mem);
-    assertTrue(duds.isSameResource(mem));
-    DirectCompactDoublesSketch dcds = (DirectCompactDoublesSketch) 
duds.compact(cmem);
-    assertTrue(dcds.isSameResource(cmem));
+    final int k = 16;
+    final MemorySegment seg = MemorySegment.ofArray(new byte[(k*16) +24]);
+    final MemorySegment cseg = MemorySegment.ofArray(new byte[8]);
+    final DirectUpdateDoublesSketch duds =
+            (DirectUpdateDoublesSketch) 
DoublesSketch.builder().setK(k).build(seg);
+    assertTrue(duds.isSameResource(seg));
+    final DirectCompactDoublesSketch dcds = (DirectCompactDoublesSketch) 
duds.compact(cseg);
+    assertTrue(dcds.isSameResource(cseg));
 
-    UpdateDoublesSketch uds = DoublesSketch.builder().setK(k).build();
-    assertFalse(uds.isSameResource(mem));
+    final UpdateDoublesSketch uds = DoublesSketch.builder().setK(k).build();
+    assertFalse(uds.isSameResource(seg));
   }
 
   @Test
   public void checkEmptyExceptions() {
-    int k = 16;
-    UpdateDoublesSketch uds = DoublesSketch.builder().setK(k).build();
-    try { uds.getMaxItem(); fail(); } catch (IllegalArgumentException e) {}
-    try { uds.getMinItem(); fail(); } catch (IllegalArgumentException e) {}
-    try { uds.getRank(1.0); fail(); } catch (IllegalArgumentException e) {}
-    try { uds.getPMF(new double[] { 0, 0.5, 1.0 }); fail(); } catch 
(IllegalArgumentException e) {}
-    try { uds.getCDF(new double[] { 0, 0.5, 1.0 }); fail(); } catch 
(IllegalArgumentException e) {}
+    final int k = 16;
+    final UpdateDoublesSketch uds = DoublesSketch.builder().setK(k).build();
+    try { uds.getMaxItem(); fail(); } catch (final IllegalArgumentException e) 
{}
+    try { uds.getMinItem(); fail(); } catch (final IllegalArgumentException e) 
{}
+    try { uds.getRank(1.0); fail(); } catch (final IllegalArgumentException e) 
{}
+    try { uds.getPMF(new double[] { 0, 0.5, 1.0 }); fail(); } catch (final 
IllegalArgumentException e) {}
+    try { uds.getCDF(new double[] { 0, 0.5, 1.0 }); fail(); } catch (final 
IllegalArgumentException e) {}
   }
 
   @Test
   public void directSketchShouldMoveOntoHeapEventually() {
-    WritableMemory wmem = WritableMemory.allocateDirect(1000, 
Arena.ofConfined());
-    WritableMemory wmem2 = wmem;
-    UpdateDoublesSketch sketch = DoublesSketch.builder().build(wmem);
-    Assert.assertTrue(sketch.isSameResource(wmem));
+    final Arena arena = Arena.ofConfined();
+    final MemorySegment wseg = arena.allocate(1000);
+    final UpdateDoublesSketch sketch = DoublesSketch.builder().build(wseg);
+    Assert.assertTrue(sketch.isSameResource(wseg));
     for (int i = 0; i < 1000; i++) {
       sketch.update(i);
     }
-    Assert.assertFalse(sketch.isSameResource(wmem));
-    Assert.assertFalse(wmem2.isAlive());
+    Assert.assertFalse(sketch.isSameResource(wseg));
+    arena.close();
+    Assert.assertFalse(wseg.scope().isAlive());
   }
 
   @Test
   public void directSketchShouldMoveOntoHeapEventually2() {
+    final Arena arena = Arena.ofConfined();
     int i = 0;
-    WritableMemory wmem = WritableMemory.allocateDirect(50, 
Arena.ofConfined());
-    WritableMemory wmem2 = wmem;
-    UpdateDoublesSketch sketch = DoublesSketch.builder().build(wmem);
-    Assert.assertTrue(sketch.isSameResource(wmem));
+    final MemorySegment wseg = arena.allocate(50);
+    final UpdateDoublesSketch sketch = DoublesSketch.builder().build(wseg);
+    Assert.assertTrue(sketch.isSameResource(wseg));
     for (; i < 1000; i++) {
-      if (sketch.isSameResource(wmem)) {
+      if (sketch.isSameResource(wseg)) {
         sketch.update(i);
       } else {
         //println("MOVED OUT at i = " + i);
         break;
       }
     }
-    Assert.assertFalse(wmem2.isAlive());
+    arena.close();
+    Assert.assertFalse(wseg.scope().isAlive());

Review Comment:
   Similar to the previous issue, the Arena is closed before the final 
assertion that checks if the scope is alive, which may affect the test's 
validity.
   ```suggestion
       Assert.assertFalse(wseg.scope().isAlive());
       arena.close();
   ```



##########
src/test/java/org/apache/datasketches/quantiles/DoublesSketchTest.java:
##########
@@ -115,66 +114,68 @@ static void testSketchEquality(final DoublesSketch 
sketch1,
 
   @Test
   public void checkIsSameResource() {
-    int k = 16;
-    WritableMemory mem = WritableMemory.writableWrap(new byte[(k*16) +24]);
-    WritableMemory cmem = WritableMemory.writableWrap(new byte[8]);
-    DirectUpdateDoublesSketch duds =
-            (DirectUpdateDoublesSketch) 
DoublesSketch.builder().setK(k).build(mem);
-    assertTrue(duds.isSameResource(mem));
-    DirectCompactDoublesSketch dcds = (DirectCompactDoublesSketch) 
duds.compact(cmem);
-    assertTrue(dcds.isSameResource(cmem));
+    final int k = 16;
+    final MemorySegment seg = MemorySegment.ofArray(new byte[(k*16) +24]);
+    final MemorySegment cseg = MemorySegment.ofArray(new byte[8]);
+    final DirectUpdateDoublesSketch duds =
+            (DirectUpdateDoublesSketch) 
DoublesSketch.builder().setK(k).build(seg);
+    assertTrue(duds.isSameResource(seg));
+    final DirectCompactDoublesSketch dcds = (DirectCompactDoublesSketch) 
duds.compact(cseg);
+    assertTrue(dcds.isSameResource(cseg));
 
-    UpdateDoublesSketch uds = DoublesSketch.builder().setK(k).build();
-    assertFalse(uds.isSameResource(mem));
+    final UpdateDoublesSketch uds = DoublesSketch.builder().setK(k).build();
+    assertFalse(uds.isSameResource(seg));
   }
 
   @Test
   public void checkEmptyExceptions() {
-    int k = 16;
-    UpdateDoublesSketch uds = DoublesSketch.builder().setK(k).build();
-    try { uds.getMaxItem(); fail(); } catch (IllegalArgumentException e) {}
-    try { uds.getMinItem(); fail(); } catch (IllegalArgumentException e) {}
-    try { uds.getRank(1.0); fail(); } catch (IllegalArgumentException e) {}
-    try { uds.getPMF(new double[] { 0, 0.5, 1.0 }); fail(); } catch 
(IllegalArgumentException e) {}
-    try { uds.getCDF(new double[] { 0, 0.5, 1.0 }); fail(); } catch 
(IllegalArgumentException e) {}
+    final int k = 16;
+    final UpdateDoublesSketch uds = DoublesSketch.builder().setK(k).build();
+    try { uds.getMaxItem(); fail(); } catch (final IllegalArgumentException e) 
{}
+    try { uds.getMinItem(); fail(); } catch (final IllegalArgumentException e) 
{}
+    try { uds.getRank(1.0); fail(); } catch (final IllegalArgumentException e) 
{}
+    try { uds.getPMF(new double[] { 0, 0.5, 1.0 }); fail(); } catch (final 
IllegalArgumentException e) {}
+    try { uds.getCDF(new double[] { 0, 0.5, 1.0 }); fail(); } catch (final 
IllegalArgumentException e) {}
   }
 
   @Test
   public void directSketchShouldMoveOntoHeapEventually() {
-    WritableMemory wmem = WritableMemory.allocateDirect(1000, 
Arena.ofConfined());
-    WritableMemory wmem2 = wmem;
-    UpdateDoublesSketch sketch = DoublesSketch.builder().build(wmem);
-    Assert.assertTrue(sketch.isSameResource(wmem));
+    final Arena arena = Arena.ofConfined();
+    final MemorySegment wseg = arena.allocate(1000);
+    final UpdateDoublesSketch sketch = DoublesSketch.builder().build(wseg);
+    Assert.assertTrue(sketch.isSameResource(wseg));
     for (int i = 0; i < 1000; i++) {
       sketch.update(i);
     }
-    Assert.assertFalse(sketch.isSameResource(wmem));
-    Assert.assertFalse(wmem2.isAlive());
+    Assert.assertFalse(sketch.isSameResource(wseg));
+    arena.close();
+    Assert.assertFalse(wseg.scope().isAlive());

Review Comment:
   The Arena is being closed after checking if the sketch has moved off-heap, 
but the Arena should remain alive until after the assertion to ensure the test 
accurately verifies the expected behavior.
   ```suggestion
       Assert.assertFalse(wseg.scope().isAlive());
       arena.close();
   ```



##########
src/test/java/org/apache/datasketches/quantiles/ReadOnlyMemoryTest.java:
##########
@@ -184,92 +185,92 @@ public void wrapEmptyUpdateSketch() {
   @Test
   public void wrapEmptyCompactSketch() {
     final UpdateDoublesSketch s1 = DoublesSketch.builder().build();
-    final Memory mem = Memory.wrap(s1.compact().toByteArray());
-    DoublesSketch s2 = DoublesSketch.wrap(mem); // compact, so this is ok
+    final MemorySegment seg = 
MemorySegment.ofArray(s1.compact().toByteArray());
+    final DoublesSketch s2 = DoublesSketch.wrap(seg); // compact, so this is ok
     Assert.assertTrue(s2.isEmpty());
   }
 
   @Test
   public void heapifyUnionFromSparse() {
-    UpdateDoublesSketch s1 = DoublesSketch.builder().build();
+    final UpdateDoublesSketch s1 = DoublesSketch.builder().build();
     s1.update(1);
     s1.update(2);
-    Memory mem = Memory.wrap(s1.toByteArray(false));
-    DoublesUnion u = DoublesUnion.heapify(mem);
+    final MemorySegment seg = MemorySegment.ofArray(s1.toByteArray(false));
+    final DoublesUnion u = DoublesUnion.heapify(seg);
     u.update(3);
-    DoublesSketch s2 = u.getResult();
+    final DoublesSketch s2 = u.getResult();
     Assert.assertEquals(s2.getMinItem(), 1.0);
     Assert.assertEquals(s2.getMaxItem(), 3.0);
   }
 
   @Test
   public void heapifyUnionFromCompact() {
-    UpdateDoublesSketch s1 = DoublesSketch.builder().build();
+    final UpdateDoublesSketch s1 = DoublesSketch.builder().build();
     s1.update(1);
     s1.update(2);
-    Memory mem = Memory.wrap(s1.toByteArray(true));
-    DoublesUnion u = DoublesUnion.heapify(mem);
+    final MemorySegment seg = MemorySegment.ofArray(s1.toByteArray(true));
+    final DoublesUnion u = DoublesUnion.heapify(seg);
     u.update(3);
-    DoublesSketch s2 = u.getResult();
+    final DoublesSketch s2 = u.getResult();
     Assert.assertEquals(s2.getMinItem(), 1.0);
     Assert.assertEquals(s2.getMaxItem(), 3.0);
   }
 
   @Test
   public void wrapUnionFromSparse() {
-    UpdateDoublesSketch s1 = DoublesSketch.builder().build();
+    final UpdateDoublesSketch s1 = DoublesSketch.builder().build();
     s1.update(1);
     s1.update(2);
-    Memory mem = Memory.wrap(s1.toByteArray(false));
-    DoublesUnion u = DoublesUnion.wrap(mem);
-    DoublesSketch s2 = u.getResult();
+    final MemorySegment seg = 
MemorySegment.ofArray(s1.toByteArray(false)).asReadOnly();
+    final DoublesUnion u = DoublesUnion.wrap(seg);
+    final DoublesSketch s2 = u.getResult();
     Assert.assertEquals(s2.getMinItem(), 1.0);
     Assert.assertEquals(s2.getMaxItem(), 2.0);
 
     // ensure update and reset methods fail
     try {
       u.update(3);
       fail();
-    } catch (SketchesReadOnlyException e) {
+    } catch (final IllegalArgumentException e) {
       // expected
     }
 
     try {
       u.union(s2);
       fail();
-    } catch (SketchesReadOnlyException e) {
+    } catch (final IllegalArgumentException e) {
       // expected
     }
 
     try {
-      u.union(mem);
+      u.union(seg);
       fail();
-    } catch (SketchesReadOnlyException e) {
+    } catch (final IllegalArgumentException e) {
       // expected
     }
 
     try {
       u.reset();
       fail();
-    } catch (SketchesReadOnlyException e) {
+    } catch (final IllegalArgumentException e) {
       // expected
     }
 
     try {
       u.getResultAndReset();
       fail();
-    } catch (SketchesReadOnlyException e) {
+    } catch (final AssertionError e) { //null

Review Comment:
   The expected exception type has changed from SketchesReadOnlyException to 
AssertionError, but the comment suggests this might be incorrect. This should 
be verified as the correct expected exception for the FFM API.
   ```suggestion
       } catch (final SketchesReadOnlyException e) { // Thrown when attempting 
to reset a read-only union
   ```



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to