aboutsummaryrefslogtreecommitdiff
path: root/src/test/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2023-12-27 15:36:00 +0000
committerMichael Williamson <mike@zwobble.org>2023-12-27 15:36:00 +0000
commitf57079390c546757fc36c296499bea13b7ec162f (patch)
tree776d9106ca26b16391d44ecc2eeb397d92d6b3ca /src/test/java
parent3b3813cf2df399dd2c396b3c347dd63df1bbb32e (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.java36
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));
}