fix issue with constant bytes values slicing
diff --git a/bytes/src/main/java/org/apache/tuweni/bytes/ConstantBytes32Value.java b/bytes/src/main/java/org/apache/tuweni/bytes/ConstantBytes32Value.java
index e503559..7a007e2 100644
--- a/bytes/src/main/java/org/apache/tuweni/bytes/ConstantBytes32Value.java
+++ b/bytes/src/main/java/org/apache/tuweni/bytes/ConstantBytes32Value.java
@@ -38,7 +38,10 @@
@Override
public Bytes slice(int i, int length) {
- return new ConstantBytes32Value(this.value);
+ if (length == 32) {
+ return this;
+ }
+ return new ConstantBytesValue(this.value, length);
}
@Override
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 0a7fc20..d7de6a1 100644
--- a/bytes/src/test/java/org/apache/tuweni/bytes/Bytes32Test.java
+++ b/bytes/src/test/java/org/apache/tuweni/bytes/Bytes32Test.java
@@ -28,6 +28,16 @@
}
@Test
+ void constantBytes32slice() {
+ assertEquals(Bytes32.ZERO.slice(12, 20).size(), 20);
+ }
+
+ @Test
+ void constantBytesslice() {
+ assertEquals(Bytes.repeat((byte) 1, 63).slice(12, 20).size(), 20);
+ }
+
+ @Test
void testMutableBytes32WrapWithOffset() {
Bytes bytes = Bytes
.fromHexString(