feat(js) Implement Boolean bindings.

Cf https://github.com/rustwasm/wasm-bindgen/issues/275.
This commit is contained in:
Ivan Enderlin 2018-06-27 09:07:47 +02:00
parent c16b9a903c
commit 91bc7a199c
No known key found for this signature in database
GPG Key ID: 461F31FCE31F4AAD
3 changed files with 74 additions and 0 deletions

View File

@ -243,6 +243,24 @@ extern {
pub fn entries(this: &Array) -> ArrayIterator;
}
// Boolean
#[wasm_bindgen]
extern {
pub type Boolean;
/// The `Boolean()` constructor creates an object wrapper for a boolean value.
///
/// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean
#[wasm_bindgen(constructor)]
pub fn new(value: JsValue) -> Boolean;
/// The `valueOf()` method returns the primitive value of a `Boolean` object.
///
/// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean/valueOf
#[wasm_bindgen(method, js_name = valueOf)]
pub fn value_of(this: &Boolean) -> bool;
}
// Function
#[wasm_bindgen]
extern {

View File

@ -0,0 +1,55 @@
#![allow(non_snake_case)]
use project;
#[test]
fn new_undefined() {
project()
.file("src/lib.rs", r#"
#![feature(proc_macro, wasm_custom_section)]
extern crate wasm_bindgen;
use wasm_bindgen::prelude::*;
use wasm_bindgen::js;
#[wasm_bindgen]
pub fn new_boolean() -> js::Boolean {
js::Boolean::new(JsValue::undefined())
}
"#)
.file("test.ts", r#"
import * as assert from "assert";
import * as wasm from "./out";
export function test() {
assert.equal(wasm.new_boolean().valueOf(), false);
}
"#)
.test()
}
#[test]
fn new_truely() {
project()
.file("src/lib.rs", r#"
#![feature(proc_macro, wasm_custom_section)]
extern crate wasm_bindgen;
use wasm_bindgen::prelude::*;
use wasm_bindgen::js;
#[wasm_bindgen]
pub fn new_boolean() -> js::Boolean {
js::Boolean::new(JsValue::from("foo"))
}
"#)
.file("test.ts", r#"
import * as assert from "assert";
import * as wasm from "./out";
export function test() {
assert.equal(wasm.new_boolean().valueOf(), true);
}
"#)
.test()
}

View File

@ -4,6 +4,7 @@ use super::project;
mod Array;
mod ArrayIterator;
mod Boolean;
mod Date;
mod Function;
mod JsString;