diff options
Diffstat (limited to 'src/test_utils.rs')
-rw-r--r-- | src/test_utils.rs | 106 |
1 files changed, 91 insertions, 15 deletions
diff --git a/src/test_utils.rs b/src/test_utils.rs index 491e9b4..f0858b5 100644 --- a/src/test_utils.rs +++ b/src/test_utils.rs @@ -3,11 +3,10 @@ pub mod subjects //! Test subjects. use std::fmt::Debug; - - use syrette_macros::declare_interface; + use std::rc::Rc; + use std::sync::Arc; use crate::interfaces::injectable::Injectable; - use crate::private::cast::CastFromArc; use crate::ptr::TransientPtr; use_double!(crate::dependency_history::DependencyHistory); @@ -42,11 +41,9 @@ pub mod subjects } } - use crate as syrette; + use crate::ptr_buffer::PtrBuffer; use crate::util::use_double; - declare_interface!(UserManager -> IUserManager); - impl<DIContainerT> Injectable<DIContainerT> for UserManager { fn resolve( @@ -58,6 +55,27 @@ pub mod subjects { Ok(TransientPtr::new(Self::new())) } + + fn into_ptr_buffer_box(self: Box<Self>) -> PtrBuffer + { + let me: Box<dyn IUserManager> = self; + + PtrBuffer::new_from(me) + } + + fn into_ptr_buffer_rc(self: Rc<Self>) -> PtrBuffer + { + let me: Rc<dyn IUserManager> = self; + + PtrBuffer::new_from(me) + } + + fn into_ptr_buffer_arc(self: Arc<Self>) -> PtrBuffer + { + let me: Arc<dyn IUserManager> = self; + + PtrBuffer::new_from(me) + } } pub trait INumber @@ -109,8 +127,6 @@ pub mod subjects } } - declare_interface!(Number -> INumber); - impl<DIContainerT> Injectable<DIContainerT> for Number { fn resolve( @@ -122,12 +138,33 @@ pub mod subjects { Ok(TransientPtr::new(Self::new())) } + + fn into_ptr_buffer_box(self: Box<Self>) -> PtrBuffer + { + let me: Box<dyn INumber> = self; + + PtrBuffer::new_from(me) + } + + fn into_ptr_buffer_rc(self: Rc<Self>) -> PtrBuffer + { + let me: Rc<dyn INumber> = self; + + PtrBuffer::new_from(me) + } + + fn into_ptr_buffer_arc(self: Arc<Self>) -> PtrBuffer + { + let me: Arc<dyn INumber> = self; + + PtrBuffer::new_from(me) + } } #[derive(Debug)] pub struct Ninja; - pub trait INinja: CastFromArc {} + pub trait INinja {} impl INinja for Ninja {} } @@ -138,9 +175,10 @@ pub mod subjects_async //! Test subjects. use std::fmt::Debug; + use std::rc::Rc; + use std::sync::Arc; use async_trait::async_trait; - use syrette_macros::declare_interface; use crate::interfaces::async_injectable::AsyncInjectable; use crate::ptr::TransientPtr; @@ -177,11 +215,9 @@ pub mod subjects_async } } - use crate as syrette; + use crate::ptr_buffer::PtrBuffer; use crate::util::use_double; - declare_interface!(UserManager -> IUserManager); - #[async_trait] impl<DIContainerType> AsyncInjectable<DIContainerType> for UserManager { @@ -194,6 +230,27 @@ pub mod subjects_async { Ok(TransientPtr::new(Self::new())) } + + fn into_ptr_buffer_box(self: Box<Self>) -> PtrBuffer + { + let me: Box<dyn IUserManager> = self; + + PtrBuffer::new_from(me) + } + + fn into_ptr_buffer_rc(self: Rc<Self>) -> PtrBuffer + { + let me: Rc<dyn IUserManager> = self; + + PtrBuffer::new_from(me) + } + + fn into_ptr_buffer_arc(self: Arc<Self>) -> PtrBuffer + { + let me: Arc<dyn IUserManager> = self; + + PtrBuffer::new_from(me) + } } pub trait INumber: Send + Sync @@ -245,8 +302,6 @@ pub mod subjects_async } } - declare_interface!(Number -> INumber, threadsafe_sharable = true); - #[async_trait] impl<DIContainerType> AsyncInjectable<DIContainerType> for Number { @@ -259,6 +314,27 @@ pub mod subjects_async { Ok(TransientPtr::new(Self::new())) } + + fn into_ptr_buffer_box(self: Box<Self>) -> PtrBuffer + { + let me: Box<dyn INumber> = self; + + PtrBuffer::new_from(me) + } + + fn into_ptr_buffer_rc(self: Rc<Self>) -> PtrBuffer + { + let me: Rc<dyn INumber> = self; + + PtrBuffer::new_from(me) + } + + fn into_ptr_buffer_arc(self: Arc<Self>) -> PtrBuffer + { + let me: Arc<dyn INumber> = self; + + PtrBuffer::new_from(me) + } } } |