diff options
| author | Michael Williamson <mike@zwobble.org> | 2023-12-27 15:36:00 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2023-12-27 15:36:00 +0000 |
| commit | f57079390c546757fc36c296499bea13b7ec162f (patch) | |
| tree | 776d9106ca26b16391d44ecc2eeb397d92d6b3ca /src/test/java | |
| parent | 3b3813cf2df399dd2c396b3c347dd63df1bbb32e (diff) | |
Add LEB128 encoding for padded 64-bit ints
Diffstat (limited to 'src/test/java')
| -rw-r--r-- | src/test/java/org/shedlang/compiler/backends/wasm/structure/binary/Leb128EncodingTests.java | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/src/test/java/org/shedlang/compiler/backends/wasm/structure/binary/Leb128EncodingTests.java b/src/test/java/org/shedlang/compiler/backends/wasm/structure/binary/Leb128EncodingTests.java index f9ef502d..270bcb44 100644 --- a/src/test/java/org/shedlang/compiler/backends/wasm/structure/binary/Leb128EncodingTests.java +++ b/src/test/java/org/shedlang/compiler/backends/wasm/structure/binary/Leb128EncodingTests.java @@ -78,6 +78,21 @@ public class Leb128EncodingTests { } @Test + public void paddedUnsignedInt64Encoding() { + assertPaddedUnsignedInt64Encoding(0x00, "80808080808080808000"); + assertPaddedUnsignedInt64Encoding(0x01, "81808080808080808000"); + assertPaddedUnsignedInt64Encoding(0x7F, "ff808080808080808000"); + assertPaddedUnsignedInt64Encoding(0x80, "80818080808080808000"); + assertPaddedUnsignedInt64Encoding(Long.MAX_VALUE, "ffffffffffffffffff00"); + } + + private void assertPaddedUnsignedInt64Encoding(long value, String expectedHex) { + var writer = new BinaryWriter(); + Leb128Encoding.encodePaddedUnsignedInt64(value, writer); + assertByteArray(writer.toBytes(), expectedHex); + } + + @Test public void signedInt64Encoding() { assertSignedInt64Encoding(0x0, "00"); assertSignedInt64Encoding(0x1, "01"); @@ -98,6 +113,27 @@ public class Leb128EncodingTests { assertByteArray(writer.toBytes(), expectedHex); } + @Test + public void paddedSignedInt64Encoding() { + assertPaddedSignedInt64Encoding(0x00, "80808080808080808000"); + assertPaddedSignedInt64Encoding(0x01, "81808080808080808000"); + assertPaddedSignedInt64Encoding(0x3F, "bf808080808080808000"); + assertPaddedSignedInt64Encoding(0x40, "c0808080808080808000"); + assertPaddedSignedInt64Encoding(0x7F, "ff808080808080808000"); + assertPaddedSignedInt64Encoding(0x80, "80818080808080808000"); + assertPaddedSignedInt64Encoding(-0x1, "ffffffffffffffffff7f"); + assertPaddedSignedInt64Encoding(-0x40, "c0ffffffffffffffff7f"); + assertPaddedSignedInt64Encoding(-0x41, "bfffffffffffffffff7f"); + assertPaddedSignedInt64Encoding(Long.MAX_VALUE, "ffffffffffffffffff00"); + assertPaddedSignedInt64Encoding(Long.MIN_VALUE, "8080808080808080807f"); + } + + private void assertPaddedSignedInt64Encoding(long value, String expectedHex) { + var writer = new BinaryWriter(); + Leb128Encoding.encodePaddedSignedInt64(value, writer); + assertByteArray(writer.toBytes(), expectedHex); + } + private void assertByteArray(byte[] actual, String expectedHex) { assertThat(HexFormat.of().formatHex(actual), equalTo(expectedHex)); } |
