[Mockpp-commits] mockpp/mockpp/tests AbstractDynamicChainingMock_test.cpp,1.28,1.29 mockpp_pti_test.
Brought to you by:
ewald-arnold
From: Ewald A. <ewa...@us...> - 2005-04-03 21:50:06
|
Update of /cvsroot/mockpp/mockpp/mockpp/tests In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv29266/mockpp/tests Modified Files: AbstractDynamicChainingMock_test.cpp mockpp_pti_test.cpp Log Message: more efforts for msvc6 Index: AbstractDynamicChainingMock_test.cpp =================================================================== RCS file: /cvsroot/mockpp/mockpp/mockpp/tests/AbstractDynamicChainingMock_test.cpp,v retrieving revision 1.28 retrieving revision 1.29 diff -u -d -r1.28 -r1.29 --- AbstractDynamicChainingMock_test.cpp 3 Apr 2005 18:32:53 -0000 1.28 +++ AbstractDynamicChainingMock_test.cpp 3 Apr 2005 21:49:58 -0000 1.29 @@ -41,44 +41,22 @@ #include <mockpp/chaining/FIFOInvocationDispatcher.h> #include <mockpp/chaining/mockpp_pti.h> -#include <mockpp/stub/ReturnStub.h> -#include <mockpp/stub/TypelessStub.h> +#include <mockpp/stub/ReturnStub.h> +#include <mockpp/stub/TypelessStub.h> #include <mockpp/chaining/ChainingMockObjectSupport.h> #include <cppunit/extensions/HelperMacros.h> - -typedef mockpp::Invocation0 GetterInvocation; -typedef mockpp::Invocation0 VoidInvocation; -typedef mockpp::ConstraintSet1<int> CSet1; - - - -MOCKPP_INVOCATIONMOCKER_PTI_IMPL(VoidInvocation) - - -#define I VoidInvocation - - -namespace mockpp { -template<> -class TypelessStubAdapter<void, VoidInvocation > : public TypelessStubAdapterBase<void, VoidInvocation > -{ - - TypelessStubAdapter<void, I >(TypelessStub<void>::AP tm, bool in_delete) - : TypelessStubAdapterBase<void, I >(tm, in_delete) - {} - - void invoke( const I &invocation) - { - this->stubber->typelessInvoke(); - } - -}; -} - - + +typedef mockpp::Invocation0 GetterInvocation; +typedef mockpp::Invocation0 VoidInvocation; +typedef mockpp::ConstraintSet1<int> CSet1; + + +MOCKPP_INVOCATIONMOCKER_PTI_IMPL(VoidInvocation) + + namespace { @@ -231,7 +209,7 @@ }; - + void AbstractDynamicChainingMock_test::test_describer() { #if !defined(__BORLANDC__) && ((__GNUC__ >= 3) /* || defined(_MSC_VER) */) // @todo make compiling @@ -263,7 +241,7 @@ void AbstractDynamicChainingMock_test::test_void_describe() -{ +{ mockpp::AbstractDynamicChainingMock<void, VoidInvocation> adc_default ( MOCKPP_PCHAR( "adc-name" ), 0 ); @@ -271,7 +249,7 @@ adc ( new mockpp::LIFOInvocationDispatcher<void, VoidInvocation>, MOCKPP_PCHAR( "adc-name" ), 0 ); CPPUNIT_ASSERT( adc.toString() == MOCKPP_PCHAR( "adc-name" ) ); - CPPUNIT_ASSERT( adc.getMockName() == MOCKPP_PCHAR( "adc-name" ) ); + CPPUNIT_ASSERT( adc.getMockName() == MOCKPP_PCHAR( "adc-name" ) ); } @@ -379,7 +357,7 @@ void AbstractDynamicChainingMock_test::test_void_invocation() -{ +{ ChainingMockDummy<void, VoidInvocation> cmd ( new mockpp::LIFOInvocationDispatcher<void, VoidInvocation>, MOCKPP_PCHAR( "adc-name" ), 0 ); @@ -429,7 +407,7 @@ } cmd.reset(); - cmd.void_invoke(inv); + cmd.void_invoke(inv); } Index: mockpp_pti_test.cpp =================================================================== RCS file: /cvsroot/mockpp/mockpp/mockpp/tests/mockpp_pti_test.cpp,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- mockpp_pti_test.cpp 3 Apr 2005 19:11:26 -0000 1.1 +++ mockpp_pti_test.cpp 3 Apr 2005 21:49:58 -0000 1.2 @@ -27,6 +27,10 @@ * ***************************************************************************/ +#ifndef MOCKPP_PTI_WEAKNESS // Partial Template Instantiation Weakness +#define MOCKPP_PTI_WEAKNESS +#endif + #include <mockpp/mockpp.h> // always first #ifndef HAVE_CPPUNIT @@ -36,32 +40,245 @@ #else #include <mockpp/chaining/mockpp_pti.h> +#include <mockpp/chaining/Invocation.h> + +#include <mockpp/matcher/InvokeOnceMatcher.h> #include <cppunit/extensions/HelperMacros.h> +typedef mockpp::Invocation1<int> Setter1Invocation; + +//MOCKPP_LIFOINVOCATIONDISPATCHER_PTI_IMPL(Setter1Invocation) +MOCKPP_COREMOCK_PTI_IMPL(Setter1Invocation) +//MOCKPP_FIFOINVOCATIONDISPATCHER_PTI_IMPL(Setter1Invocation) +MOCKPP_TYPELESSSTUBADAPTER_PTI_IMPL(Setter1Invocation) + +namespace mockpp { +template<> +class LIFOInvocationDispatcher<void, Setter1Invocation> : public AbstractInvocationDispatcher<void, Setter1Invocation> +{ + public: + typedef AbstractInvocationDispatcher<void, Setter1Invocation>::ReverseIterator Iterator; + + void dispatch( const Setter1Invocation &invocation ) + { + Iterator it = this->invokables.rbegin(); + Iterator end = this->invokables.rend(); + for ( /**/; it != end; ++it ) + { + if ( ( *it ) ->matches( invocation ) ) + { + ( *it ) ->invoke( invocation ); + return; + } + } + + this->defaultStub->invoke( invocation ); + } +}; +} + +namespace { + class mockpp_pti_test : public CppUnit::TestFixture { public: -CPPUNIT_TEST_SUITE( mockpp_pti_test ); + CPPUNIT_TEST_SUITE( mockpp_pti_test ); - CPPUNIT_TEST(test_coremock); + CPPUNIT_TEST(test_coremock); + CPPUNIT_TEST(test_typeless); + CPPUNIT_TEST(test_lifo); + CPPUNIT_TEST(test_fifo); + CPPUNIT_TEST(test_invocation); + CPPUNIT_TEST(test_abstract); -CPPUNIT_TEST_SUITE_END(); + CPPUNIT_TEST_SUITE_END(); public: void test_coremock(); + void test_typeless(); + void test_lifo(); + void test_fifo(); + void test_invocation(); + void test_abstract(); }; CPPUNIT_TEST_SUITE_REGISTRATION(mockpp_pti_test); +class MyVoidStub : public mockpp::TypelessStub<void> +{ + public: + + bool invoked; + + MyVoidStub() + { + invoked = false; + } + + virtual void typelessInvoke( ) + { + invoked = true; + } + + virtual mockpp::String describeTo( mockpp::String &buffer ) const + { + return buffer; + } +}; + + void mockpp_pti_test::test_coremock() { + Setter1Invocation si(MOCKPP_PCHAR("Setter1Invocation"), 1); + { + MyVoidStub *mvs = new MyVoidStub; + mockpp::CoreMock<void, Setter1Invocation> cmd(MOCKPP_PCHAR("name"), 0); + cmd.setDefaultStub( mvs ); + cmd.invoke(si); + CPPUNIT_ASSERT(true == mvs->invoked); + } + + { + mockpp::CoreMock<void, Setter1Invocation> cmd(new mockpp::LIFOInvocationDispatcher<void, Setter1Invocation>, + MOCKPP_PCHAR("name"), 0); + MyVoidStub *mvs = new MyVoidStub; + cmd.setDefaultStub(mvs); + cmd.invoke(si); + CPPUNIT_ASSERT(true == mvs->invoked); + } +} + + +void mockpp_pti_test::test_typeless() +{ + Setter1Invocation si(MOCKPP_PCHAR("Setter1Invocation"), 1); + MyVoidStub *mvs = new MyVoidStub; + mockpp::TypelessStubAdapter<void, Setter1Invocation > tsa (mvs); + tsa.invoke(si); + CPPUNIT_ASSERT(true == mvs->invoked); } +class TestInvokable : public mockpp::Invokable<void, Setter1Invocation> +{ + public: + + bool invoked; + + TestInvokable() + { + invoked = false; + } + + virtual bool matches( const Setter1Invocation &/*invocation*/ ) + { + return !invoked; + } + + virtual void invoke( const Setter1Invocation &/*invocation*/ ) + { + invoked = true; + } + + virtual bool hasDescription() + { + return true; + } + + virtual mockpp::String describeTo( mockpp::String &buffer ) const + { + return buffer; + } + + virtual void reset() + { + } + + virtual void verify() + { + } +}; + + +class Lifo : public mockpp::LIFOInvocationDispatcher<void, Setter1Invocation> +{ + public: + + void myDispatch( const Setter1Invocation &invocation ) + { + dispatch(invocation); + } +}; + + +void mockpp_pti_test::test_lifo() +{ + Setter1Invocation si(MOCKPP_PCHAR("Setter1Invocation"), 1); + MyVoidStub *mvs = new MyVoidStub; + TestInvokable *ti1 = new TestInvokable; + TestInvokable *ti2 = new TestInvokable; + Lifo lifo; + lifo.setDefaultStub( mvs ); + lifo.add(ti1); + lifo.add(ti2); + lifo.myDispatch(si); + CPPUNIT_ASSERT(true == ti2->invoked); + lifo.myDispatch(si); + CPPUNIT_ASSERT(true == ti1->invoked); + lifo.myDispatch(si); + CPPUNIT_ASSERT(true == mvs->invoked); +} + + +class Fifo : public mockpp::FIFOInvocationDispatcher<void, Setter1Invocation> +{ + public: + + void myDispatch( const Setter1Invocation &invocation ) + { + dispatch(invocation); + } +}; + + +void mockpp_pti_test::test_fifo() +{ + Setter1Invocation si(MOCKPP_PCHAR("Setter1Invocation"), 1); + MyVoidStub *mvs = new MyVoidStub; + TestInvokable *ti1 = new TestInvokable; + TestInvokable *ti2 = new TestInvokable; + Fifo fifo; + fifo.setDefaultStub( mvs ); + fifo.add(ti1); + fifo.add(ti2); + fifo.myDispatch(si); + CPPUNIT_ASSERT(true == ti1->invoked); + fifo.myDispatch(si); + CPPUNIT_ASSERT(true == ti2->invoked); + fifo.myDispatch(si); + CPPUNIT_ASSERT(true == mvs->invoked); +} + + +void mockpp_pti_test::test_invocation() +{ +// MOCKPP_INVOCATIONMOCKER_PTI_IMPL(Setter1Invocation) +} + + +void mockpp_pti_test::test_abstract() +{ +// MOCKPP_ABSTRACTDYNAMICCHAININGMOCK_PTI_IMPL(Setter1Invocation) +} + + +} // ns + + #endif // HAVE_CPPUNIT |