Merge pull request #333 from Hywan/js_boolean

feat(js) Implement `Boolean` bindings.
This commit is contained in:
Nick Fitzgerald 2018-06-27 14:36:00 -07:00 committed by GitHub
commit 40722b7ae3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 74 additions and 0 deletions

View File

@ -251,6 +251,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;