Fix wasm tests
This commit is contained in:
@@ -143,7 +143,7 @@ macro_rules! impl_vector {
|
|||||||
|
|
||||||
impl <const LANES: usize> From<$name<LANES>> for [$type; LANES] {
|
impl <const LANES: usize> From<$name<LANES>> for [$type; LANES] {
|
||||||
fn from(vector: $name<LANES>) -> Self {
|
fn from(vector: $name<LANES>) -> Self {
|
||||||
vector.0
|
vector.to_array()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,3 @@
|
|||||||
#[cfg(target_arch = "wasm32")]
|
|
||||||
wasm_bindgen_test_configure!(run_in_browser);
|
|
||||||
|
|
||||||
macro_rules! impl_op_test {
|
macro_rules! impl_op_test {
|
||||||
{ unary, $vector:ty, $scalar:ty, $trait:ident :: $fn:ident } => {
|
{ unary, $vector:ty, $scalar:ty, $trait:ident :: $fn:ident } => {
|
||||||
test_helpers::test_lanes! {
|
test_helpers::test_lanes! {
|
||||||
|
|||||||
@@ -1,6 +1,3 @@
|
|||||||
#[cfg(target_arch = "wasm32")]
|
|
||||||
wasm_bindgen_test_configure!(run_in_browser);
|
|
||||||
|
|
||||||
macro_rules! impl_unary_op_test {
|
macro_rules! impl_unary_op_test {
|
||||||
{ $vector:ty, $scalar:ty, $trait:ident :: $fn:ident, $scalar_fn:expr } => {
|
{ $vector:ty, $scalar:ty, $trait:ident :: $fn:ident, $scalar_fn:expr } => {
|
||||||
test_helpers::test_lanes! {
|
test_helpers::test_lanes! {
|
||||||
|
|||||||
@@ -5,5 +5,7 @@ authors = ["Caleb Zulawski <caleb.zulawski@gmail.com>"]
|
|||||||
edition = "2018"
|
edition = "2018"
|
||||||
publish = false
|
publish = false
|
||||||
|
|
||||||
[dependencies]
|
[dependencies.proptest]
|
||||||
proptest = "0.10"
|
version = "0.10"
|
||||||
|
default-features = false
|
||||||
|
features = ["alloc"]
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ pub struct UniformArrayStrategy<S, T> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl<S, T> UniformArrayStrategy<S, T> {
|
impl<S, T> UniformArrayStrategy<S, T> {
|
||||||
pub fn new(strategy: S) -> Self {
|
pub const fn new(strategy: S) -> Self {
|
||||||
Self {
|
Self {
|
||||||
strategy,
|
strategy,
|
||||||
_marker: PhantomData,
|
_marker: PhantomData,
|
||||||
|
|||||||
@@ -1,5 +1,8 @@
|
|||||||
pub mod array;
|
pub mod array;
|
||||||
|
|
||||||
|
#[cfg(target_arch = "wasm32")]
|
||||||
|
pub mod wasm;
|
||||||
|
|
||||||
#[macro_use]
|
#[macro_use]
|
||||||
pub mod biteq;
|
pub mod biteq;
|
||||||
|
|
||||||
@@ -23,17 +26,47 @@ impl_num! { i8 }
|
|||||||
impl_num! { i16 }
|
impl_num! { i16 }
|
||||||
impl_num! { i32 }
|
impl_num! { i32 }
|
||||||
impl_num! { i64 }
|
impl_num! { i64 }
|
||||||
impl_num! { i128 }
|
|
||||||
impl_num! { isize }
|
impl_num! { isize }
|
||||||
impl_num! { u8 }
|
impl_num! { u8 }
|
||||||
impl_num! { u16 }
|
impl_num! { u16 }
|
||||||
impl_num! { u32 }
|
impl_num! { u32 }
|
||||||
impl_num! { u64 }
|
impl_num! { u64 }
|
||||||
impl_num! { u128 }
|
|
||||||
impl_num! { usize }
|
impl_num! { usize }
|
||||||
impl_num! { f32 }
|
impl_num! { f32 }
|
||||||
impl_num! { f64 }
|
impl_num! { f64 }
|
||||||
|
|
||||||
|
#[cfg(not(target_arch = "wasm32"))]
|
||||||
|
impl DefaultStrategy for u128 {
|
||||||
|
type Strategy = proptest::num::u128::Any;
|
||||||
|
fn default_strategy() -> Self::Strategy {
|
||||||
|
proptest::num::u128::ANY
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(not(target_arch = "wasm32"))]
|
||||||
|
impl DefaultStrategy for i128 {
|
||||||
|
type Strategy = proptest::num::i128::Any;
|
||||||
|
fn default_strategy() -> Self::Strategy {
|
||||||
|
proptest::num::i128::ANY
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(target_arch = "wasm32")]
|
||||||
|
impl DefaultStrategy for u128 {
|
||||||
|
type Strategy = crate::wasm::u128::Any;
|
||||||
|
fn default_strategy() -> Self::Strategy {
|
||||||
|
crate::wasm::u128::ANY
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(target_arch = "wasm32")]
|
||||||
|
impl DefaultStrategy for i128 {
|
||||||
|
type Strategy = crate::wasm::i128::Any;
|
||||||
|
fn default_strategy() -> Self::Strategy {
|
||||||
|
crate::wasm::i128::ANY
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl<T: core::fmt::Debug + DefaultStrategy, const LANES: usize> DefaultStrategy for [T; LANES] {
|
impl<T: core::fmt::Debug + DefaultStrategy, const LANES: usize> DefaultStrategy for [T; LANES] {
|
||||||
type Strategy = crate::array::UniformArrayStrategy<T::Strategy, Self>;
|
type Strategy = crate::array::UniformArrayStrategy<T::Strategy, Self>;
|
||||||
fn default_strategy() -> Self::Strategy {
|
fn default_strategy() -> Self::Strategy {
|
||||||
@@ -200,44 +233,47 @@ macro_rules! test_lanes {
|
|||||||
|
|
||||||
fn implementation<const $lanes: usize>() $body
|
fn implementation<const $lanes: usize>() $body
|
||||||
|
|
||||||
|
#[cfg(target_arch = "wasm32")]
|
||||||
|
wasm_bindgen_test::wasm_bindgen_test_configure!(run_in_browser);
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test)]
|
#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
|
||||||
fn lanes_1() {
|
fn lanes_1() {
|
||||||
implementation::<1>();
|
implementation::<1>();
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test)]
|
#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
|
||||||
fn lanes_2() {
|
fn lanes_2() {
|
||||||
implementation::<2>();
|
implementation::<2>();
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test)]
|
#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
|
||||||
fn lanes_4() {
|
fn lanes_4() {
|
||||||
implementation::<4>();
|
implementation::<4>();
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test)]
|
#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
|
||||||
fn lanes_8() {
|
fn lanes_8() {
|
||||||
implementation::<8>();
|
implementation::<8>();
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test)]
|
#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
|
||||||
fn lanes_16() {
|
fn lanes_16() {
|
||||||
implementation::<16>();
|
implementation::<16>();
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test)]
|
#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
|
||||||
fn lanes_32() {
|
fn lanes_32() {
|
||||||
implementation::<32>();
|
implementation::<32>();
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test)]
|
#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
|
||||||
fn lanes_64() {
|
fn lanes_64() {
|
||||||
implementation::<64>();
|
implementation::<64>();
|
||||||
}
|
}
|
||||||
|
|||||||
49
crates/test_helpers/src/wasm.rs
Normal file
49
crates/test_helpers/src/wasm.rs
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
macro_rules! impl_num {
|
||||||
|
{ $name:ident } => {
|
||||||
|
pub(crate) mod $name {
|
||||||
|
type InnerStrategy = crate::array::UniformArrayStrategy<proptest::num::u64::Any, [u64; 2]>;
|
||||||
|
use proptest::strategy::{Strategy, ValueTree, NewTree};
|
||||||
|
|
||||||
|
|
||||||
|
#[must_use = "strategies do nothing unless used"]
|
||||||
|
#[derive(Clone, Copy, Debug)]
|
||||||
|
pub struct Any {
|
||||||
|
strategy: InnerStrategy,
|
||||||
|
}
|
||||||
|
|
||||||
|
pub struct BinarySearch {
|
||||||
|
inner: <InnerStrategy as Strategy>::Tree,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl ValueTree for BinarySearch {
|
||||||
|
type Value = $name;
|
||||||
|
|
||||||
|
fn current(&self) -> $name {
|
||||||
|
unsafe { core::mem::transmute(self.inner.current()) }
|
||||||
|
}
|
||||||
|
|
||||||
|
fn simplify(&mut self) -> bool {
|
||||||
|
self.inner.simplify()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn complicate(&mut self) -> bool {
|
||||||
|
self.inner.complicate()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Strategy for Any {
|
||||||
|
type Tree = BinarySearch;
|
||||||
|
type Value = $name;
|
||||||
|
|
||||||
|
fn new_tree(&self, runner: &mut proptest::test_runner::TestRunner) -> NewTree<Self> {
|
||||||
|
Ok(BinarySearch { inner: self.strategy.new_tree(runner)? })
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub const ANY: Any = Any { strategy: InnerStrategy::new(proptest::num::u64::ANY) };
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl_num! { u128 }
|
||||||
|
impl_num! { i128 }
|
||||||
Reference in New Issue
Block a user