Add failing immutable slice test

This commit is contained in:
Chinedu Francis Nwafili 2019-01-17 13:20:53 -05:00
parent 177ef22673
commit 1d0c2fee9e
No known key found for this signature in database
GPG Key ID: 4BF2F74EA7B46D27
4 changed files with 34 additions and 0 deletions

View File

@ -151,6 +151,11 @@ export function new_title() {
return document.createElement("title"); return document.createElement("title");
} }
export function new_webgl_rendering_context() {
const canvas = document.createElement('canvas');
return canvas.getContext('webgl');
}
export function new_xpath_result() { export function new_xpath_result() {
let xmlDoc = new DOMParser().parseFromString("<root><value>tomato</value></root>", "application/xml"); let xmlDoc = new DOMParser().parseFromString("<root><value>tomato</value></root>", "application/xml");
let xpathResult = xmlDoc.evaluate("/root//value", xmlDoc, null, XPathResult.ANY_TYPE, null); let xpathResult = xmlDoc.evaluate("/root//value", xmlDoc, null, XPathResult.ANY_TYPE, null);

View File

@ -0,0 +1,26 @@
//! When generating our web_sys APIs we default to setting slice references that
//! get passed to JS as mutable in case they get mutated in JS.
//!
//! In certain cases we know for sure that the slice will not get mutated - for
//! example when working with the WebGlRenderingContext APIs.
//!
//! These tests ensure that whitelisted methods do indeed accept mutable slices.
//!
//! @see https://github.com/rustwasm/wasm-bindgen/issues/1005
use wasm_bindgen::prelude::*;
use wasm_bindgen_test::*;
use web_sys::WebGlRenderingContext;
#[wasm_bindgen(module = "./tests/wasm/element.js")]
extern "C" {
fn new_webgl_rendering_context() -> WebGlRenderingContext;
}
// Ensure that our whitelisted WebGlRenderingContext methods work
#[wasm_bindgen_test]
fn test_webgl_rendering_context_immutable_slices() {
let gl = new_webgl_rendering_context();
gl.vertex_attrib1fv_with_f32_array(0, &[5000.]);
}

View File

@ -56,6 +56,7 @@ pub mod style_element;
pub mod table_element; pub mod table_element;
pub mod title_element; pub mod title_element;
pub mod xpath_result; pub mod xpath_result;
pub mod immutable_slices;
#[wasm_bindgen_test] #[wasm_bindgen_test]
fn deref_works() { fn deref_works() {

View File

@ -1 +1,3 @@
// intentionally left blank // intentionally left blank
// QUESTION FOR REVIEWER: WHY? (I'll include this context in the comment)