Skip to content

Commit 5617b39

Browse files
Enhance await test cases
1 parent 24bd9e4 commit 5617b39

File tree

2 files changed

+27
-0
lines changed

2 files changed

+27
-0
lines changed

packages/npm-packages/ruby-wasm-wasi/test/unit/test_async.rb

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ class JS::TestAsync < Test::Unit::TestCase
55
def test_await_promise_resolve
66
promise = JS.eval("return Promise.resolve(42)")
77
assert_equal 42, promise.await.to_i
8+
# Promise can be resolved multiple times.
9+
assert_equal 42, promise.await.to_i
810
end
911

1012
def test_await_promise_reject
@@ -21,4 +23,23 @@ def test_await_promise_chained
2123
def test_await_non_promise
2224
assert_equal 42, JS.eval("return 42").await.to_i
2325
end
26+
27+
def make_promise_and_continuation
28+
JS.eval(<<~JS)
29+
let continuation = null;
30+
const promise = new Promise((resolve, reject) => {
31+
continuation = { resolve, reject };
32+
});
33+
return { promise, continuation };
34+
JS
35+
end
36+
37+
def test_concurrent_promises
38+
pac0 = make_promise_and_continuation
39+
pac1 = make_promise_and_continuation
40+
pac0[:continuation].resolve(42)
41+
pac1[:continuation].resolve(43)
42+
assert_equal 43, pac1[:promise].await.to_i
43+
assert_equal 42, pac0[:promise].await.to_i
44+
end
2445
end

packages/npm-packages/ruby-wasm-wasi/test/vm.test.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -220,4 +220,10 @@ eval:11:in \`<main>'`);
220220
const ret1 = await vm.evalAsync(`JS.global[:Promise].resolve(43).await`);
221221
expect(ret1.toString()).toBe("43");
222222
});
223+
224+
test("await outside of evalAsync", async () => {
225+
const vm = await initRubyVM();
226+
const result = vm.eval(`require "js"; JS.global[:Promise].resolve(42).await`);
227+
expect(result.call("nil?").toString()).toBe("true");
228+
});
223229
});

0 commit comments

Comments
 (0)