diff options
Diffstat (limited to 'src/boost/libs/date_time/test/testfrmwk.hpp')
-rw-r--r-- | src/boost/libs/date_time/test/testfrmwk.hpp | 113 |
1 files changed, 113 insertions, 0 deletions
diff --git a/src/boost/libs/date_time/test/testfrmwk.hpp b/src/boost/libs/date_time/test/testfrmwk.hpp new file mode 100644 index 000000000..fde39ab66 --- /dev/null +++ b/src/boost/libs/date_time/test/testfrmwk.hpp @@ -0,0 +1,113 @@ + +#ifndef TEST_FRMWK_HPP___ +#define TEST_FRMWK_HPP___ + +/* Copyright (c) 2002,2003 CrystalClear Software, Inc. + * Use, modification and distribution is subject to the + * Boost Software License, Version 1.0. (See accompanying + * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) + * $Date$ + */ + + +#include <iostream> +#include <string> +#include <boost/config.hpp> + +//! Really simple test framework for counting and printing +class TestStats +{ +public: + static TestStats& instance() {static TestStats ts; return ts;} + void addPassingTest() {testcount_++; passcount_++;} + void addFailingTest() {testcount_++;} + unsigned int testcount() const {return testcount_;} + unsigned int passcount() const {return passcount_;} + void print(std::ostream& out = std::cout) const + { + out << testcount_ << " Tests Executed: " ; + if (passcount() != testcount()) { + out << (testcount() - passcount()) << " FAILURES"; + } + else { + out << "All Succeeded" << std::endl; + } + out << std::endl; + } +private: + TestStats() : testcount_(0), passcount_(0) {} + unsigned int testcount_; + unsigned int passcount_; +}; + + +inline bool check(const std::string& testname, bool testcond) +{ + TestStats& stat = TestStats::instance(); + if (testcond) { + std::cout << "Pass :: " << testname << " " << std::endl; + stat.addPassingTest(); + return true; + } + else { + stat.addFailingTest(); + std::cout << "FAIL :: " << testname << " " << std::endl; + return false; + } +} + +// In the comparisons below, it is possible that T and U are signed and unsigned integer types, which generates warnings in some compilers. +#if defined(BOOST_MSVC) +# pragma warning(push) +# pragma warning(disable: 4389) +#elif defined(BOOST_CLANG) && defined(__has_warning) +# if __has_warning("-Wsign-compare") +# pragma clang diagnostic push +# pragma clang diagnostic ignored "-Wsign-compare" +# endif +#elif defined(BOOST_GCC) && (BOOST_GCC+0) >= 40600 +# pragma GCC diagnostic push +# pragma GCC diagnostic ignored "-Wsign-compare" +#endif + +template< typename T, typename U > +inline bool check_equal(const std::string& testname, T const& left, U const& right) +{ + bool res = check(testname, left == right); + if (!res) + { + std::cout << " left = " << left << ", right = " << right << std::endl; + } + return res; +} + +#if defined(BOOST_MSVC) +# pragma warning(pop) +#elif defined(BOOST_CLANG) && defined(__has_warning) +# if __has_warning("-Wsign-compare") +# pragma clang diagnostic pop +# endif +#elif defined(BOOST_GCC) && (BOOST_GCC+0) >= 40600 +# pragma GCC diagnostic pop +#endif + +#ifndef BOOST_NO_STD_WSTRING +inline bool check_equal(const std::string& testname, std::wstring const& left, std::wstring const& right) +{ + bool res = check(testname, left == right); + if (!res) + { + std::wcout << L" left = " << left << L", right = " << right << std::endl; + } + return res; +} +#endif + +inline int printTestStats() +{ + TestStats& stat = TestStats::instance(); + stat.print(); + return stat.testcount() - stat.passcount(); +} + +#endif |