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 //------------------------------------------------------------------------------