mirror of
https://github.com/fluencelabs/wasm-bindgen
synced 2025-06-24 02:01:35 +00:00
Add a proper test.
And fix loads of bugs.
This commit is contained in:
@ -377,7 +377,7 @@ impl<'a> Context<'a> {
|
||||
}
|
||||
if (type == 'function') {
|
||||
const name = val.name;
|
||||
if (typeof name == 'string') {
|
||||
if (typeof name == 'string' && name.length > 0) {
|
||||
return `Function(${name})`;
|
||||
} else {
|
||||
return 'Function';
|
||||
@ -391,16 +391,16 @@ impl<'a> Context<'a> {
|
||||
debug += debug_str(val[0]);
|
||||
}
|
||||
for(let i = 1; i < length; i++) {
|
||||
debug += debug_str(val[i]) + ', ';
|
||||
debug += ', ' + debug_str(val[i]);
|
||||
}
|
||||
debug += ']';
|
||||
return debug;
|
||||
}
|
||||
// Test for built-in
|
||||
const builtInMatches = /\\[object ([^])+\\]/.exec(toString.call(val));
|
||||
const builtInMatches = /\\[object ([^\\]]+)\\]/.exec(toString.call(val));
|
||||
let className;
|
||||
if (builtInMatches.len > 0) {
|
||||
className = builtInMatches[0];
|
||||
if (builtInMatches.length > 1) {
|
||||
className = builtInMatches[1];
|
||||
} else {
|
||||
// Failed to match the standard '[object ClassName]'
|
||||
return toString.call(val);
|
||||
@ -414,6 +414,7 @@ impl<'a> Context<'a> {
|
||||
} catch (_) {
|
||||
return 'Object';
|
||||
}
|
||||
// TODO we could test for more things here, like `Set`s and `Map`s.
|
||||
} else {
|
||||
return className;
|
||||
}
|
||||
|
@ -41,3 +41,17 @@ exports.js_eq_works = () => {
|
||||
assert.strictEqual(wasm.eq_test(x, x), true);
|
||||
assert.strictEqual(wasm.eq_test1(x), true);
|
||||
};
|
||||
|
||||
exports.debug_values = () => ([
|
||||
null,
|
||||
undefined,
|
||||
0,
|
||||
1.0,
|
||||
true,
|
||||
[1,2,3],
|
||||
"string",
|
||||
{test: "object"},
|
||||
[1.0, [2.0, 3.0]],
|
||||
() => (null),
|
||||
new Set(),
|
||||
]);
|
||||
|
@ -8,6 +8,7 @@ extern "C" {
|
||||
fn js_works();
|
||||
fn js_eq_works();
|
||||
fn assert_null(v: JsValue);
|
||||
fn debug_values() -> JsValue;
|
||||
}
|
||||
|
||||
#[wasm_bindgen_test]
|
||||
@ -145,3 +146,24 @@ fn memory_accessor_appears_to_work() {
|
||||
.for_each(&mut |val, _, _| v.push(val));
|
||||
assert_eq!(v, [3, 0, 0, 0]);
|
||||
}
|
||||
|
||||
#[wasm_bindgen_test]
|
||||
fn debug_output() {
|
||||
let test_iter = debug_values().dyn_into::<js_sys::Array>().unwrap().values().into_iter();
|
||||
let expecteds = vec![
|
||||
"JsValue(null)",
|
||||
"JsValue(undefined)",
|
||||
"JsValue(0)",
|
||||
"JsValue(1)",
|
||||
"JsValue(true)",
|
||||
"JsValue([1, 2, 3])",
|
||||
"JsValue(\"string\")",
|
||||
"JsValue(Object({\"test\":\"object\"}))",
|
||||
"JsValue([1, [2, 3]])",
|
||||
"JsValue(Function)",
|
||||
"JsValue(Set)",
|
||||
];
|
||||
for (test, expected) in test_iter.zip(expecteds) {
|
||||
assert_eq!(format!("{:?}", test.unwrap()), expected);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user