diff --git a/crates/webidl-tests/simple.js b/crates/webidl-tests/simple.js index 2f6b3876..7dbd45b4 100644 --- a/crates/webidl-tests/simple.js +++ b/crates/webidl-tests/simple.js @@ -93,6 +93,20 @@ global.GlobalMethod = class GlobalMethod { } }; +global.Indexing = function () { + return new Proxy({}, { + get(obj, prop) { + return obj.hasOwnProperty(prop) ? obj[prop] : -1; + }, + set(obj, prop, value) { + obj[prop] = value; + }, + deleteProperty(obj, prop) { + delete obj[prop]; + }, + }); +}; + global.PartialInterface = class PartialInterface { get un() { return 1; diff --git a/crates/webidl-tests/simple.rs b/crates/webidl-tests/simple.rs index 914643be..1230bfbc 100644 --- a/crates/webidl-tests/simple.rs +++ b/crates/webidl-tests/simple.rs @@ -65,7 +65,17 @@ fn optional_method() { #[wasm_bindgen_test] fn global_method() { let f = GlobalMethod::new().unwrap(); - assert!(f.m() == 123); + assert_eq!(f.m(), 123); +} + +#[wasm_bindgen_test] +fn indexing() { + let f = Indexing::new().unwrap(); + assert_eq!(f.get(123), -1); + f.set(123, 456); + assert_eq!(f.get(123), 456); + f.delete(123); + assert_eq!(f.get(123), -1); } #[wasm_bindgen_test] diff --git a/crates/webidl-tests/simple.webidl b/crates/webidl-tests/simple.webidl index 810aba0c..8435c024 100644 --- a/crates/webidl-tests/simple.webidl +++ b/crates/webidl-tests/simple.webidl @@ -40,6 +40,13 @@ interface GlobalMethod { octet m(); }; +[Constructor()] +interface Indexing { + getter short (unsigned long index); + setter void (unsigned long index, short value); + deleter void (unsigned long index); +}; + [Constructor()] interface Unforgeable { [Unforgeable] readonly attribute short uno;