aboutsummaryrefslogtreecommitdiff
path: root/src/test/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2023-12-26 23:02:50 +0000
committerMichael Williamson <mike@zwobble.org>2023-12-26 23:02:50 +0000
commitd245348585002dae57dd03ba4bb1e9382e6fffe9 (patch)
tree0f5fee2099c0bcb242196257d5d169b4286402d5 /src/test/java
parent73156b8d99b99c6cdb1eb45f9c7d96a8bf75dc00 (diff)
Add support for i64.load instruction
Diffstat (limited to 'src/test/java')
-rw-r--r--src/test/java/org/shedlang/compiler/backends/wasm/structure/binary/WasmBinaryFormatInstructionsTests.java32
1 files changed, 32 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 80a5b609..373ad37b 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
@@ -4,6 +4,9 @@ import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.shedlang.compiler.backends.wasm.structure.ast.instructions.*;
import org.shedlang.compiler.backends.wasm.structure.ast.modules.*;
+import org.shedlang.compiler.backends.wasm.structure.ast.types.WasmIndexType;
+import org.shedlang.compiler.backends.wasm.structure.ast.types.WasmLimits;
+import org.shedlang.compiler.backends.wasm.structure.ast.types.WasmMemoryType;
import org.shedlang.compiler.backends.wasm.structure.ast.types.WasmValueType;
import org.shedlang.compiler.testing.snapshots.SnapshotResolver;
import org.shedlang.compiler.testing.snapshots.Snapshotter;
@@ -16,6 +19,34 @@ import static org.shedlang.compiler.backends.wasm.structure.binary.WasmBinaryFor
@ExtendWith({SnapshotResolver.class})
public class WasmBinaryFormatInstructionsTests {
+ // == Memory Instructions ==
+
+ @Test
+ public void canSerializeI32Load(Snapshotter snapshotter) throws IOException, InterruptedException {
+ var instructions = List.of(
+ new WasmI32Const(0),
+ new WasmI32Load(new WasmMemoryArg(128, WasmAlignment.NONE)),
+ new WasmDrop()
+ );
+
+ var result = serializeInstructions(instructions);
+
+ snapshotter.assertSnapshot(result);
+ }
+
+ @Test
+ public void canSerializeI64Load(Snapshotter snapshotter) throws IOException, InterruptedException {
+ var instructions = List.of(
+ new WasmI32Const(0),
+ new WasmI64Load(new WasmMemoryArg(128, WasmAlignment.NONE)),
+ new WasmDrop()
+ );
+
+ var result = serializeInstructions(instructions);
+
+ snapshotter.assertSnapshot(result);
+ }
+
// == Numeric Instructions ==
@Test
@@ -237,6 +268,7 @@ public class WasmBinaryFormatInstructionsTests {
<? extends WasmInstruction> instructions
) throws IOException, InterruptedException {
var module = WasmModule.EMPTY
+ .addMemory(new WasmMemory(new WasmMemoryType(WasmLimits.min32(0))))
.addFunction(new WasmFunction(
"f",
List.of(),