ExpectationDriverTest.cpp

Go to the documentation of this file.
00001 /*
00002 
00003 Copyright (C) 2006-2007 by Peter Dimov.
00004 
00005 This file is part of Calitko (http://www.calitko.org).
00006 
00007 Calitko is free software; you can redistribute it and/or modify
00008 it under the terms of the GNU General Public License as published by
00009 the Free Software Foundation; either version 2 of the License, or
00010 (at your option) any later version.
00011 
00012 Calitko is distributed in the hope that it will be useful,
00013 but WITHOUT ANY WARRANTY; without even the implied warranty of
00014 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00015 GNU General Public License for more details.
00016 
00017 You should have received a copy of the GNU General Public License
00018 along with Calitko; if not, write to the Free Software
00019 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
00020 
00021 */
00022 
00023 #include "Qt.h"
00024 #include "../ExpectationDriver.h"
00025 #include "../BoundFunction.h"
00026 #include "../CallDriver.h"
00027 #include "../DelayedCallDriver.h"
00028 #include "../ExpectedFunction.h"
00029 #include "Imports.cpp"
00030 
00031 namespace Utils {
00032 namespace CalitkoMocks {
00033 namespace Testing {
00034 
00036 
00038 class ExpectationDriverTest : public CppUnit::TestFixture
00039 {
00040     CPPUNIT_TEST_SUITE (ExpectationDriverTest);
00041     CPPUNIT_TEST (testWillReturnOk);
00042     CPPUNIT_TEST (testWillCallOk);
00043     CPPUNIT_TEST_SUITE_END();
00044 
00045 public:
00046     void foo() {}
00047     typedef BoundFunction <ExpectationDriverTest, void ()> BoundFoo;
00048     typedef CallDriver <BoundFoo> CallDriverFoo;
00049 
00051     void testWillReturnOk()
00052     {
00053         typedef ExpectedFunction <bool ()> ExpectedFoo;
00054         ExpectedFoo foo;
00055         /*  Note we pass a non-existing CallDriver object but we know it will
00056             not be dereferenced. */
00057         ExpectationDriver <CallDriverFoo, ExpectedFoo> driver
00058             (*(CallDriverFoo *) 0, foo);
00059         CPPUNIT_ASSERT (&driver.willReturn (false) == 0);
00060         CPPUNIT_ASSERT (foo.check() == false);
00061     }
00062 
00064     void testWillCallOk()
00065     {
00066         typedef ExpectedFunction <bool ()> ExpectedFoo;
00067         auto_ptr <BoundFoo> delayedFoo (new BoundFoo
00068                                     (this, &ExpectationDriverTest::foo));
00069         ExpectedFoo foo;
00070         /*  Note we pass a non-existing CallDriver object but we know it will
00071             not be dereferenced. */
00072         ExpectationDriver <CallDriverFoo, ExpectedFoo> driver
00073             (*(CallDriverFoo *) 0, foo);
00074         DelayedCallDriver <ExpectationDriver <CallDriverFoo, ExpectedFoo>,
00075             BoundFoo> delayed = driver.willCall (delayedFoo);
00076     }
00077 };
00078 
00079 CPPUNIT_TEST_SUITE_REGISTRATION (ExpectationDriverTest);
00080 
00081 } // namespace Testing
00082 } // namespace CalitkoMocks
00083 } // namespace Utils