#include <xtd/xtd.tunit>
#include <sstream>
using namespace std;
using namespace xtd::tunit;
class gtest_event_listener final : public event_listener {
private:
cout << "[==========] Running " << e.unit_test().test_count() << " tests from " << e.unit_test().test_cases_count() << " test case." << endl;
}
cout << "[----------] Global test environment set-up." << endl;
}
void on_class_start(
const xtd::tunit::class_event_args& e)
const override {
cout << "[----------] " << e.test_class().test_count() << " tests from " << e.test_class().name() << endl;
}
void on_test_start(
const xtd::tunit::test_event_args& e)
const override {
cout << "[ RUN ] " << e.test_class().name() << "." << e.test().name() << endl;
}
void on_test_succeed(
const xtd::tunit::test_event_args& e)
const override {
cout << "[ OK ] " << e.test_class().name() << "." << e.test().name() << " (" << e.test().elapsed_time().count() << " ms)" << endl;
}
void on_test_failed(
const xtd::tunit::test_event_args& e)
const override {
cout << e.test().line_info().file_path() << ":" << e.test().line_info().line_number() << ": Failure" << endl;
if (e.test().actual() != "") cout << " Actual: " << e.test().actual() << endl;
if (e.test().expect() != "") cout << "Expected: " << e.test().expect() << endl;
if (e.test().message() != "") cout << e.test().message() << endl;
cout << "[ FAILED ] " << e.test_class().name() << "." << e.test().name() << " (" << e.test().elapsed_time().count() << " ms)" << endl;
}
void on_class_end(
const xtd::tunit::class_event_args& e)
const override {
cout << "[----------] " << e.test_class().test_count() << " tests from " << e.test_class().name() << " (" << e.test_class().elapsed_time().count() << " ms)" << endl;
}
cout << endl << "[----------] Global test environment tear-down" << endl;
}
cout << "[==========] " << e.unit_test().test_count() << " tests from " << e.unit_test().test_cases_count() << " test case ran. (" << e.unit_test().elapsed_time().count() << " ms total)" << endl;
cout << "[ PASSED ] " << e.unit_test().succeed_test_count() << " tests." << endl;
if (e.unit_test().failed_test_count()) {
cout << "[ FAILED ] " << e.unit_test().failed_test_count() << " test, listed below:" << endl;
for(string name : e.unit_test().failed_test_names()) {
cout << "[ FAILED ] " << name << endl;
}
cout << endl;
cout << " " << e.unit_test().failed_test_count() << " FAILED TEST" << endl;
}
if (!e.unit_test().failed_test_count() && e.unit_test().ignored_test_count()) cout << endl;
if (e.unit_test().ignored_test_count()) cout << " YOU HAVE " << e.unit_test().ignored_test_count() << " DISABLED TESTS" << endl << endl;
}
};
class gtest_unit_test final : public unit_test {
public:
gtest_unit_test() : unit_test(make_unique<gtest_event_listener>()) {}
};
namespace unit_tests {
class test_class_(test) {
public:
void test_method_(test_case1) {
}
void test_method_(test_case2) {
}
void test_method_(test_case3) {
}
void ignore_test_method_(test_case4) {
}
};
}
int main() {
return gtest_unit_test().run();
}