aboutsummaryrefslogtreecommitdiffhomepage
path: root/tests/wasm.sh
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2026-01-08 00:36:43 +0900
committernsfisis <nsfisis@gmail.com>2026-01-08 00:42:05 +0900
commite631486866eed1a1d68911d79aa7b5415e94815a (patch)
treec904a4e85c12e318732a0abcd591f1f441f51042 /tests/wasm.sh
parent41d24c967eb5fce3f811fc567f60204c77dada15 (diff)
downloadducc-e631486866eed1a1d68911d79aa7b5415e94815a.tar.gz
ducc-e631486866eed1a1d68911d79aa7b5415e94815a.tar.zst
ducc-e631486866eed1a1d68911d79aa7b5415e94815a.zip
feat: fib() now compiles to wasm target
Diffstat (limited to 'tests/wasm.sh')
-rw-r--r--tests/wasm.sh31
1 files changed, 31 insertions, 0 deletions
diff --git a/tests/wasm.sh b/tests/wasm.sh
index d024989..e97c05f 100644
--- a/tests/wasm.sh
+++ b/tests/wasm.sh
@@ -23,3 +23,34 @@ cat > expected <<'EOF'
EOF
diff -u expected output
+
+
+cat > main.c <<'EOF'
+int fib(int n) {
+ if (n <= 1) {
+ return 1;
+ } else {
+ return fib(n - 1) + fib(n - 2);
+ }
+}
+EOF
+
+"$ducc" "${CFLAGS:-}" --wasm -o main.wat main.c
+
+wat2wasm main.wat -o main.wasm
+
+cat > main.mjs <<'EOF'
+import { readFile } from 'fs/promises';
+
+const wasmBuffer = await readFile('./main.wasm');
+const { instance } = await WebAssembly.instantiate(wasmBuffer);
+
+console.log(instance.exports.fib(10));
+EOF
+node main.mjs > output
+
+cat > expected <<'EOF'
+89
+EOF
+
+diff -u expected output