Modifications to test suite to support test auto-registration

Issue #299
This commit is contained in:
Crzyrndm 2018-07-05 20:46:32 +12:00
parent e0d62b0835
commit a7b167032b
4 changed files with 20 additions and 71 deletions

View File

@ -2,6 +2,7 @@
#include <cmath> #include <cmath>
#include <exception> #include <exception>
#include <xlnt/utils/exceptions.hpp>
#define XLNT_STRINGIFYX(x) #x #define XLNT_STRINGIFYX(x) #x
#define XLNT_STRINGIFY(x) XLNT_STRINGIFYX(x) #define XLNT_STRINGIFY(x) XLNT_STRINGIFYX(x)

View File

@ -8,6 +8,11 @@
#include <vector> #include <vector>
#include <helpers/assertions.hpp> #include <helpers/assertions.hpp>
#include <helpers/path_helper.hpp>
//#include <helpers/temporary_directory.hpp>
//#include <helpers/temporary_file.hpp>
#include <helpers/timing.hpp>
#include <helpers/xml_helper.hpp>
struct test_status struct test_status
{ {
@ -17,7 +22,7 @@ struct test_status
std::vector<std::string> failures; std::vector<std::string> failures;
}; };
std::string build_name(const std::string &pretty, const std::string &method) inline std::string build_name(const std::string &pretty, const std::string &method)
{ {
return pretty.substr(0, pretty.find("::") + 2) + method; return pretty.substr(0, pretty.find("::") + 2) + method;
} }
@ -27,7 +32,7 @@ std::string build_name(const std::string &pretty, const std::string &method)
class test_suite class test_suite
{ {
public: public:
test_status go() static test_status go()
{ {
test_status status; test_status status;
@ -62,11 +67,11 @@ public:
} }
protected: protected:
void register_test_internal(std::function<void()> t, const std::string &function) static void register_test_internal(std::function<void()> t, const std::string &function)
{ {
tests.push_back(std::make_pair(t, function)); tests.push_back(std::make_pair(t, function));
} }
private: private:
std::vector<std::pair<std::function<void(void)>, std::string>> tests; static std::vector<std::pair<std::function<void(void)>, std::string>> tests;
}; };

View File

@ -26,7 +26,7 @@
namespace xlnt { namespace xlnt {
namespace benchmarks { namespace benchmarks {
std::size_t current_time() inline std::size_t current_time()
{ {
auto now = std::chrono::system_clock::now(); auto now = std::chrono::system_clock::now();
auto time_since_epoch = now.time_since_epoch(); auto time_since_epoch = now.time_since_epoch();

View File

@ -22,50 +22,18 @@
// @author: see AUTHORS file // @author: see AUTHORS file
#include <iostream> #include <iostream>
#include <helpers/test_suite.hpp>
#include <cell/cell_test_suite.hpp> std::vector<std::pair<std::function<void(void)>, std::string>> test_suite::tests;
#include <cell/index_types_test_suite.hpp>
#include <cell/rich_text_test_suite.hpp>
#include <styles/alignment_test_suite.hpp> void print_summary(const test_status& results)
#include <styles/color_test_suite.hpp>
#include <styles/fill_test_suite.hpp>
#include <styles/number_format_test_suite.hpp>
#include <utils/datetime_test_suite.hpp>
#include <utils/path_test_suite.hpp>
#include <utils/helper_test_suite.hpp>
#include <utils/timedelta_test_suite.hpp>
#include <workbook/named_range_test_suite.hpp>
#include <workbook/serialization_test_suite.hpp>
#include <workbook/workbook_test_suite.hpp>
#include <worksheet/page_setup_test_suite.hpp>
#include <worksheet/range_test_suite.hpp>
#include <worksheet/worksheet_test_suite.hpp>
#include <detail/cryptography/compound_document.hpp>
test_status overall_status;
template<typename T>
void run_tests()
{
auto status = T{}.go();
overall_status.tests_run += status.tests_run;
overall_status.tests_passed += status.tests_passed;
overall_status.tests_failed += status.tests_failed;
std::copy(status.failures.begin(), status.failures.end(), std::back_inserter(overall_status.failures));
}
void print_summary()
{ {
std::cout << "\n\n"; std::cout << "\n\n";
for (auto failure : overall_status.failures) std::cout << "Passed: " << results.tests_passed << '\n';
std::cout << "Failed: " << results.tests_failed << '\n';
for (auto failure : results.failures)
{ {
std::cout << failure << "\n\n"; std::cout << failure << "\n\n";
} }
@ -73,34 +41,9 @@ void print_summary()
int main() int main()
{ {
// cell test_status overall_status = test_suite::go();
run_tests<cell_test_suite>();
run_tests<index_types_test_suite>();
run_tests<rich_text_test_suite>();
// styles print_summary(overall_status);
run_tests<alignment_test_suite>();
run_tests<color_test_suite>();
run_tests<fill_test_suite>();
run_tests<number_format_test_suite>();
// utils
run_tests<datetime_test_suite>();
run_tests<path_test_suite>();
run_tests<helper_test_suite>();
run_tests<timedelta_test_suite>();
// workbook
run_tests<named_range_test_suite>();
run_tests<serialization_test_suite>();
run_tests<workbook_test_suite>();
// worksheet
run_tests<page_setup_test_suite>();
run_tests<range_test_suite>();
run_tests<worksheet_test_suite>();
print_summary();
return static_cast<int>(overall_status.tests_failed); return static_cast<int>(overall_status.tests_failed);
} }