diff options
Diffstat (limited to 'vendor/wasm-bindgen/tests/wasm/validate_prt.js')
-rw-r--r-- | vendor/wasm-bindgen/tests/wasm/validate_prt.js | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/vendor/wasm-bindgen/tests/wasm/validate_prt.js b/vendor/wasm-bindgen/tests/wasm/validate_prt.js new file mode 100644 index 000000000..070d71dfa --- /dev/null +++ b/vendor/wasm-bindgen/tests/wasm/validate_prt.js @@ -0,0 +1,43 @@ +const wasm = require('wasm-bindgen-test.js'); +const assert = require('assert'); + +// NB: `wasm-pack` uses the presence of checks for moved values as a way to test +// whether it is correctly enabling `--debug` when configured to do so, so don't +// change this expected debug output without also updating `wasm-pack`'s tests. +const assertMovedPtrThrows = process.env.WASM_BINDGEN_NO_DEBUG == null + ? f => assert.throws(f, /Attempt to use a moved value/) + : f => assert.throws(f, /null pointer passed to rust/); + +const useMoved = () => { + const apple = new wasm.Fruit('apple'); + apple.name(); + wasm.eat(apple); + assertMovedPtrThrows(() => apple.name()); +}; + +const moveMoved = () => { + const pear = new wasm.Fruit('pear'); + pear.name(); + wasm.eat(pear); + assertMovedPtrThrows(() => wasm.eat(pear)); +}; + +const methodMoved = () => { + const quince = new wasm.Fruit('quince'); + quince.name(); + quince.rot(); + assertMovedPtrThrows(() => quince.rot()); +}; + +exports.js_works = () => { + useMoved(); + moveMoved(); + methodMoved(); + + const a = new wasm.Fruit('a'); + a.prop; + assertMovedPtrThrows(() => a.prop); + const b = new wasm.Fruit('a'); + b.prop = 3; + assertMovedPtrThrows(() => { b.prop = 4; }); +}; |