You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuweni.apache.org by to...@apache.org on 2020/05/02 23:05:39 UTC

[incubator-tuweni] branch master updated: Add Bytes#toEllipsisHexString, fixes #71

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 0e0f289  Add Bytes#toEllipsisHexString, fixes #71
0e0f289 is described below

commit 0e0f289ca70a2f5908eb179df78a125d35e4b8a6
Author: Antoine Toulme <an...@lunar-ocean.com>
AuthorDate: Sat May 2 16:05:24 2020 -0700

    Add Bytes#toEllipsisHexString, fixes #71
---
 .../src/main/java/org/apache/tuweni/bytes/Bytes.java | 20 ++++++++++++++++++++
 .../org/apache/tuweni/bytes/CommonBytesTests.java    | 15 +++++++++++++++
 2 files changed, 35 insertions(+)

diff --git a/bytes/src/main/java/org/apache/tuweni/bytes/Bytes.java b/bytes/src/main/java/org/apache/tuweni/bytes/Bytes.java
index dfec53b..7a219d4 100644
--- a/bytes/src/main/java/org/apache/tuweni/bytes/Bytes.java
+++ b/bytes/src/main/java/org/apache/tuweni/bytes/Bytes.java
@@ -1452,6 +1452,26 @@ public interface Bytes extends Comparable<Bytes> {
     }
   }
 
+  default String toEllipsisHexString() {
+    int size = size();
+    if (size < 6) {
+      return toHexString();
+    }
+    StringBuilder appendable = new StringBuilder("0x");
+    for (int i = 0; i < 2; i++) {
+      byte b = get(i);
+      appendable.append(AbstractBytes.HEX_CODE[b >> 4 & 15]);
+      appendable.append(AbstractBytes.HEX_CODE[b & 15]);
+    }
+    appendable.append("..");
+    for (int i = 0; i < 2; i++) {
+      byte b = get(i + size - 2);
+      appendable.append(AbstractBytes.HEX_CODE[b >> 4 & 15]);
+      appendable.append(AbstractBytes.HEX_CODE[b & 15]);
+    }
+    return appendable.toString();
+  }
+
   /** @return This value represented as a minimal hexadecimal string (without any leading zero). */
   default String toShortHexString() {
     StringBuilder hex;
diff --git a/bytes/src/test/java/org/apache/tuweni/bytes/CommonBytesTests.java b/bytes/src/test/java/org/apache/tuweni/bytes/CommonBytesTests.java
index 0d7efb2..ca0533c 100644
--- a/bytes/src/test/java/org/apache/tuweni/bytes/CommonBytesTests.java
+++ b/bytes/src/test/java/org/apache/tuweni/bytes/CommonBytesTests.java
@@ -452,6 +452,21 @@ abstract class CommonBytesTests {
   }
 
   @Test
+  void testEllipsisHexString() {
+    assertEquals("0x", h("0x").toEllipsisHexString());
+    assertEquals("0x0000", h("0x0000").toEllipsisHexString());
+    assertEquals("0x01000001", h("0x01000001").toEllipsisHexString());
+    assertEquals("0x0100000001", h("0x0100000001").toEllipsisHexString());
+    assertEquals("0x0100..0001", h("0x010000000001").toEllipsisHexString());
+    assertEquals("0x1234..5678", h("0x123456789abcdef012345678").toEllipsisHexString());
+    assertEquals("0x1234..789a", h("0x123456789abcdef0123456789a").toEllipsisHexString());
+    assertEquals("0x1234..9abc", h("0x123456789abcdef0123456789abc").toEllipsisHexString());
+    assertEquals("0x1234..bcde", h("0x123456789abcdef0123456789abcde").toEllipsisHexString());
+    assertEquals("0x1234..def0", h("0x123456789abcdef0123456789abcdef0").toEllipsisHexString());
+    assertEquals("0x1234..def0", h("0x123456789abcdef0123456789abcdef0").toEllipsisHexString());
+  }
+
+  @Test
   void slideToEnd() {
     assertEquals(Bytes.of(1, 2, 3, 4), Bytes.of(1, 2, 3, 4).slice(0));
     assertEquals(Bytes.of(2, 3, 4), Bytes.of(1, 2, 3, 4).slice(1));


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@tuweni.apache.org
For additional commands, e-mail: commits-help@tuweni.apache.org