From 859cba6d480686631215c6788686027438750f4d Mon Sep 17 00:00:00 2001 From: Evan Saulpaugh Date: Fri, 6 Dec 2019 12:53:10 -0600 Subject: [PATCH] add alternate Record constructor; update test; --- .../com/esaulpaugh/headlong/rlp/eip778/Record.java | 5 +++++ .../esaulpaugh/headlong/rlp/eip778/EIP778Test.java | 14 +++++++------- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/esaulpaugh/headlong/rlp/eip778/Record.java b/src/main/java/com/esaulpaugh/headlong/rlp/eip778/Record.java index 537628bb5..f7e01716d 100644 --- a/src/main/java/com/esaulpaugh/headlong/rlp/eip778/Record.java +++ b/src/main/java/com/esaulpaugh/headlong/rlp/eip778/Record.java @@ -24,6 +24,7 @@ import com.esaulpaugh.headlong.util.Strings; import java.security.SignatureException; +import java.util.List; import static com.esaulpaugh.headlong.rlp.RLPDecoder.RLP_STRICT; import static com.esaulpaugh.headlong.util.Strings.BASE_64_URL_SAFE; @@ -39,6 +40,10 @@ public final class Record { private final RLPList rlp; + public Record(long seq, List pairs, Signer signer) { + this(seq, pairs.toArray(KeyValuePair.EMPTY_ARRAY), signer); + } + public Record(long seq, KeyValuePair[] pairs, Signer signer) { final int signatureLen = signer.signatureLength(); final int signatureItemLen = RLPEncoder.prefixLength(signatureLen) + signatureLen; diff --git a/src/test/java/com/esaulpaugh/headlong/rlp/eip778/EIP778Test.java b/src/test/java/com/esaulpaugh/headlong/rlp/eip778/EIP778Test.java index e0aa4a2f6..70a4d491c 100644 --- a/src/test/java/com/esaulpaugh/headlong/rlp/eip778/EIP778Test.java +++ b/src/test/java/com/esaulpaugh/headlong/rlp/eip778/EIP778Test.java @@ -24,13 +24,14 @@ import org.junit.jupiter.api.Test; import java.security.SignatureException; +import java.util.Arrays; import java.util.HashSet; +import java.util.List; import java.util.Set; import static com.esaulpaugh.headlong.rlp.eip778.KeyValuePair.*; import static com.esaulpaugh.headlong.util.Strings.HEX; import static com.esaulpaugh.headlong.util.Strings.UTF_8; -import static org.junit.jupiter.api.Assertions.assertArrayEquals; import static org.junit.jupiter.api.Assertions.assertEquals; public class EIP778Test { @@ -67,12 +68,12 @@ public byte[] sign(byte[] message, int off, int len) { @Test public void testEip778() throws DecodeException, SignatureException { - final KeyValuePair[] pairs = new KeyValuePair[] { + final List pairs = Arrays.asList( new KeyValuePair(IP, "7f000001", HEX), new KeyValuePair(UDP, "765f", HEX), new KeyValuePair(ID, "v4", UTF_8), new KeyValuePair(SECP256K1, "03ca634cae0d49acb401d8a4c6b6fe8c55b70d115bf400769cc1400f3258cd3138", HEX) - }; + ); Record record = new Record(1L, pairs, SIGNER); @@ -92,13 +93,12 @@ public void testEip778() throws DecodeException, SignatureException { assertEquals(1L, seq); - KeyValuePair[] decodedPairs = new KeyValuePair[pairs.length]; + KeyValuePair[] arr = pairs.toArray(EMPTY_ARRAY); + Arrays.sort(arr); int i = 0; while (iter.hasNext()) { - decodedPairs[i++] = new KeyValuePair(iter.next().asBytes(), iter.next().asBytes()); + assertEquals(arr[i++], new KeyValuePair(iter.next().asBytes(), iter.next().asBytes())); } - assertArrayEquals(pairs, decodedPairs); - assertEquals(ENR_STRING, record.toString()); }