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