diff options
author | Lorenzo Torres <torres@sideros.org> | 2025-03-27 21:44:47 +0100 |
---|---|---|
committer | Lorenzo Torres <torres@sideros.org> | 2025-03-27 21:44:47 +0100 |
commit | 11f6bc2b04fae03a6e81735d4bcebe9505c5d76d (patch) | |
tree | 1f4db0cc1467217582331cab9dc30e6663e0ebbf /src/mods/mods.zig | |
parent | 1730f1e2980bfa2819c541d9b8a3bc0301b8334e (diff) | |
parent | 6fe4855a67d025c7a283827d566130e1c6ade638 (diff) |
Merge branch 'master' of ssh://git.sideros.org:/git/sideros
Diffstat (limited to 'src/mods/mods.zig')
-rw-r--r-- | src/mods/mods.zig | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/src/mods/mods.zig b/src/mods/mods.zig index f91fa7d..e8183c7 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); +} |