Vendor dependencies
Let's see how I like this workflow.
This commit is contained in:
parent
34d1830413
commit
9c435dc440
7500 changed files with 1665121 additions and 99 deletions
88
vendor/wasm-bindgen/tests/wasm/jscast.rs
vendored
Normal file
88
vendor/wasm-bindgen/tests/wasm/jscast.rs
vendored
Normal file
|
|
@ -0,0 +1,88 @@
|
|||
use wasm_bindgen::prelude::*;
|
||||
use wasm_bindgen::JsCast;
|
||||
use wasm_bindgen_test::*;
|
||||
|
||||
#[wasm_bindgen(module = "tests/wasm/jscast.js")]
|
||||
extern "C" {
|
||||
type JsCast1;
|
||||
#[wasm_bindgen(constructor)]
|
||||
fn new() -> JsCast1;
|
||||
#[wasm_bindgen(method)]
|
||||
fn myval(this: &JsCast1) -> u32;
|
||||
|
||||
type JsCast2;
|
||||
#[wasm_bindgen(constructor)]
|
||||
fn new() -> JsCast2;
|
||||
|
||||
#[wasm_bindgen(extends = JsCast1)]
|
||||
type JsCast3;
|
||||
#[wasm_bindgen(constructor)]
|
||||
fn new() -> JsCast3;
|
||||
|
||||
#[wasm_bindgen(extends = crate::jscast::JsCast1, extends = JsCast3)]
|
||||
type JsCast4;
|
||||
#[wasm_bindgen(constructor)]
|
||||
fn new() -> JsCast4;
|
||||
}
|
||||
|
||||
#[wasm_bindgen_test]
|
||||
fn instanceof_works() {
|
||||
let a = JsCast1::new();
|
||||
let b = JsCast2::new();
|
||||
let c = JsCast3::new();
|
||||
|
||||
assert!(a.is_instance_of::<JsCast1>());
|
||||
assert!(!a.is_instance_of::<JsCast2>());
|
||||
assert!(!a.is_instance_of::<JsCast3>());
|
||||
|
||||
assert!(!b.is_instance_of::<JsCast1>());
|
||||
assert!(b.is_instance_of::<JsCast2>());
|
||||
assert!(!b.is_instance_of::<JsCast3>());
|
||||
|
||||
assert!(c.is_instance_of::<JsCast1>());
|
||||
assert!(!c.is_instance_of::<JsCast2>());
|
||||
assert!(c.is_instance_of::<JsCast3>());
|
||||
}
|
||||
|
||||
#[wasm_bindgen_test]
|
||||
fn casting() {
|
||||
let a = JsCast1::new();
|
||||
let b = JsCast2::new();
|
||||
let c = JsCast3::new();
|
||||
|
||||
assert!(a.dyn_ref::<JsCast1>().is_some());
|
||||
assert!(a.dyn_ref::<JsCast2>().is_none());
|
||||
assert!(a.dyn_ref::<JsCast3>().is_none());
|
||||
|
||||
assert!(b.dyn_ref::<JsCast1>().is_none());
|
||||
assert!(b.dyn_ref::<JsCast2>().is_some());
|
||||
assert!(b.dyn_ref::<JsCast3>().is_none());
|
||||
|
||||
assert!(c.dyn_ref::<JsCast1>().is_some());
|
||||
assert!(c.dyn_ref::<JsCast2>().is_none());
|
||||
assert!(c.dyn_ref::<JsCast3>().is_some());
|
||||
}
|
||||
|
||||
#[wasm_bindgen_test]
|
||||
fn method_calling() {
|
||||
let a = JsCast1::new();
|
||||
let b = JsCast3::new();
|
||||
|
||||
assert_eq!(a.myval(), 1);
|
||||
assert_eq!(b.dyn_ref::<JsCast1>().unwrap().myval(), 3);
|
||||
assert_eq!(b.unchecked_ref::<JsCast1>().myval(), 3);
|
||||
let c: &JsCast1 = b.as_ref();
|
||||
assert_eq!(c.myval(), 3);
|
||||
}
|
||||
|
||||
#[wasm_bindgen_test]
|
||||
fn multiple_layers_of_inheritance() {
|
||||
let a = JsCast4::new();
|
||||
assert!(a.is_instance_of::<JsCast4>());
|
||||
assert!(a.is_instance_of::<JsCast3>());
|
||||
assert!(a.is_instance_of::<JsCast1>());
|
||||
|
||||
let _: &JsCast3 = a.as_ref();
|
||||
let b: &JsCast1 = a.as_ref();
|
||||
assert_eq!(b.myval(), 4);
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue