forked from shogun-toolbox/shogun
/
main_unittest.cc
81 lines (67 loc) · 2.53 KB
/
main_unittest.cc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#include <gmock/gmock.h>
#include <gtest/gtest.h>
#include <shogun/base/init.h>
#include <shogun/io/SGIO.h>
#include "environments/LinearTestEnvironment.h"
#include "environments/MutiLabelTestEnvironment.h"
using namespace shogun;
using ::testing::Test;
using ::testing::UnitTest;
using ::testing::TestCase;
using ::testing::TestInfo;
using ::testing::TestPartResult;
using ::testing::TestEventListener;
using ::testing::Environment;
class FailurePrinter : public TestEventListener {
public:
explicit FailurePrinter(TestEventListener* listener) : TestEventListener() {_listener = listener;}
virtual ~FailurePrinter() {}
virtual void OnTestProgramStart(const UnitTest& unit_test) {}
virtual void OnTestIterationStart(const UnitTest& unit_test, int iteration) {}
virtual void OnEnvironmentsSetUpStart(const UnitTest& unit_test) {}
virtual void OnEnvironmentsSetUpEnd(const UnitTest& unit_test) {}
virtual void OnTestCaseStart(const TestCase& test_case) {}
virtual void OnTestStart(const TestInfo& test_info) {}
virtual void OnTestPartResult(const TestPartResult& result);
virtual void OnTestEnd(const TestInfo& test_info);
virtual void OnTestCaseEnd(const TestCase& test_case) {}
virtual void OnEnvironmentsTearDownStart(const UnitTest& unit_test) { }
virtual void OnEnvironmentsTearDownEnd(const UnitTest& unit_test) { }
virtual void OnTestIterationEnd(const UnitTest& unit_test, int iteration) { _listener->OnTestIterationEnd(unit_test, iteration); }
virtual void OnTestProgramEnd(const UnitTest& unit_test) { }
protected:
TestEventListener* _listener;
};
void FailurePrinter::OnTestPartResult(const TestPartResult& test_part_result)
{
if (test_part_result.failed())
{
_listener->OnTestPartResult(test_part_result);
printf("\n");
}
}
void FailurePrinter::OnTestEnd(const TestInfo& test_info)
{
if (test_info.result()->Failed())
_listener->OnTestEnd(test_info);
}
int main(int argc, char** argv)
{
::testing::InitGoogleTest(&argc, argv);
::testing::InitGoogleMock(&argc, argv);
if (argc > 1 && !strcmp(argv[1], "--only-on-failure"))
{
testing::TestEventListeners& listeners =
testing::UnitTest::GetInstance()->listeners();
testing::TestEventListener* default_printer
= listeners.Release(listeners.default_result_printer());
listeners.Append(new FailurePrinter(default_printer));
}
init_shogun_with_defaults();
sg_io->set_loglevel(MSG_WARN);
::testing::AddGlobalTestEnvironment(new LinearTestEnvironment());
::testing::AddGlobalTestEnvironment(new MutiLabelTestEnvironment());
int ret = RUN_ALL_TESTS();
exit_shogun();
return ret;
}