This is an automated email from the ASF dual-hosted git repository.
chaokunyang pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/fory.git
The following commit(s) were added to refs/heads/main by this push:
new 04164131d fix(java): MemoryBuffer tests that equalTo works with size
zero buffers (#2524)
04164131d is described below
commit 04164131d21c9e96f03cc83ccf29d4dcad9c3cd7
Author: Steven Schlansker <[email protected]>
AuthorDate: Mon Aug 25 10:55:49 2025 -0700
fix(java): MemoryBuffer tests that equalTo works with size zero buffers
(#2524)
Current implementation throws IAE for size zero buffers
---
.../src/main/java/org/apache/fory/memory/MemoryBuffer.java | 5 ++++-
.../src/test/java/org/apache/fory/memory/MemoryBufferTest.java | 7 +++++++
.../org/apache/fory/format/encoder/ImplementInterfaceTest.java | 9 ++++++---
3 files changed, 17 insertions(+), 4 deletions(-)
diff --git
a/java/fory-core/src/main/java/org/apache/fory/memory/MemoryBuffer.java
b/java/fory-core/src/main/java/org/apache/fory/memory/MemoryBuffer.java
index 97f1fa0d4..a444e48a9 100644
--- a/java/fory-core/src/main/java/org/apache/fory/memory/MemoryBuffer.java
+++ b/java/fory-core/src/main/java/org/apache/fory/memory/MemoryBuffer.java
@@ -2568,9 +2568,12 @@ public final class MemoryBuffer {
* @param offset1 Offset of this buffer to start equaling
* @param offset2 Offset of buf2 to start equaling
* @param len Length of the equaled memory region
- * @return true if equal, false otherwise
+ * @return true if buffers equal or len zero, false otherwise
*/
public boolean equalTo(MemoryBuffer buf2, int offset1, int offset2, int len)
{
+ if (len == 0) {
+ return buf2 != null;
+ }
final long pos1 = address + offset1;
final long pos2 = buf2.address + offset2;
checkArgument(pos1 < addressLimit);
diff --git
a/java/fory-core/src/test/java/org/apache/fory/memory/MemoryBufferTest.java
b/java/fory-core/src/test/java/org/apache/fory/memory/MemoryBufferTest.java
index 2a57bb13c..cc3fa8c50 100644
--- a/java/fory-core/src/test/java/org/apache/fory/memory/MemoryBufferTest.java
+++ b/java/fory-core/src/test/java/org/apache/fory/memory/MemoryBufferTest.java
@@ -218,6 +218,13 @@ public class MemoryBufferTest {
Assert.assertFalse(buf1.equalTo(buf2, 0, 0, buf1.size()));
}
+ @Test
+ public void testEqualToZeroSize() {
+ MemoryBuffer buf1 = MemoryUtils.buffer(0);
+ MemoryBuffer buf2 = MemoryUtils.buffer(0);
+ Assert.assertTrue(buf1.equalTo(buf2, 0, 0, buf1.size()));
+ }
+
@Test
public void testWritePrimitiveArrayWithSizeEmbedded() {
MemoryBuffer buf = MemoryUtils.buffer(16);
diff --git
a/java/fory-format/src/test/java/org/apache/fory/format/encoder/ImplementInterfaceTest.java
b/java/fory-format/src/test/java/org/apache/fory/format/encoder/ImplementInterfaceTest.java
index b942d5dc0..724acb773 100644
---
a/java/fory-format/src/test/java/org/apache/fory/format/encoder/ImplementInterfaceTest.java
+++
b/java/fory-format/src/test/java/org/apache/fory/format/encoder/ImplementInterfaceTest.java
@@ -145,8 +145,11 @@ public class ImplementInterfaceTest {
public interface OptionalType {
Optional<String> f1();
+
OptionalInt f2();
+
OptionalLong f3();
+
OptionalDouble f4();
}
@@ -163,17 +166,17 @@ public class ImplementInterfaceTest {
@Override
public OptionalInt f2() {
- return f2;
+ return f2;
}
@Override
public OptionalLong f3() {
- return f3;
+ return f3;
}
@Override
public OptionalDouble f4() {
- return f4;
+ return f4;
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]