- /* =============================================================================
- * scpp_exception.hpp
- * Copyright (c) 2003 - 2013 Nomura Kei
- * =============================================================================
- */
- #ifndef SCPP_UNITTEST_HPP
- #define SCPP_UNITTEST_HPP
- #ifdef __cplusplus
-
- #ifndef SCPP_ASSERT_HPP
- #include <scpp_assert.hpp>
- #endif
-
- #define RUN_TEST(func) { \
- setUp(); \
- try { \
- func(); \
- scpp::utManager.addTestResult(__FILE__, __LINE__, #func, true); \
- } catch (scpp::AssertError& e) { \
- scpp::utManager.addTestResult(__FILE__, __LINE__, #func, false, &e); \
- } catch (...) { \
- scpp::utManager.addTestResult(__FILE__, __LINE__, #func, false); \
- } \
- tearDown(); \
- }
-
-
- namespace scpp
- {
-
-
- /**
- * テストケース.
- * 各テストクラスは, 本クラスを継承して作成してください.
- *
- * 以下に実装例を示します.
- *
- * @code
- * #include <scpp_unittest.hpp>
- *
- * using namespace scpp;
- * class SampleTest : public TestCase
- * {
- * public:
- * SampleTest() {}
- * ~SampleTest() {}
- * void setUp()
- * {
- * // 各テストケース実行前に実施する内容を記述する
- * }
- * void tearDown()
- * {
- * // 各テストケース実行後に実施する内容を記述する
- * }
- * void testSampe1()
- * {
- * // テスト内容を記述する
- * std::sring tmp("ABC");
- * Assertion::assertEquals("ABC", tmp);
- * }
- * void testSample2()
- * {
- * // 何らかのテスト
- * }
- * void suite()
- * {
- * RUN_TEST(testSample1);
- * RUN_TEST(testSample2);
- * }
- * };
- *
- *
- * @endcode
- */
- class TestCase
- {
- public:
- TestCase();
- virtual ~TestCase();
- virtual void setUp();
- virtual void tearDown();
- virtual void suite() = 0;
-
- };
-
-
- /**
- * 単体試験を管理するクラス.
- * 本クラスは単体テストにて使用されます.
- * 通常, 本クラスのインスタンスを生成する必要はありません.
- */
- class UnittestManager
- {
- public:
- UnittestManager();
- virtual ~UnittestManager();
- void addTestResult(const char* file, int line, const char* func, bool result, const AssertError* e = 0) NO_THROW();
- void printResult();
- private:
- int okCount;
- int ngCount;
-
- };
-
- extern UnittestManager utManager;
-
-
- } // namespace scpp
-
- #endif /* __cplusplus */
- #endif /* SCPP_UNITTEST_HPP */
-