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 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157
|
#include <tut/tut.hpp>
#include <string>
using std::string;
namespace tut
{
struct test_callback : public callback
{
void run_started()
{
}
void test_group_started(const std::string&)
{
}
void test_completed(const tut::test_result& tr)
{
current_test_name = tr.name;
}
void run_completed()
{
}
string current_test_name;
};
struct test_name_data
{
test_runner runner;
test_callback callback;
struct dummy
{
};
typedef test_group < dummy > tf;
typedef tf::object object;
tf factory;
test_name_data()
: factory("internal", runner)
{
}
}
;
/**
* Test functions under real test.
*/
template < >
template < >
void test_name_data::object::test < 1 > ()
{
set_test_name("1");
}
template < >
template < >
void test_name_data::object::test < 2 > ()
{
set_test_name("2");
}
template < >
template < >
void test_name_data::object::test < 3 > ()
{}
template < >
template < >
void test_name_data::object::test < 4 > ()
{
set_test_name("failure");
ensure(true == false);
}
template < >
template < >
void test_name_data::object::test < 5 > ()
{
set_test_name("unexpected");
throw "unexpected";
}
#ifdef TUT_USE_SEH
template < >
template < >
void test_name_data::object::test < 6 > ()
{
set_test_name("seh");
*((char*)0) = 0;
}
#endif // TUT_USE_SEH
typedef test_group < test_name_data > set_test_name_group;
typedef set_test_name_group::object set_test_name_tests;
set_test_name_group group("set_test_name");
/**
* Tests 'set_test_name' works correctly.
*/
template < >
template < >
void set_test_name_tests::test < 1 > ()
{
runner.set_callback(&callback);
runner.run_test("internal", 1);
ensure_equals("test name", callback.current_test_name, "1");
runner.run_test("internal", 2);
ensure_equals("test name", callback.current_test_name, "2");
runner.run_test("internal", 3);
ensure_equals("test name", callback.current_test_name, "");
}
/**
* Tests 'set_test_name' works correctly on failure.
*/
template < >
template < >
void set_test_name_tests::test < 2 > ()
{
runner.set_callback(&callback);
runner.run_test("internal", 4);
ensure_equals("test name", callback.current_test_name, "failure");
}
/**
* Tests 'set_test_name' works correctly on unexpected exception.
*/
template < >
template < >
void set_test_name_tests::test < 3 > ()
{
runner.set_callback(&callback);
runner.run_test("internal", 5);
ensure_equals("test name", callback.current_test_name, "unexpected");
}
#ifdef TUT_USE_SEH
/**
* Tests 'set_test_name' works correctly on structured exception.
*/
template < >
template < >
void set_test_name_tests::test < 4 > ()
{
runner.set_callback(&callback);
runner.run_test("internal", 6);
ensure_equals("test name", callback.current_test_name, "seh");
}
#endif // TUT_USE_SEH
}
|