Main Page | Namespace List | Class Hierarchy | Alphabetical List | Compound List | File List | Compound Members | File Members

TestCaller.h

Go to the documentation of this file.
00001 //------------------------------------------------------------------------------
00002 // Lamp : Open source game middleware
00003 // Copyright (C) 2004  Junpei Ohtani ( Email : junpee@users.sourceforge.jp )
00004 //
00005 // This library is free software; you can redistribute it and/or
00006 // modify it under the terms of the GNU Lesser General Public
00007 // License as published by the Free Software Foundation; either
00008 // version 2.1 of the License, or (at your option) any later version.
00009 //
00010 // This library is distributed in the hope that it will be useful,
00011 // but WITHOUT ANY WARRANTY; without even the implied warranty of
00012 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00013 // Lesser General Public License for more details.
00014 //
00015 // You should have received a copy of the GNU Lesser General Public
00016 // License along with this library; if not, write to the Free Software
00017 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00018 //------------------------------------------------------------------------------
00019 
00020 /** @file
00021  * テスト呼び出しヘッダ
00022  * @author Junpee
00023  */
00024 
00025 #ifndef TEST_CALLER_H_
00026 #define TEST_CALLER_H_
00027 
00028 /**
00029  * テスト呼び出しマクロ
00030  */
00031 #define TestCaller(Fixture, method) \
00032     TestCallerImplement<Fixture>(#Fixture "::" #method, &Fixture::method)
00033 
00034 namespace LampUnit{
00035 
00036 //------------------------------------------------------------------------------
00037 /**
00038  * テスト呼び出し
00039  */
00040 template <typename Fixture>
00041 class TestCallerImplement : public Fixture{
00042 public:
00043     /// テストメソッドの型
00044     typedef void (Fixture::*TestMethod)();
00045 
00046     /**
00047      * コンストラクタ
00048      * @param name テスト名
00049      * @param method テストメソッド
00050      */
00051     TestCallerImplement(Lamp::String name, TestMethod method) :
00052         Fixture(name), testMethod_(method){
00053     }
00054 
00055     /**
00056      * デストラクタ
00057      */
00058     virtual ~TestCallerImplement(){}
00059 
00060     /**
00061      * テストを実行する
00062      */
00063     virtual void runTest(){
00064         (this->*testMethod_)();
00065     }
00066 
00067 private:
00068     // コピーコンストラクタの隠蔽
00069     TestCallerImplement(const TestCallerImplement& copy);
00070 
00071     // 代入コピーの隠蔽
00072     void operator =(const TestCallerImplement& copy);
00073 
00074     // テストメソッド
00075     TestMethod testMethod_;
00076 };
00077 
00078 //------------------------------------------------------------------------------
00079 } // End of namespace LampUnit
00080 #endif // End of TEST_CALLER_H_
00081 //------------------------------------------------------------------------------

Generated on Wed Mar 16 10:29:54 2005 for LampUnit by doxygen 1.3.2