Skip to content

Commit

Permalink
[Test] Add the threads tests.
Browse files Browse the repository at this point in the history
Please refer to this issue:
WebAssembly/threads#195

Signed-off-by: YiYing He <yiying@secondstate.io>
  • Loading branch information
q82419 committed Dec 5, 2023
1 parent f13493c commit 033f362
Show file tree
Hide file tree
Showing 343 changed files with 2,589 additions and 0 deletions.
5 changes: 5 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,11 @@
* This error message is for the WAT format, WASM format cannot detect this error by the bytecode.
* `core/comments/comments.wast` line 81: remove the WAT tests.
* The tests are for comment tests in WAT and cannot be parsed by wabt, therefore remove them.
* `threads/atomic/atomic.wast`: divergence behavior
* Please check [this issue](https://github.com/WebAssembly/threads/issues/195).
* Modified the `wast` file for fitting the `compare_exchange_strong` behavior in C++.
* `threads/atomic_wait_notify/atomic_wait_notify.wast`: line 73: remove the thread tests.
* The S-Expression of threads cannot be parsed by wabt, therefore remove them.

## Branches And Tags

Expand Down
Binary file added threads/atomic/atomic.0.wasm
Binary file not shown.
Binary file added threads/atomic/atomic.1.wasm
Binary file not shown.
Binary file added threads/atomic/atomic.10.wasm
Binary file not shown.
Binary file added threads/atomic/atomic.11.wasm
Binary file not shown.
Binary file added threads/atomic/atomic.12.wasm
Binary file not shown.
Binary file added threads/atomic/atomic.13.wasm
Binary file not shown.
Binary file added threads/atomic/atomic.14.wasm
Binary file not shown.
Binary file added threads/atomic/atomic.15.wasm
Binary file not shown.
Binary file added threads/atomic/atomic.16.wasm
Binary file not shown.
Binary file added threads/atomic/atomic.17.wasm
Binary file not shown.
Binary file added threads/atomic/atomic.18.wasm
Binary file not shown.
Binary file added threads/atomic/atomic.19.wasm
Binary file not shown.
Binary file added threads/atomic/atomic.2.wasm
Binary file not shown.
Binary file added threads/atomic/atomic.20.wasm
Binary file not shown.
Binary file added threads/atomic/atomic.21.wasm
Binary file not shown.
Binary file added threads/atomic/atomic.22.wasm
Binary file not shown.
Binary file added threads/atomic/atomic.23.wasm
Binary file not shown.
Binary file added threads/atomic/atomic.24.wasm
Binary file not shown.
Binary file added threads/atomic/atomic.25.wasm
Binary file not shown.
Binary file added threads/atomic/atomic.26.wasm
Binary file not shown.
Binary file added threads/atomic/atomic.27.wasm
Binary file not shown.
Binary file added threads/atomic/atomic.28.wasm
Binary file not shown.
Binary file added threads/atomic/atomic.29.wasm
Binary file not shown.
Binary file added threads/atomic/atomic.3.wasm
Binary file not shown.
Binary file added threads/atomic/atomic.30.wasm
Binary file not shown.
Binary file added threads/atomic/atomic.31.wasm
Binary file not shown.
Binary file added threads/atomic/atomic.32.wasm
Binary file not shown.
Binary file added threads/atomic/atomic.33.wasm
Binary file not shown.
Binary file added threads/atomic/atomic.34.wasm
Binary file not shown.
Binary file added threads/atomic/atomic.35.wasm
Binary file not shown.
Binary file added threads/atomic/atomic.36.wasm
Binary file not shown.
Binary file added threads/atomic/atomic.37.wasm
Binary file not shown.
Binary file added threads/atomic/atomic.38.wasm
Binary file not shown.
Binary file added threads/atomic/atomic.39.wasm
Binary file not shown.
Binary file added threads/atomic/atomic.4.wasm
Binary file not shown.
Binary file added threads/atomic/atomic.40.wasm
Binary file not shown.
Binary file added threads/atomic/atomic.41.wasm
Binary file not shown.
Binary file added threads/atomic/atomic.42.wasm
Binary file not shown.
Binary file added threads/atomic/atomic.43.wasm
Binary file not shown.
Binary file added threads/atomic/atomic.44.wasm
Binary file not shown.
Binary file added threads/atomic/atomic.45.wasm
Binary file not shown.
Binary file added threads/atomic/atomic.46.wasm
Binary file not shown.
Binary file added threads/atomic/atomic.47.wasm
Binary file not shown.
Binary file added threads/atomic/atomic.48.wasm
Binary file not shown.
Binary file added threads/atomic/atomic.49.wasm
Binary file not shown.
Binary file added threads/atomic/atomic.5.wasm
Binary file not shown.
Binary file added threads/atomic/atomic.50.wasm
Binary file not shown.
Binary file added threads/atomic/atomic.6.wasm
Binary file not shown.
Binary file added threads/atomic/atomic.7.wasm
Binary file not shown.
Binary file added threads/atomic/atomic.8.wasm
Binary file not shown.
Binary file added threads/atomic/atomic.9.wasm
Binary file not shown.
311 changes: 311 additions & 0 deletions threads/atomic/atomic.json

Large diffs are not rendered by default.

548 changes: 548 additions & 0 deletions threads/atomic/atomic.wast

Large diffs are not rendered by default.

Binary file added threads/atomic_wait_notify/atomic_wait_notify.0.wasm
Binary file not shown.
Binary file added threads/atomic_wait_notify/atomic_wait_notify.1.wasm
Binary file not shown.
Binary file not shown.
24 changes: 24 additions & 0 deletions threads/atomic_wait_notify/atomic_wait_notify.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
{"source_filename": "atomic_wait_notify.wast",
"commands": [
{"type": "module", "line": 2, "filename": "atomic_wait_notify.0.wasm"},
{"type": "action", "line": 15, "action": {"type": "invoke", "field": "init", "args": [{"type": "i64", "value": "281474976710655"}]}, "expected": []},
{"type": "assert_return", "line": 18, "action": {"type": "invoke", "field": "memory.atomic.wait32", "args": [{"type": "i32", "value": "0"}, {"type": "i32", "value": "0"}, {"type": "i64", "value": "0"}]}, "expected": [{"type": "i32", "value": "1"}]},
{"type": "assert_return", "line": 19, "action": {"type": "invoke", "field": "memory.atomic.wait64", "args": [{"type": "i32", "value": "0"}, {"type": "i64", "value": "0"}, {"type": "i64", "value": "0"}]}, "expected": [{"type": "i32", "value": "1"}]},
{"type": "assert_return", "line": 22, "action": {"type": "invoke", "field": "memory.atomic.wait32", "args": [{"type": "i32", "value": "0"}, {"type": "i32", "value": "4294967295"}, {"type": "i64", "value": "10"}]}, "expected": [{"type": "i32", "value": "2"}]},
{"type": "assert_return", "line": 23, "action": {"type": "invoke", "field": "memory.atomic.wait64", "args": [{"type": "i32", "value": "0"}, {"type": "i64", "value": "281474976710655"}, {"type": "i64", "value": "10"}]}, "expected": [{"type": "i32", "value": "2"}]},
{"type": "assert_return", "line": 26, "action": {"type": "invoke", "field": "memory.atomic.notify", "args": [{"type": "i32", "value": "0"}, {"type": "i32", "value": "0"}]}, "expected": [{"type": "i32", "value": "0"}]},
{"type": "assert_return", "line": 27, "action": {"type": "invoke", "field": "memory.atomic.notify", "args": [{"type": "i32", "value": "0"}, {"type": "i32", "value": "10"}]}, "expected": [{"type": "i32", "value": "0"}]},
{"type": "assert_trap", "line": 30, "action": {"type": "invoke", "field": "memory.atomic.wait32", "args": [{"type": "i32", "value": "65536"}, {"type": "i32", "value": "0"}, {"type": "i64", "value": "0"}]}, "text": "out of bounds memory access", "expected": [{"type": "i32"}]},
{"type": "assert_trap", "line": 31, "action": {"type": "invoke", "field": "memory.atomic.wait64", "args": [{"type": "i32", "value": "65536"}, {"type": "i64", "value": "0"}, {"type": "i64", "value": "0"}]}, "text": "out of bounds memory access", "expected": [{"type": "i32"}]},
{"type": "assert_trap", "line": 34, "action": {"type": "invoke", "field": "memory.atomic.notify", "args": [{"type": "i32", "value": "65536"}, {"type": "i32", "value": "0"}]}, "text": "out of bounds memory access", "expected": [{"type": "i32"}]},
{"type": "assert_trap", "line": 37, "action": {"type": "invoke", "field": "memory.atomic.wait32", "args": [{"type": "i32", "value": "65531"}, {"type": "i32", "value": "0"}, {"type": "i64", "value": "0"}]}, "text": "unaligned atomic", "expected": [{"type": "i32"}]},
{"type": "assert_trap", "line": 38, "action": {"type": "invoke", "field": "memory.atomic.wait64", "args": [{"type": "i32", "value": "65524"}, {"type": "i64", "value": "0"}, {"type": "i64", "value": "0"}]}, "text": "unaligned atomic", "expected": [{"type": "i32"}]},
{"type": "assert_trap", "line": 40, "action": {"type": "invoke", "field": "memory.atomic.notify", "args": [{"type": "i32", "value": "65531"}, {"type": "i32", "value": "0"}]}, "text": "unaligned atomic", "expected": [{"type": "i32"}]},
{"type": "module", "line": 43, "filename": "atomic_wait_notify.1.wasm"},
{"type": "action", "line": 56, "action": {"type": "invoke", "field": "init", "args": [{"type": "i64", "value": "281474976710655"}]}, "expected": []},
{"type": "assert_trap", "line": 58, "action": {"type": "invoke", "field": "memory.atomic.wait32", "args": [{"type": "i32", "value": "0"}, {"type": "i32", "value": "0"}, {"type": "i64", "value": "0"}]}, "text": "expected shared memory", "expected": [{"type": "i32"}]},
{"type": "assert_trap", "line": 59, "action": {"type": "invoke", "field": "memory.atomic.wait64", "args": [{"type": "i32", "value": "0"}, {"type": "i64", "value": "0"}, {"type": "i64", "value": "0"}]}, "text": "expected shared memory", "expected": [{"type": "i32"}]},
{"type": "assert_return", "line": 62, "action": {"type": "invoke", "field": "memory.atomic.notify", "args": [{"type": "i32", "value": "0"}, {"type": "i32", "value": "0"}]}, "expected": [{"type": "i32", "value": "0"}]},
{"type": "assert_trap", "line": 65, "action": {"type": "invoke", "field": "memory.atomic.notify", "args": [{"type": "i32", "value": "65536"}, {"type": "i32", "value": "0"}]}, "text": "out of bounds memory access", "expected": [{"type": "i32"}]},
{"type": "assert_trap", "line": 66, "action": {"type": "invoke", "field": "memory.atomic.notify", "args": [{"type": "i32", "value": "65531"}, {"type": "i32", "value": "0"}]}, "text": "unaligned atomic", "expected": [{"type": "i32"}]},
{"type": "module", "line": 69, "name": "$Mem", "filename": "atomic_wait_notify.2.wasm"}]}
108 changes: 108 additions & 0 deletions threads/atomic_wait_notify/atomic_wait_notify.wast
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
;; wait/notify
(module
(memory 1 1 shared)

(func (export "init") (param $value i64) (i64.store (i32.const 0) (local.get $value)))

(func (export "memory.atomic.notify") (param $addr i32) (param $count i32) (result i32)
(memory.atomic.notify (local.get 0) (local.get 1)))
(func (export "memory.atomic.wait32") (param $addr i32) (param $expected i32) (param $timeout i64) (result i32)
(memory.atomic.wait32 (local.get 0) (local.get 1) (local.get 2)))
(func (export "memory.atomic.wait64") (param $addr i32) (param $expected i64) (param $timeout i64) (result i32)
(memory.atomic.wait64 (local.get 0) (local.get 1) (local.get 2)))
)

(invoke "init" (i64.const 0xffffffffffff))

;; wait returns immediately if values do not match
(assert_return (invoke "memory.atomic.wait32" (i32.const 0) (i32.const 0) (i64.const 0)) (i32.const 1))
(assert_return (invoke "memory.atomic.wait64" (i32.const 0) (i64.const 0) (i64.const 0)) (i32.const 1))

;; wait times out if values do match and timeout is small
(assert_return (invoke "memory.atomic.wait32" (i32.const 0) (i32.const 0xffffffff) (i64.const 10)) (i32.const 2))
(assert_return (invoke "memory.atomic.wait64" (i32.const 0) (i64.const 0xffffffffffff) (i64.const 10)) (i32.const 2))

;; notify always returns
(assert_return (invoke "memory.atomic.notify" (i32.const 0) (i32.const 0)) (i32.const 0))
(assert_return (invoke "memory.atomic.notify" (i32.const 0) (i32.const 10)) (i32.const 0))

;; OOB wait and notify always trap
(assert_trap (invoke "memory.atomic.wait32" (i32.const 65536) (i32.const 0) (i64.const 0)) "out of bounds memory access")
(assert_trap (invoke "memory.atomic.wait64" (i32.const 65536) (i64.const 0) (i64.const 0)) "out of bounds memory access")

;; in particular, notify always traps even if waking 0 threads
(assert_trap (invoke "memory.atomic.notify" (i32.const 65536) (i32.const 0)) "out of bounds memory access")

;; similarly, unaligned wait and notify always trap
(assert_trap (invoke "memory.atomic.wait32" (i32.const 65531) (i32.const 0) (i64.const 0)) "unaligned atomic")
(assert_trap (invoke "memory.atomic.wait64" (i32.const 65524) (i64.const 0) (i64.const 0)) "unaligned atomic")

(assert_trap (invoke "memory.atomic.notify" (i32.const 65531) (i32.const 0)) "unaligned atomic")

;; atomic.wait traps on unshared memory even if it wouldn't block
(module
(memory 1 1)

(func (export "init") (param $value i64) (i64.store (i32.const 0) (local.get $value)))

(func (export "memory.atomic.notify") (param $addr i32) (param $count i32) (result i32)
(memory.atomic.notify (local.get 0) (local.get 1)))
(func (export "memory.atomic.wait32") (param $addr i32) (param $expected i32) (param $timeout i64) (result i32)
(memory.atomic.wait32 (local.get 0) (local.get 1) (local.get 2)))
(func (export "memory.atomic.wait64") (param $addr i32) (param $expected i64) (param $timeout i64) (result i32)
(memory.atomic.wait64 (local.get 0) (local.get 1) (local.get 2)))
)

(invoke "init" (i64.const 0xffffffffffff))

(assert_trap (invoke "memory.atomic.wait32" (i32.const 0) (i32.const 0) (i64.const 0)) "expected shared memory")
(assert_trap (invoke "memory.atomic.wait64" (i32.const 0) (i64.const 0) (i64.const 0)) "expected shared memory")

;; notify still works
(assert_return (invoke "memory.atomic.notify" (i32.const 0) (i32.const 0)) (i32.const 0))

;; OOB and unaligned notify still trap
(assert_trap (invoke "memory.atomic.notify" (i32.const 65536) (i32.const 0)) "out of bounds memory access")
(assert_trap (invoke "memory.atomic.notify" (i32.const 65531) (i32.const 0)) "unaligned atomic")

;; test that looping notify eventually unblocks a parallel waiting thread
(module $Mem
(memory (export "shared") 1 1 shared)
)

(thread $T1 (shared (module $Mem))
(register "mem" $Mem)
(module
(memory (import "mem" "shared") 1 10 shared)
(func (export "run") (result i32)
(memory.atomic.wait32 (i32.const 0) (i32.const 0) (i64.const -1))
)
)
;; test that this thread eventually gets unblocked
(assert_return (invoke "run") (i32.const 0))
)

(thread $T2 (shared (module $Mem))
(register "mem" $Mem)
(module
(memory (import "mem" "shared") 1 1 shared)
(func (export "notify-0") (result i32)
(memory.atomic.notify (i32.const 0) (i32.const 0))
)
(func (export "notify-1-while")
(loop
(i32.const 1)
(memory.atomic.notify (i32.const 0) (i32.const 1))
(i32.ne)
(br_if 0)
)
)
)
;; notifying with a count of 0 will not unblock
(assert_return (invoke "notify-0") (i32.const 0))
;; loop until something is notified
(assert_return (invoke "notify-1-while"))
)

(wait $T1)
(wait $T2)
Binary file added threads/exports/exports.0.wasm
Binary file not shown.
Binary file added threads/exports/exports.1.wasm
Binary file not shown.
Binary file added threads/exports/exports.10.wasm
Binary file not shown.
Binary file added threads/exports/exports.11.wasm
Binary file not shown.
Binary file added threads/exports/exports.12.wasm
Binary file not shown.
Binary file added threads/exports/exports.13.wasm
Binary file not shown.
Binary file added threads/exports/exports.14.wasm
Binary file not shown.
Binary file added threads/exports/exports.15.wasm
Binary file not shown.
Binary file added threads/exports/exports.16.wasm
Binary file not shown.
Binary file added threads/exports/exports.17.wasm
Binary file not shown.
Binary file added threads/exports/exports.18.wasm
Binary file not shown.
Binary file added threads/exports/exports.19.wasm
Binary file not shown.
Binary file added threads/exports/exports.2.wasm
Binary file not shown.
Binary file added threads/exports/exports.20.wasm
Binary file not shown.
Binary file added threads/exports/exports.21.wasm
Binary file not shown.
Binary file added threads/exports/exports.22.wasm
Binary file not shown.
Binary file added threads/exports/exports.23.wasm
Binary file not shown.
Binary file added threads/exports/exports.24.wasm
Binary file not shown.
Binary file added threads/exports/exports.25.wasm
Binary file not shown.
Binary file added threads/exports/exports.26.wasm
Binary file not shown.
Binary file added threads/exports/exports.27.wasm
Binary file not shown.
Binary file added threads/exports/exports.28.wasm
Binary file not shown.
Binary file added threads/exports/exports.29.wasm
Binary file not shown.
Binary file added threads/exports/exports.3.wasm
Binary file not shown.
Binary file added threads/exports/exports.30.wasm
Binary file not shown.
Binary file added threads/exports/exports.31.wasm
Binary file not shown.
Binary file added threads/exports/exports.32.wasm
Binary file not shown.
Binary file added threads/exports/exports.33.wasm
Binary file not shown.
Binary file added threads/exports/exports.34.wasm
Binary file not shown.
Binary file added threads/exports/exports.35.wasm
Binary file not shown.
Binary file added threads/exports/exports.36.wasm
Binary file not shown.
Binary file added threads/exports/exports.37.wasm
Binary file not shown.
Binary file added threads/exports/exports.38.wasm
Binary file not shown.
Binary file added threads/exports/exports.39.wasm
Binary file not shown.
Binary file added threads/exports/exports.4.wasm
Binary file not shown.
Binary file added threads/exports/exports.40.wasm
Binary file not shown.
Binary file added threads/exports/exports.41.wasm
Binary file not shown.
Binary file added threads/exports/exports.42.wasm
Binary file not shown.
Binary file added threads/exports/exports.43.wasm
Binary file not shown.
Binary file added threads/exports/exports.44.wasm
Binary file not shown.
Binary file added threads/exports/exports.45.wasm
Binary file not shown.
Binary file added threads/exports/exports.46.wasm
Binary file not shown.
Binary file added threads/exports/exports.47.wasm
Binary file not shown.
Binary file added threads/exports/exports.48.wasm
Binary file not shown.
Binary file added threads/exports/exports.49.wasm
Binary file not shown.
Binary file added threads/exports/exports.5.wasm
Binary file not shown.
Binary file added threads/exports/exports.50.wasm
Binary file not shown.
Binary file added threads/exports/exports.51.wasm
Binary file not shown.
Binary file added threads/exports/exports.52.wasm
Binary file not shown.
Binary file added threads/exports/exports.53.wasm
Binary file not shown.
Binary file added threads/exports/exports.54.wasm
Binary file not shown.
Binary file added threads/exports/exports.55.wasm
Binary file not shown.
Binary file added threads/exports/exports.56.wasm
Binary file not shown.
Binary file added threads/exports/exports.57.wasm
Binary file not shown.
Binary file added threads/exports/exports.58.wasm
Binary file not shown.
Binary file added threads/exports/exports.59.wasm
Binary file not shown.
Binary file added threads/exports/exports.6.wasm
Binary file not shown.
Binary file added threads/exports/exports.60.wasm
Binary file not shown.
Binary file added threads/exports/exports.61.wasm
Binary file not shown.
Binary file added threads/exports/exports.62.wasm
Binary file not shown.
Binary file added threads/exports/exports.63.wasm
Binary file not shown.
Binary file added threads/exports/exports.64.wasm
Binary file not shown.
Binary file added threads/exports/exports.65.wasm
Binary file not shown.
Binary file added threads/exports/exports.66.wasm
Binary file not shown.
Binary file added threads/exports/exports.67.wasm
Binary file not shown.
Binary file added threads/exports/exports.68.wasm
Binary file not shown.
Binary file added threads/exports/exports.69.wasm
Binary file not shown.
Binary file added threads/exports/exports.7.wasm
Binary file not shown.
Binary file added threads/exports/exports.70.wasm
Binary file not shown.
Binary file added threads/exports/exports.71.wasm
Binary file not shown.
Binary file added threads/exports/exports.72.wasm
Binary file not shown.
Binary file added threads/exports/exports.73.wasm
Binary file not shown.
Binary file added threads/exports/exports.74.wasm
Binary file not shown.
Binary file added threads/exports/exports.75.wasm
Binary file not shown.
Binary file added threads/exports/exports.76.wasm
Binary file not shown.
Binary file added threads/exports/exports.77.wasm
Binary file not shown.
Binary file added threads/exports/exports.78.wasm
Binary file not shown.
Binary file added threads/exports/exports.79.wasm
Binary file not shown.
Binary file added threads/exports/exports.8.wasm
Binary file not shown.
Binary file added threads/exports/exports.80.wasm
Binary file not shown.
Binary file added threads/exports/exports.81.wasm
Binary file not shown.
Binary file added threads/exports/exports.82.wasm
Binary file not shown.
Binary file added threads/exports/exports.83.wasm
Binary file not shown.
Binary file added threads/exports/exports.84.wasm
Binary file not shown.
Binary file added threads/exports/exports.85.wasm
Binary file not shown.
Binary file added threads/exports/exports.86.wasm
Binary file not shown.
Binary file added threads/exports/exports.87.wasm
Binary file not shown.
Binary file added threads/exports/exports.88.wasm
Binary file not shown.
Binary file added threads/exports/exports.89.wasm
Binary file not shown.
Binary file added threads/exports/exports.9.wasm
Binary file not shown.
Binary file added threads/exports/exports.90.wasm
Binary file not shown.
Binary file added threads/exports/exports.91.wasm
Binary file not shown.
Binary file added threads/exports/exports.92.wasm
Binary file not shown.
104 changes: 104 additions & 0 deletions threads/exports/exports.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
{"source_filename": "exports.wast",
"commands": [
{"type": "module", "line": 3, "filename": "exports.0.wasm"},
{"type": "module", "line": 4, "filename": "exports.1.wasm"},
{"type": "module", "line": 5, "filename": "exports.2.wasm"},
{"type": "module", "line": 7, "filename": "exports.3.wasm"},
{"type": "module", "line": 8, "filename": "exports.4.wasm"},
{"type": "module", "line": 9, "filename": "exports.5.wasm"},
{"type": "module", "line": 10, "filename": "exports.6.wasm"},
{"type": "module", "line": 11, "filename": "exports.7.wasm"},
{"type": "module", "line": 12, "filename": "exports.8.wasm"},
{"type": "module", "line": 13, "filename": "exports.9.wasm"},
{"type": "module", "line": 14, "filename": "exports.10.wasm"},
{"type": "module", "line": 16, "name": "$Func", "filename": "exports.11.wasm"},
{"type": "assert_return", "line": 22, "action": {"type": "invoke", "field": "e", "args": [{"type": "i32", "value": "42"}]}, "expected": [{"type": "i32", "value": "43"}]},
{"type": "assert_return", "line": 23, "action": {"type": "invoke", "module": "$Func", "field": "e", "args": [{"type": "i32", "value": "42"}]}, "expected": [{"type": "i32", "value": "43"}]},
{"type": "module", "line": 24, "filename": "exports.12.wasm"},
{"type": "module", "line": 25, "name": "$Other1", "filename": "exports.13.wasm"},
{"type": "assert_return", "line": 26, "action": {"type": "invoke", "module": "$Func", "field": "e", "args": [{"type": "i32", "value": "42"}]}, "expected": [{"type": "i32", "value": "43"}]},
{"type": "module", "line": 28, "filename": "exports.14.wasm"},
{"type": "assert_return", "line": 34, "action": {"type": "invoke", "field": "a", "args": []}, "expected": [{"type": "i32", "value": "42"}]},
{"type": "assert_return", "line": 35, "action": {"type": "invoke", "field": "b", "args": []}, "expected": [{"type": "i32", "value": "42"}]},
{"type": "assert_return", "line": 36, "action": {"type": "invoke", "field": "c", "args": []}, "expected": [{"type": "i32", "value": "42"}]},
{"type": "assert_invalid", "line": 39, "filename": "exports.15.wasm", "text": "unknown function", "module_type": "binary"},
{"type": "assert_invalid", "line": 43, "filename": "exports.16.wasm", "text": "unknown function", "module_type": "binary"},
{"type": "assert_invalid", "line": 47, "filename": "exports.17.wasm", "text": "unknown function", "module_type": "binary"},
{"type": "assert_invalid", "line": 51, "filename": "exports.18.wasm", "text": "duplicate export name", "module_type": "binary"},
{"type": "assert_invalid", "line": 55, "filename": "exports.19.wasm", "text": "duplicate export name", "module_type": "binary"},
{"type": "assert_invalid", "line": 59, "filename": "exports.20.wasm", "text": "duplicate export name", "module_type": "binary"},
{"type": "assert_invalid", "line": 63, "filename": "exports.21.wasm", "text": "duplicate export name", "module_type": "binary"},
{"type": "assert_invalid", "line": 67, "filename": "exports.22.wasm", "text": "duplicate export name", "module_type": "binary"},
{"type": "module", "line": 74, "filename": "exports.23.wasm"},
{"type": "module", "line": 75, "filename": "exports.24.wasm"},
{"type": "module", "line": 76, "filename": "exports.25.wasm"},
{"type": "module", "line": 78, "filename": "exports.26.wasm"},
{"type": "module", "line": 79, "filename": "exports.27.wasm"},
{"type": "module", "line": 80, "filename": "exports.28.wasm"},
{"type": "module", "line": 81, "filename": "exports.29.wasm"},
{"type": "module", "line": 82, "filename": "exports.30.wasm"},
{"type": "module", "line": 83, "filename": "exports.31.wasm"},
{"type": "module", "line": 85, "name": "$Global", "filename": "exports.32.wasm"},
{"type": "assert_return", "line": 89, "action": {"type": "get", "field": "e"}, "expected": [{"type": "i32", "value": "42"}]},
{"type": "assert_return", "line": 90, "action": {"type": "get", "module": "$Global", "field": "e"}, "expected": [{"type": "i32", "value": "42"}]},
{"type": "module", "line": 91, "filename": "exports.33.wasm"},
{"type": "module", "line": 92, "name": "$Other2", "filename": "exports.34.wasm"},
{"type": "assert_return", "line": 93, "action": {"type": "get", "module": "$Global", "field": "e"}, "expected": [{"type": "i32", "value": "42"}]},
{"type": "assert_invalid", "line": 96, "filename": "exports.35.wasm", "text": "unknown global", "module_type": "binary"},
{"type": "assert_invalid", "line": 100, "filename": "exports.36.wasm", "text": "unknown global", "module_type": "binary"},
{"type": "assert_invalid", "line": 104, "filename": "exports.37.wasm", "text": "unknown global", "module_type": "binary"},
{"type": "assert_invalid", "line": 108, "filename": "exports.38.wasm", "text": "duplicate export name", "module_type": "binary"},
{"type": "assert_invalid", "line": 112, "filename": "exports.39.wasm", "text": "duplicate export name", "module_type": "binary"},
{"type": "assert_invalid", "line": 116, "filename": "exports.40.wasm", "text": "duplicate export name", "module_type": "binary"},
{"type": "assert_invalid", "line": 120, "filename": "exports.41.wasm", "text": "duplicate export name", "module_type": "binary"},
{"type": "assert_invalid", "line": 124, "filename": "exports.42.wasm", "text": "duplicate export name", "module_type": "binary"},
{"type": "module", "line": 131, "filename": "exports.43.wasm"},
{"type": "module", "line": 132, "filename": "exports.44.wasm"},
{"type": "module", "line": 133, "filename": "exports.45.wasm"},
{"type": "module", "line": 135, "filename": "exports.46.wasm"},
{"type": "module", "line": 136, "filename": "exports.47.wasm"},
{"type": "module", "line": 137, "filename": "exports.48.wasm"},
{"type": "module", "line": 138, "filename": "exports.49.wasm"},
{"type": "module", "line": 139, "filename": "exports.50.wasm"},
{"type": "module", "line": 140, "filename": "exports.51.wasm"},
{"type": "module", "line": 141, "filename": "exports.52.wasm"},
{"type": "module", "line": 142, "filename": "exports.53.wasm"},
{"type": "module", "line": 143, "filename": "exports.54.wasm"},
{"type": "module", "line": 144, "filename": "exports.55.wasm"},
{"type": "module", "line": 145, "filename": "exports.56.wasm"},
{"type": "module", "line": 146, "filename": "exports.57.wasm"},
{"type": "assert_invalid", "line": 151, "filename": "exports.58.wasm", "text": "unknown table", "module_type": "binary"},
{"type": "assert_invalid", "line": 155, "filename": "exports.59.wasm", "text": "unknown table", "module_type": "binary"},
{"type": "assert_invalid", "line": 159, "filename": "exports.60.wasm", "text": "unknown table", "module_type": "binary"},
{"type": "assert_invalid", "line": 163, "filename": "exports.61.wasm", "text": "duplicate export name", "module_type": "binary"},
{"type": "assert_invalid", "line": 167, "filename": "exports.62.wasm", "text": "duplicate export name", "module_type": "binary"},
{"type": "assert_invalid", "line": 171, "filename": "exports.63.wasm", "text": "duplicate export name", "module_type": "binary"},
{"type": "assert_invalid", "line": 175, "filename": "exports.64.wasm", "text": "duplicate export name", "module_type": "binary"},
{"type": "assert_invalid", "line": 179, "filename": "exports.65.wasm", "text": "duplicate export name", "module_type": "binary"},
{"type": "module", "line": 186, "filename": "exports.66.wasm"},
{"type": "module", "line": 187, "filename": "exports.67.wasm"},
{"type": "module", "line": 191, "filename": "exports.68.wasm"},
{"type": "module", "line": 192, "filename": "exports.69.wasm"},
{"type": "module", "line": 193, "filename": "exports.70.wasm"},
{"type": "module", "line": 194, "filename": "exports.71.wasm"},
{"type": "module", "line": 195, "filename": "exports.72.wasm"},
{"type": "module", "line": 196, "filename": "exports.73.wasm"},
{"type": "module", "line": 197, "filename": "exports.74.wasm"},
{"type": "module", "line": 198, "filename": "exports.75.wasm"},
{"type": "module", "line": 199, "filename": "exports.76.wasm"},
{"type": "module", "line": 200, "filename": "exports.77.wasm"},
{"type": "module", "line": 201, "filename": "exports.78.wasm"},
{"type": "module", "line": 202, "filename": "exports.79.wasm"},
{"type": "module", "line": 204, "filename": "exports.80.wasm"},
{"type": "module", "line": 205, "filename": "exports.81.wasm"},
{"type": "module", "line": 206, "filename": "exports.82.wasm"},
{"type": "module", "line": 207, "filename": "exports.83.wasm"},
{"type": "module", "line": 208, "filename": "exports.84.wasm"},
{"type": "module", "line": 209, "filename": "exports.85.wasm"},
{"type": "assert_invalid", "line": 214, "filename": "exports.86.wasm", "text": "unknown memory", "module_type": "binary"},
{"type": "assert_invalid", "line": 218, "filename": "exports.87.wasm", "text": "unknown memory", "module_type": "binary"},
{"type": "assert_invalid", "line": 222, "filename": "exports.88.wasm", "text": "unknown memory", "module_type": "binary"},
{"type": "assert_invalid", "line": 226, "filename": "exports.89.wasm", "text": "duplicate export name", "module_type": "binary"},
{"type": "assert_invalid", "line": 235, "filename": "exports.90.wasm", "text": "duplicate export name", "module_type": "binary"},
{"type": "assert_invalid", "line": 239, "filename": "exports.91.wasm", "text": "duplicate export name", "module_type": "binary"},
{"type": "assert_invalid", "line": 243, "filename": "exports.92.wasm", "text": "duplicate export name", "module_type": "binary"}]}
Loading

0 comments on commit 033f362

Please sign in to comment.