From cd189d53c48e511b252e96f7535fe56f2cf6031f Mon Sep 17 00:00:00 2001 From: Sendil Kumar Date: Mon, 25 Jun 2018 10:12:27 +0200 Subject: [PATCH] Add date value of --- src/js.rs | 13 +++++++++++++ tests/all/js_globals/Date.rs | 30 ++++++++++++++++++++++++++++++ tests/all/js_globals/mod.rs | 1 + 3 files changed, 44 insertions(+) create mode 100644 tests/all/js_globals/Date.rs diff --git a/src/js.rs b/src/js.rs index cef43b16..196c3690 100644 --- a/src/js.rs +++ b/src/js.rs @@ -372,6 +372,19 @@ extern { pub fn value_of(this: &Number) -> Number; } +// Date. +#[wasm_bindgen] +extern { + pub type Date; + + /// The valueOf() method returns the primitive value of + /// a Date object. + /// + /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/valueOf + #[wasm_bindgen(method, js_name = valueOf)] + pub fn value_of(this: &Date) -> Date; +} + // Object. #[wasm_bindgen] extern { diff --git a/tests/all/js_globals/Date.rs b/tests/all/js_globals/Date.rs new file mode 100644 index 00000000..e42e5286 --- /dev/null +++ b/tests/all/js_globals/Date.rs @@ -0,0 +1,30 @@ +#![allow(non_snake_case)] + +use super::project; + +#[test] +fn value_of() { + 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; + + #[wasm_bindgen] + pub fn js_value_of(this: &Date) -> Date { + this.value_of() + } + "#) + .file("test.ts", r#" + import * as assert from "assert"; + import * as wasm from "./out"; + + export function test() { + let date = new Date(Date.UTC(96, 1, 2, 3, 4, 5)); + assert.equal(wasm.js_value_of(date), 823230245000); + } + "#) + .test() +} diff --git a/tests/all/js_globals/mod.rs b/tests/all/js_globals/mod.rs index 3fd54d80..2cb35783 100644 --- a/tests/all/js_globals/mod.rs +++ b/tests/all/js_globals/mod.rs @@ -9,6 +9,7 @@ mod JsFunction; mod JsString; mod Number; mod Math; +mod Date; #[test] #[cfg(feature = "std")]