Diffstat (limited to 'tests/protocol_visitor_value.rs')
| -rw-r--r-- | tests/protocol_visitor_value.rs | 55 |
1 files changed, 31 insertions, 24 deletions
diff --git a/tests/protocol_visitor_value.rs b/tests/protocol_visitor_value.rs index ff17fc4..8ca591c 100644 --- a/tests/protocol_visitor_value.rs +++ b/tests/protocol_visitor_value.rs @@ -1,19 +1,18 @@ use std::any::TypeId; use common::protocol::{ - hint::{KnownFactory, MockHintVisitor}, + hint::{KnownFactory, MockHintWalker}, visitor::MockValueVisitor, }; use mockall::predicate::eq; use treaty::{ any::{ - BorrowedStatic, BorrowedStaticHrt, OwnedStatic, TempBorrowedMutStatic, + AnyTrait, BorrowedStatic, BorrowedStaticHrt, OwnedStatic, TempBorrowedMutStatic, TempBorrowedMutStaticHrt, TypeNameId, }, effect::Blocking, protocol::{ - visitor::{Value, ValueKnown, ValueProto, VisitResult}, - walker::hint::Hint, + visitor::{visit_value, Value, ValueKnown, ValueProto, VisitResult}, walker::hint::Hint, DynVisitor }, Flow, }; @@ -33,7 +32,7 @@ fn custom_value_type() { // Expect the visit method to be called once with the custom type. mock.expect_visit() - .once() + .times(2) .with(eq(OwnedStatic(MyValue))) .return_const(VisitResult::Control(Flow::Done)); @@ -42,10 +41,16 @@ fn custom_value_type() { let visitor: &mut dyn Value<OwnedStatic<MyValue>, Blocking> = &mut mock; // Visit the value. - let result = visitor.visit(OwnedStatic(MyValue)).into_innter(); + let result = visitor.visit(OwnedStatic(MyValue)).into_inner(); // The mock returns that it is done. assert_eq!(result, VisitResult::Control(Flow::Done)); + + let visitor: &mut (dyn AnyTrait + Send + Sync) = &mut mock; + assert_eq!( + visit_value::<_, Blocking>(DynVisitor(visitor), OwnedStatic(MyValue)).into_inner(), + VisitResult::Control(Flow::Done) + ); } /// Tests that a value with a lifetime can be given to the value protocol. @@ -67,7 +72,7 @@ fn borrowed_value() { // Expect the visit method to be called once with the borrowed value. mock.expect_visit() - .once() + .times(2) .withf(|BorrowedStatic(value)| *value == "test") .return_const(VisitResult::Control(Flow::Done)); @@ -76,6 +81,12 @@ fn borrowed_value() { // Visit the borrowed value. visitor.visit(BorrowedStatic(value)); + + let visitor: &mut (dyn AnyTrait + Send + Sync) = &mut mock; + assert_eq!( + visit_value::<_, Blocking>(DynVisitor(visitor), BorrowedStatic(value)).into_inner(), + VisitResult::Control(Flow::Done) + ); } // Make sure the compiler doesn't do anything funny with the lifetime. @@ -161,19 +172,19 @@ fn all_visit_results() { // Visit can return a done. assert_eq!( - visitor.visit(OwnedStatic(0)).into_innter(), + visitor.visit(OwnedStatic(0)).into_inner(), VisitResult::Control(Flow::Done) ); // Visit can return an error signal. assert_eq!( - visitor.visit(OwnedStatic(1)).into_innter(), + visitor.visit(OwnedStatic(1)).into_inner(), VisitResult::Control(Flow::Err) ); // Visit can return a continue. assert_eq!( - visitor.visit(OwnedStatic(2)).into_innter(), + visitor.visit(OwnedStatic(2)).into_inner(), VisitResult::Control(Flow::Continue) ); @@ -181,7 +192,7 @@ fn all_visit_results() { // This is for runtime visit support checking. // The value should be given back, but that's not forced. assert_eq!( - visitor.visit(OwnedStatic(3)).into_innter(), + visitor.visit(OwnedStatic(3)).into_inner(), VisitResult::Skipped(OwnedStatic(3)) ); } @@ -205,7 +216,7 @@ fn value_proto() { #[test] fn as_hint() { { - let mut mock = MockHintVisitor::<ValueProto<OwnedStatic<i32>, Blocking>, Blocking>::new(); + let mut mock = MockHintWalker::<ValueProto<OwnedStatic<i32>, Blocking>>::new(); mock.expect_known().once().return_const( (|_, _hint| { @@ -215,11 +226,11 @@ fn as_hint() { }) as KnownFactory<ValueProto<OwnedStatic<i32>, Blocking>>, ); - let walker: &mut dyn Hint<ValueProto<OwnedStatic<i32>, Blocking>, Blocking> = &mut mock; + let walker: &mut dyn Hint<ValueProto<OwnedStatic<i32>, Blocking>> = &mut mock; // The value protocol has no hint data, and it has no known data. assert_eq!( - walker.known(&()).into_innter(), + walker.known(&()).into_inner(), Ok(ValueKnown { preview: Some(&OwnedStatic(42)) }) @@ -227,8 +238,7 @@ fn as_hint() { } { - let mut mock = - MockHintVisitor::<ValueProto<BorrowedStaticHrt<i32>, Blocking>, Blocking>::new(); + let mut mock = MockHintWalker::<ValueProto<BorrowedStaticHrt<i32>, Blocking>>::new(); mock.expect_known().once().return_const( (|_, _hint| { @@ -238,12 +248,11 @@ fn as_hint() { }) as KnownFactory<ValueProto<BorrowedStaticHrt<i32>, Blocking>>, ); - let walker: &mut dyn Hint<ValueProto<BorrowedStaticHrt<i32>, Blocking>, Blocking> = - &mut mock; + let walker: &mut dyn Hint<ValueProto<BorrowedStaticHrt<i32>, Blocking>> = &mut mock; // The value protocol has no hint data, and it has no known data. assert_eq!( - walker.known(&()).into_innter(), + walker.known(&()).into_inner(), Ok(ValueKnown { preview: Some(&BorrowedStatic(&42)) }) @@ -251,20 +260,18 @@ fn as_hint() { } { - let mut mock = - MockHintVisitor::<ValueProto<TempBorrowedMutStaticHrt<i32>, Blocking>, Blocking>::new(); + let mut mock = MockHintWalker::<ValueProto<TempBorrowedMutStaticHrt<i32>, Blocking>>::new(); mock.expect_known().once().return_const( (|_, _hint| Ok(ValueKnown { preview: None })) as KnownFactory<ValueProto<TempBorrowedMutStaticHrt<i32>, Blocking>>, ); - let walker: &mut dyn Hint<ValueProto<TempBorrowedMutStaticHrt<i32>, Blocking>, Blocking> = - &mut mock; + let walker: &mut dyn Hint<ValueProto<TempBorrowedMutStaticHrt<i32>, Blocking>> = &mut mock; // The value protocol has no hint data, and it has no known data. assert_eq!( - walker.known(&()).into_innter(), + walker.known(&()).into_inner(), Ok(ValueKnown { preview: None }) ); } |