From 6271509f2a34e0eaabd2219e33eb5d1e0f1d81aa Mon Sep 17 00:00:00 2001 From: luccie-cmd Date: Wed, 26 Mar 2025 17:38:39 +0100 Subject: Add testing for wasm VM Signed-off-by: luccie-cmd --- src/mods/mods.zig | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/src/mods/mods.zig b/src/mods/mods.zig index f91fa7d..4725919 100644 --- a/src/mods/mods.zig +++ b/src/mods/mods.zig @@ -6,3 +6,42 @@ pub const IR = @import("ir.zig"); pub const GlobalRuntime = Wasm.GlobalRuntime; pub const Runtime = VM.Runtime; + +const std = @import("std"); + +test "Fibonacci" { + // var gpa = std.heap.GeneralPurposeAllocator(.{}){}; + // const allocator = gpa.allocator(); + const allocator = std.testing.allocator; + var global_runtime = GlobalRuntime.init(allocator); + defer global_runtime.deinit(); + + const file = try std.fs.cwd().openFile("assets/core.wasm", .{}); + const all = try file.readToEndAlloc(allocator, 1_000_000); // 1 MB + var parser = Parser{ + .bytes = all, + .byte_idx = 0, + .allocator = allocator, + }; + const module = parser.parseModule() catch |err| { + std.debug.print("[ERROR]: error at byte {x}(0x{x})\n", .{ parser.byte_idx, parser.bytes[parser.byte_idx] }); + return err; + }; + var runtime = try Runtime.init(allocator, module, &global_runtime); + defer runtime.deinit(allocator); + + var parameters = [_]usize{17}; + try runtime.callExternal(allocator, "preinit", ¶meters); + const result = runtime.stack.pop().?; + try std.testing.expect(result.i64 == 1597); + + var parameters2 = [_]usize{1}; + try runtime.callExternal(allocator, "preinit", ¶meters2); + const result2 = runtime.stack.pop().?; + try std.testing.expect(result2.i64 == 1); + + var parameters3 = [_]usize{5}; + try runtime.callExternal(allocator, "preinit", ¶meters3); + const result3 = runtime.stack.pop().?; + try std.testing.expect(result3.i64 == 5); +} \ No newline at end of file -- cgit v1.2.3