This is an automated email from the ASF dual-hosted git repository.

toulmean pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-tuweni.git


The following commit(s) were added to refs/heads/master by this push:
     new d0a221c  Fix issue 168: Bytes32.wrap with offset is incorrect
     new 28bcd1d  Merge pull request #179 from atoulme/fix_168
d0a221c is described below

commit d0a221c753c5a99154d9bdcf413fa4d4f83a02dd
Author: Antoine Toulme <[email protected]>
AuthorDate: Thu Dec 3 00:47:32 2020 -0800

    Fix issue 168: Bytes32.wrap with offset is incorrect
---
 .../main/java/org/apache/tuweni/bytes/Bytes32.java |  2 +-
 .../java/org/apache/tuweni/bytes/Bytes32Test.java  | 52 ++++++++++++++++++++++
 2 files changed, 53 insertions(+), 1 deletion(-)

diff --git a/bytes/src/main/java/org/apache/tuweni/bytes/Bytes32.java 
b/bytes/src/main/java/org/apache/tuweni/bytes/Bytes32.java
index c64de00..688a702 100644
--- a/bytes/src/main/java/org/apache/tuweni/bytes/Bytes32.java
+++ b/bytes/src/main/java/org/apache/tuweni/bytes/Bytes32.java
@@ -108,7 +108,7 @@ public interface Bytes32 extends Bytes {
     if (slice instanceof Bytes32) {
       return (Bytes32) slice;
     }
-    return new DelegatingBytes32(value);
+    return new DelegatingBytes32(slice);
   }
 
   /**
diff --git a/bytes/src/test/java/org/apache/tuweni/bytes/Bytes32Test.java 
b/bytes/src/test/java/org/apache/tuweni/bytes/Bytes32Test.java
index 5407f92..95404c3 100644
--- a/bytes/src/test/java/org/apache/tuweni/bytes/Bytes32Test.java
+++ b/bytes/src/test/java/org/apache/tuweni/bytes/Bytes32Test.java
@@ -20,6 +20,58 @@ import org.junit.jupiter.api.Test;
 class Bytes32Test {
 
   @Test
+  void testMutableBytes32WrapWithOffset() {
+    Bytes bytes = Bytes
+        .fromHexString(
+            
"0x00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff");
+    MutableBytes mutableBytes = MutableBytes.create(48);
+    bytes.copyTo(mutableBytes);
+    assertEquals(
+        "0x112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00",
+        Bytes32.wrap(mutableBytes, 1).toHexString());
+  }
+
+  @Test
+  void testMutableBytes32SliceWithOffset() {
+    Bytes bytes = Bytes
+        .fromHexString(
+            
"0x00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff");
+    MutableBytes mutableBytes = MutableBytes.create(48);
+    bytes.copyTo(mutableBytes);
+    assertEquals("0x11", mutableBytes.slice(1, 1).toHexString());
+    assertEquals("0x1122", mutableBytes.slice(1, 2).toHexString());
+    assertEquals("0x112233445566778899aa", mutableBytes.slice(1, 
10).toHexString());
+    assertEquals("0x112233445566778899aabbccddeeff", mutableBytes.slice(1, 
15).toHexString());
+    assertEquals(
+        "0x112233445566778899aabbccddeeff00112233445566778899aabbccddee",
+        mutableBytes.slice(1, 30).toHexString());
+    assertEquals(
+        "0x112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00",
+        mutableBytes.slice(1, 32).toHexString());
+    assertEquals(
+        
"0x112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00112233445566778899aabbccddee",
+        mutableBytes.slice(1, 46).toHexString());
+  }
+
+  @Test
+  void testBytes32SliceWithOffset() {
+    Bytes bytes = Bytes
+        .fromHexString(
+            
"0x00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff");
+    assertEquals("0x11", bytes.slice(1, 1).toHexString());
+    assertEquals("0x1122", bytes.slice(1, 2).toHexString());
+    assertEquals("0x112233445566778899aa", bytes.slice(1, 10).toHexString());
+    assertEquals("0x112233445566778899aabbccddeeff", bytes.slice(1, 
15).toHexString());
+    
assertEquals("0x112233445566778899aabbccddeeff00112233445566778899aabbccddee", 
bytes.slice(1, 30).toHexString());
+    assertEquals(
+        "0x112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00",
+        bytes.slice(1, 32).toHexString());
+    assertEquals(
+        
"0x112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00112233445566778899aabbccddee",
+        bytes.slice(1, 46).toHexString());
+  }
+
+  @Test
   void failsWhenWrappingArraySmallerThan32() {
     Throwable exception = assertThrows(IllegalArgumentException.class, () -> 
Bytes32.wrap(new byte[31]));
     assertEquals("Expected 32 bytes but got 31", exception.getMessage());


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

Reply via email to