aboutsummaryrefslogtreecommitdiff
path: root/src/test/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2024-12-22 20:02:26 +0000
committerMichael Williamson <mike@zwobble.org>2024-12-22 20:02:26 +0000
commit437a5ae82c6d2a2a4f54ae178777ac61d3e32bba (patch)
tree52551e47702030af9109ca9e1fe4912188e537bc /src/test/java
parentc4182411993ee33da3a08f9ae81b98085b3269bb (diff)
Add tests for serializing Wasm block types
Diffstat (limited to 'src/test/java')
-rw-r--r--src/test/java/org/shedlang/compiler/backends/wasm/structure/binary/WasmBinaryFormatInstructionsTests.java60
1 files changed, 60 insertions, 0 deletions
diff --git a/src/test/java/org/shedlang/compiler/backends/wasm/structure/binary/WasmBinaryFormatInstructionsTests.java b/src/test/java/org/shedlang/compiler/backends/wasm/structure/binary/WasmBinaryFormatInstructionsTests.java
index 5898b350..06e8f0ea 100644
--- a/src/test/java/org/shedlang/compiler/backends/wasm/structure/binary/WasmBinaryFormatInstructionsTests.java
+++ b/src/test/java/org/shedlang/compiler/backends/wasm/structure/binary/WasmBinaryFormatInstructionsTests.java
@@ -1,5 +1,6 @@
package org.shedlang.compiler.backends.wasm.structure.binary;
+import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.shedlang.compiler.backends.wasm.structure.ast.instructions.*;
@@ -18,6 +19,65 @@ import static org.shedlang.compiler.backends.wasm.structure.binary.WasmBinaryFor
@ExtendWith({SnapshotResolver.class})
public class WasmBinaryFormatInstructionsTests {
+ // == Control Instructions ==
+
+ @Test
+ public void canSerializeBlockTypeEmpty(Snapshotter snapshotter) throws IOException, InterruptedException {
+ var instructions = List.of(
+ new WasmI32Const(0),
+ new WasmIf(
+ WasmBlockType.of(),
+ List.of(),
+ List.of()
+ )
+ );
+
+ var result = serializeInstructions(instructions);
+
+ snapshotter.assertSnapshot(result);
+ }
+
+ @Test
+ public void canSerializeBlockTypeSingleValue(Snapshotter snapshotter) throws IOException, InterruptedException {
+ var instructions = List.of(
+ new WasmI32Const(0),
+ new WasmIf(
+ WasmBlockType.of(WasmValueType.I64),
+ List.of(new WasmI64Const(0)),
+ List.of(new WasmI64Const(1))
+ ),
+ new WasmDrop()
+ );
+
+ var result = serializeInstructions(instructions);
+
+ snapshotter.assertSnapshot(result);
+ }
+
+ @Test
+ @Disabled("WIP")
+ public void canSerializeBlockTypeMultipleValues(Snapshotter snapshotter) throws IOException, InterruptedException {
+ var instructions = List.of(
+ new WasmI32Const(0),
+ new WasmIf(
+ WasmBlockType.of(WasmValueType.I64, WasmValueType.I32),
+ List.of(
+ new WasmI64Const(0),
+ new WasmI32Const(0)
+ ),
+ List.of(
+ new WasmI64Const(1),
+ new WasmI32Const(1)
+ )
+ ),
+ new WasmDrop()
+ );
+
+ var result = serializeInstructions(instructions);
+
+ snapshotter.assertSnapshot(result);
+ }
+
// == Memory Instructions ==
@Test