mirror of
https://github.com/rustwasm/wasm-bindgen.git
synced 2024-12-16 05:59:21 +03:00
7ecf4aae87
Rustfmt all the things!
135 lines
4.7 KiB
Rust
135 lines
4.7 KiB
Rust
use wasm_bindgen::prelude::*;
|
|
use wasm_bindgen_test::*;
|
|
|
|
#[wasm_bindgen(module = "tests/wasm/variadic.js")]
|
|
extern "C" {
|
|
#[wasm_bindgen(variadic)]
|
|
fn variadic_sum_u8(first: u8, second: u8, rest: &[u8]) -> u8;
|
|
#[wasm_bindgen(variadic)]
|
|
fn variadic_sum_u16(first: u16, second: u16, rest: &[u16]) -> u16;
|
|
#[wasm_bindgen(variadic)]
|
|
fn variadic_sum_u32(first: u32, second: u32, rest: &[u32]) -> u32;
|
|
#[wasm_bindgen(variadic)]
|
|
fn variadic_sum_u64(first: u64, second: u64, rest: &[u64]) -> u64;
|
|
//#[wasm_bindgen(variadic)]
|
|
//fn variadic_sum_usize(first: usize, second: usize, rest: &[usize]) -> usize;
|
|
#[wasm_bindgen(variadic)]
|
|
fn variadic_sum_i8(first: i8, second: i8, rest: &[i8]) -> i8;
|
|
#[wasm_bindgen(variadic)]
|
|
fn variadic_sum_i16(first: i16, second: i16, rest: &[i16]) -> i16;
|
|
#[wasm_bindgen(variadic)]
|
|
fn variadic_sum_i32(first: i32, second: i32, rest: &[i32]) -> i32;
|
|
#[wasm_bindgen(variadic)]
|
|
fn variadic_sum_i64(first: i64, second: i64, rest: &[i64]) -> i64;
|
|
//#[wasm_bindgen(variadic)]
|
|
//fn variadic_sum_isize(first: isize, second: isize, rest: &[isize]) -> isize;
|
|
#[wasm_bindgen(variadic)]
|
|
fn variadic_sum_f32(first: f32, second: f32, rest: &[f32]) -> f32;
|
|
#[wasm_bindgen(variadic)]
|
|
fn variadic_sum_f64(first: f64, second: f64, rest: &[f64]) -> f64;
|
|
//#[wasm_bindgen(variadic)]
|
|
//fn variadic_sum_opt(first: Option<u32>, second: Option<u32>, rest: &[Option<u32>]) -> u32;
|
|
//#[wasm_bindgen(variadic)]
|
|
//fn variadic_concat_str(first: &str, second: &str, rest: &[&str]) -> String;
|
|
//#[wasm_bindgen(variadic)]
|
|
//fn variadic_concat_string(first: String,
|
|
// second: String,
|
|
// rest: Vec<String>) -> String;
|
|
#[wasm_bindgen(variadic)]
|
|
fn variadic_sum_rest_vec(first: u8, second: u8, rest: Vec<u8>) -> u8;
|
|
//#[wasm_bindgen(variadic)]
|
|
//fn variadic_compare_pairs(first: JsValue, second: JsValue, rest: &[JsValue]);
|
|
//TODO imported type
|
|
}
|
|
|
|
// ints
|
|
|
|
macro_rules! variadic_test_int {
|
|
($fn_name:ident, $extern_name:ident) => {
|
|
#[wasm_bindgen_test]
|
|
fn $fn_name() {
|
|
assert_eq!($extern_name(1, 2, &[]), 3);
|
|
assert_eq!($extern_name(1, 2, &[3]), 6);
|
|
assert_eq!($extern_name(1, 2, &[3, 4]), 10);
|
|
}
|
|
};
|
|
}
|
|
|
|
// The <int>64 tests throw js `Cannot mix BigInt and other types, use explicit conversions`
|
|
variadic_test_int!(u8, variadic_sum_u8);
|
|
variadic_test_int!(u16, variadic_sum_u16);
|
|
variadic_test_int!(u32, variadic_sum_u32);
|
|
//variadic_test_int!(u64, variadic_sum_u64);
|
|
//variadic_test_int!(usize, variadic_sum_usize);
|
|
variadic_test_int!(i8, variadic_sum_i8);
|
|
variadic_test_int!(i16, variadic_sum_i16);
|
|
variadic_test_int!(i32, variadic_sum_i32);
|
|
//variadic_test_int!(i64, variadic_sum_i64);
|
|
//variadic_test_int!(isize, variadic_sum_isize);
|
|
|
|
// floats
|
|
|
|
macro_rules! variadic_test_float {
|
|
($fn_name:ident, $extern_name:ident) => {
|
|
#[wasm_bindgen_test]
|
|
fn $fn_name() {
|
|
assert_eq!($extern_name(1., 2., &[]), 3.);
|
|
assert_eq!($extern_name(1., 2., &[3.]), 6.);
|
|
assert_eq!($extern_name(1., 2., &[3., 4.]), 10.);
|
|
}
|
|
};
|
|
}
|
|
|
|
variadic_test_float!(f32, variadic_sum_f32);
|
|
variadic_test_float!(f64, variadic_sum_f64);
|
|
|
|
// strings
|
|
|
|
// `the trait `wasm_bindgen::convert::IntoWasmAbi` is not implemented for `&[&str]`
|
|
/*
|
|
#[wasm_bindgen_test]
|
|
fn str() {
|
|
assert_eq!(variadic_concat_str("a ", "test", &[]), "a test");
|
|
assert_eq!(variadic_concat_str("a", "nother ", &["test"]), "another test");
|
|
assert_eq!(variadic_concat_str("yet ", "a", &["nother ", "test"]), "yet another test");
|
|
}
|
|
|
|
#[wasm_bindgen_test]
|
|
fn string() {
|
|
assert_eq!(variadic_concat_string("a ".into(), "test".into(), vec![]), "a test");
|
|
assert_eq!(variadic_concat_string("a".into(), "nother ".into(), vec!["test".into()]),
|
|
"another test");
|
|
assert_eq!(variadic_concat_string("yet ".into(),
|
|
"a".into(),
|
|
vec!["nother ".into(), "test".into()]),
|
|
"yet another test");
|
|
}
|
|
*/
|
|
|
|
// options
|
|
|
|
/*
|
|
#[wasm_bindgen_test]
|
|
fn opt() {
|
|
assert_eq!(variadic_sum_opt(Some(1), None, &[]), 1);
|
|
assert_eq!(variadic_sum_opt(Some(1), None, &[Some(2)]), 3);
|
|
assert_eq!(variadic_sum_opt(Some(1), None, &[None, Some(2)]), 3);
|
|
}
|
|
*/
|
|
|
|
// vec not slice
|
|
|
|
#[wasm_bindgen_test]
|
|
fn rest_vec() {
|
|
assert_eq!(variadic_sum_rest_vec(1, 2, vec![]), 3);
|
|
assert_eq!(variadic_sum_rest_vec(1, 2, vec![3]), 6);
|
|
assert_eq!(variadic_sum_rest_vec(1, 2, vec![3, 4]), 10);
|
|
}
|
|
|
|
// JsValue
|
|
//#[wasm_bindgen_test]
|
|
//fn jsvalue() {
|
|
// variadic_compare_pairs_jsvalue(true, true, vec![]);
|
|
// variadic_compare_pairs_jsvalue(false, false, vec![3, 3]);
|
|
//}
|