wasm-bindgen/tests/wasm/validate_prt.js
2019-07-16 13:35:59 -07:00

37 lines
1.0 KiB
JavaScript

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();
};