diff options
author | HampusM <hampus@hampusmat.com> | 2022-11-06 19:03:56 +0100 |
---|---|---|
committer | HampusM <hampus@hampusmat.com> | 2022-11-06 19:03:56 +0100 |
commit | 56349a530811bbf0657fed14912c7e02001b2c8a (patch) | |
tree | 165247000ceef0ceeaf3d0b7dbe48f9a6af10f29 /src/libs/intertrait/mod.rs | |
parent | e282375de4ba75c69f7d619fc33c6250f6caba18 (diff) |
test: split up cast unit tests into their respective modules
Diffstat (limited to 'src/libs/intertrait/mod.rs')
-rw-r--r-- | src/libs/intertrait/mod.rs | 104 |
1 files changed, 8 insertions, 96 deletions
diff --git a/src/libs/intertrait/mod.rs b/src/libs/intertrait/mod.rs index 78f98b1..4a9322f 100644 --- a/src/libs/intertrait/mod.rs +++ b/src/libs/intertrait/mod.rs @@ -244,46 +244,39 @@ impl CastFromSync for dyn Any + Sync + Send + 'static #[cfg(test)] mod tests { - use std::any::{Any, TypeId}; - use std::fmt::{Debug, Display}; + use std::any::TypeId; + use std::fmt::Debug; use linkme::distributed_slice; - #[allow(clippy::wildcard_imports)] - use super::cast::*; use super::*; + use crate::test_utils::subjects; #[distributed_slice(super::CASTERS)] static TEST_CASTER: fn() -> (TypeId, BoxedCaster) = create_test_caster; - #[derive(Debug)] - struct TestStruct; - - trait SourceTrait: CastFromSync {} - - impl SourceTrait for TestStruct {} - fn create_test_caster() -> (TypeId, BoxedCaster) { - let type_id = TypeId::of::<TestStruct>(); + let type_id = TypeId::of::<subjects::Ninja>(); + let caster = Box::new(Caster::<dyn Debug> { cast_box: |from| { let concrete = from - .downcast::<TestStruct>() + .downcast::<subjects::Ninja>() .map_err(|_| CasterError::CastBoxFailed)?; Ok(concrete as Box<dyn Debug>) }, cast_rc: |from| { let concrete = from - .downcast::<TestStruct>() + .downcast::<subjects::Ninja>() .map_err(|_| CasterError::CastRcFailed)?; Ok(concrete as Rc<dyn Debug>) }, opt_cast_arc: Some(|from| { let concrete = from - .downcast::<TestStruct>() + .downcast::<subjects::Ninja>() .map_err(|_| CasterError::CastArcFailed)?; Ok(concrete as Arc<dyn Debug>) @@ -291,85 +284,4 @@ mod tests }); (type_id, caster) } - - #[test] - fn cast_box() - { - let ts = Box::new(TestStruct); - let st: Box<dyn SourceTrait> = ts; - let debug = st.cast::<dyn Debug>(); - assert!(debug.is_ok()); - } - - #[test] - fn cast_rc() - { - let ts = Rc::new(TestStruct); - let st: Rc<dyn SourceTrait> = ts; - let debug = st.cast::<dyn Debug>(); - assert!(debug.is_ok()); - } - - #[test] - fn cast_arc() - { - let ts = Arc::new(TestStruct); - let st: Arc<dyn SourceTrait> = ts; - let debug = st.cast::<dyn Debug>(); - assert!(debug.is_ok()); - } - - #[test] - fn cast_box_wrong() - { - let ts = Box::new(TestStruct); - let st: Box<dyn SourceTrait> = ts; - let display = st.cast::<dyn Display>(); - assert!(display.is_err()); - } - - #[test] - fn cast_rc_wrong() - { - let ts = Rc::new(TestStruct); - let st: Rc<dyn SourceTrait> = ts; - let display = st.cast::<dyn Display>(); - assert!(display.is_err()); - } - - #[test] - fn cast_arc_wrong() - { - let ts = Arc::new(TestStruct); - let st: Arc<dyn SourceTrait> = ts; - let display = st.cast::<dyn Display>(); - assert!(display.is_err()); - } - - #[test] - fn cast_box_from_any() - { - let ts = Box::new(TestStruct); - let st: Box<dyn Any> = ts; - let debug = st.cast::<dyn Debug>(); - assert!(debug.is_ok()); - } - - #[test] - fn cast_rc_from_any() - { - let ts = Rc::new(TestStruct); - let st: Rc<dyn Any> = ts; - let debug = st.cast::<dyn Debug>(); - assert!(debug.is_ok()); - } - - #[test] - fn cast_arc_from_any() - { - let ts = Arc::new(TestStruct); - let st: Arc<dyn Any + Send + Sync> = ts; - let debug = st.cast::<dyn Debug>(); - assert!(debug.is_ok()); - } } |