diff --git a/src/effects/components.rs b/src/effects/components.rs index 8fda8ac..2d407a0 100644 --- a/src/effects/components.rs +++ b/src/effects/components.rs @@ -120,12 +120,10 @@ mod tests { use proptest_derive::Arbitrary; use super::*; + use crate::effects::number_data::NumberComponent; use crate::effects::one_way_fn::OneWayFn; use crate::system_combinators::affect; - #[derive(Copy, Clone, Default, Debug, PartialEq, Eq, Component, Arbitrary)] - struct NumberComponent(u128); - #[derive(Copy, Clone, Default, Debug, PartialEq, Eq, Component)] struct MarkerComponent; diff --git a/src/effects/event.rs b/src/effects/event.rs index d2039f1..16c99ef 100644 --- a/src/effects/event.rs +++ b/src/effects/event.rs @@ -22,14 +22,11 @@ where #[cfg(test)] mod tests { use proptest::prelude::*; - use proptest_derive::Arbitrary; use super::*; + use crate::effects::number_data::NumberEvent; use crate::prelude::affect; - #[derive(Copy, Clone, Debug, Default, PartialEq, Eq, Event, Arbitrary)] - struct NumberEvent(u128); - proptest! { #[test] fn event_send_produces_events(events in prop::collection::vec(any::(), 1..10)) { diff --git a/src/effects/mod.rs b/src/effects/mod.rs index 8bc5ff5..282698f 100644 --- a/src/effects/mod.rs +++ b/src/effects/mod.rs @@ -13,3 +13,6 @@ pub use components::{ComponentsPut, ComponentsWith}; #[cfg(test)] mod one_way_fn; + +#[cfg(test)] +mod number_data; diff --git a/src/effects/number_data.rs b/src/effects/number_data.rs new file mode 100644 index 0000000..fba8d69 --- /dev/null +++ b/src/effects/number_data.rs @@ -0,0 +1,18 @@ +//! Test types for various `bevy` data classes, all storing numbers, all proptest-generatable. +use bevy::prelude::*; +use proptest_derive::Arbitrary; + +/// Test `Component` storing a number. +/// +/// The const generic MARKER can be used to easily define as many component types as you need. +/// i.e., `Numbercomponent<0>` and `NumberComponent<1>` are different components in `bevy`. +#[derive(Copy, Clone, Default, Debug, PartialEq, Eq, Component, Arbitrary)] +pub struct NumberComponent(pub u128); + +/// Test `Event` storing a number. +#[derive(Copy, Clone, Debug, Default, PartialEq, Eq, Event, Arbitrary)] +pub struct NumberEvent(pub u128); + +/// Test `Resource` storing a number. +#[derive(Copy, Clone, Debug, PartialEq, Eq, Resource, Arbitrary)] +pub struct NumberResource(pub u128); diff --git a/src/effects/resource.rs b/src/effects/resource.rs index 6372450..59d9e08 100644 --- a/src/effects/resource.rs +++ b/src/effects/resource.rs @@ -62,15 +62,12 @@ where #[cfg(test)] mod tests { use proptest::prelude::*; - use proptest_derive::Arbitrary; use super::*; + use crate::effects::number_data::NumberResource; use crate::effects::one_way_fn::OneWayFn; use crate::system_combinators::affect; - #[derive(Copy, Clone, Debug, PartialEq, Eq, Resource, Arbitrary)] - struct NumberResource(u128); - proptest! { #[test] fn res_put_overwrites_initial_state(initial: NumberResource, put: NumberResource) {