From 9d3b26341eb8b4f83f58fe1f2d79ab34eb319863 Mon Sep 17 00:00:00 2001 From: Michael Hoffmann Date: Mon, 2 Jul 2018 22:44:38 +0200 Subject: [PATCH 1/3] Add binding for Date.prototype.getDate --- src/js.rs | 7 +++++++ tests/all/js_globals/Date.rs | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+) diff --git a/src/js.rs b/src/js.rs index b7fead95..1d7d6463 100644 --- a/src/js.rs +++ b/src/js.rs @@ -794,6 +794,13 @@ extern "C" { extern "C" { pub type Date; + /// The getDate() method returns the day of the month for the + /// specified date according to local time. + /// + /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getDate + #[wasm_bindgen(method, js_name = getDate)] + pub fn get_date(this: &Date) -> Number; + /// The getDay() method returns the day of the week for the specified date according to local time, /// where 0 represents Sunday. For the day of the month see getDate(). /// diff --git a/tests/all/js_globals/Date.rs b/tests/all/js_globals/Date.rs index 740044f7..a0c4423a 100644 --- a/tests/all/js_globals/Date.rs +++ b/tests/all/js_globals/Date.rs @@ -2,6 +2,40 @@ use super::project; +#[test] +fn get_date() { + project() + .file( + "src/lib.rs", + r#" + #![feature(proc_macro, wasm_custom_section)] + + extern crate wasm_bindgen; + use wasm_bindgen::prelude::*; + use wasm_bindgen::js::{Date, Number}; + + #[wasm_bindgen] + pub fn get_date(this: &Date) -> Number { + this.get_date() + } + "#, + ) + .file( + "test.js", + r#" + import * as assert from "assert"; + import * as wasm from "./out"; + + export function test() { + let date = new Date(1993, 6, 28, 14, 39, 7); + + assert.equal(wasm.get_date(date), 28); + } + "#, + ) + .test() +} + #[test] fn get_day() { project() From 260183a522be54c98274f364446551612c850593 Mon Sep 17 00:00:00 2001 From: Michael Hoffmann Date: Mon, 2 Jul 2018 23:06:46 +0200 Subject: [PATCH 2/3] Add binding for Number.isInteger --- src/js.rs | 6 ++++++ tests/all/js_globals/Number.rs | 27 +++++++++++++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/src/js.rs b/src/js.rs index 1d7d6463..8db2d1a1 100644 --- a/src/js.rs +++ b/src/js.rs @@ -738,6 +738,12 @@ extern "C" { extern "C" { pub type Number; + /// The Number.isInteger() method determines whether the passed value is an integer. + /// + /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isInteger + #[wasm_bindgen(static_method_of = Number, js_name = isInteger)] + pub fn is_integer(object: &Object) -> bool; + /// The `Number` JavaScript object is a wrapper object allowing /// you to work with numerical values. A `Number` object is /// created using the `Number()` constructor. diff --git a/tests/all/js_globals/Number.rs b/tests/all/js_globals/Number.rs index 4c06fc9e..73aa8dad 100644 --- a/tests/all/js_globals/Number.rs +++ b/tests/all/js_globals/Number.rs @@ -2,6 +2,33 @@ use super::project; +#[test] +fn is_integer() { + 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 is_integer(obj: &js::Object) -> bool { + js::Number::is_integer(&obj) + } + "#) + .file("test.js", r#" + import * as assert from "assert"; + import * as wasm from "./out"; + + export function test() { + assert(wasm.is_integer(123)); + assert(!wasm.is_integer(123.45)); + } + "#) + .test() +} + #[test] fn new() { project() From 9f3722bbd9c10823d1fb2d2689ad6443ccde3bad Mon Sep 17 00:00:00 2001 From: Michael Hoffmann Date: Thu, 5 Jul 2018 17:34:45 +0200 Subject: [PATCH 3/3] Change assert to assert.ok to fix test --- tests/all/js_globals/Number.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/all/js_globals/Number.rs b/tests/all/js_globals/Number.rs index 73aa8dad..f7d44dba 100644 --- a/tests/all/js_globals/Number.rs +++ b/tests/all/js_globals/Number.rs @@ -22,8 +22,8 @@ fn is_integer() { import * as wasm from "./out"; export function test() { - assert(wasm.is_integer(123)); - assert(!wasm.is_integer(123.45)); + assert.ok(wasm.is_integer(123)); + assert.ok(!wasm.is_integer(123.45)); } "#) .test()