From e0a70417ce46c792134082711c6ef4065302b07d Mon Sep 17 00:00:00 2001 From: Jannik Keye Date: Thu, 28 Jun 2018 22:00:02 +0200 Subject: [PATCH] feat(Map/MapIterator): add Map.values --- src/js.rs | 7 +++++++ tests/all/js_globals/MapIterator.rs | 32 +++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+) diff --git a/src/js.rs b/src/js.rs index 7336d658..3e59b63f 100644 --- a/src/js.rs +++ b/src/js.rs @@ -374,6 +374,13 @@ extern { /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/keys #[wasm_bindgen(method)] pub fn keys(this: &Map) -> MapIterator; + + /// The values() method returns a new Iterator object that contains the + /// values for each element in the Map object in insertion order. + /// + /// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/values + #[wasm_bindgen(method)] + pub fn values(this: &Map) -> MapIterator; } // Math diff --git a/tests/all/js_globals/MapIterator.rs b/tests/all/js_globals/MapIterator.rs index bb560e42..0bc79e25 100644 --- a/tests/all/js_globals/MapIterator.rs +++ b/tests/all/js_globals/MapIterator.rs @@ -65,4 +65,36 @@ fn keys() { } "#) .test() +} + +#[test] +fn values() { + 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 get_values(this: &js::Map) -> js::MapIterator { + this.values() + } + "#) + .file("test.ts", r#" + import * as assert from "assert"; + import * as wasm from "./out"; + + export function test() { + const map = new Map(); + const iterator = map.keys(); + const wasmIterator = wasm.get_values(map); + map.set('foo', 'bar'); + map.set('bar', 'baz'); + + assert.equal(iterator.toString(), wasmIterator.toString()); + } + "#) + .test() } \ No newline at end of file