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
|
#include <tut/tut.hpp>
namespace tut
{
struct runner_data
{
test_runner tr;
struct dummy
{
};
typedef test_group<dummy> tf;
typedef tf::object object;
tf factory;
struct dummy_callback : public tut::callback
{
void run_started()
{
}
void test_group_started(const std::string&)
{
}
void test_completed(const tut::test_result&)
{
}
void run_completed()
{
}
} callback;
runner_data();
};
template<>
template<>
void runner_data::object::test<1>()
{
}
runner_data::runner_data()
: factory("runner_internal", tr)
{
}
typedef test_group<runner_data> group;
typedef group::object object;
group testrunner("runner base functionality");
/**
* Checks running all tests while there is no tests.
*/
template<>
template<>
void object::test<1>()
{
set_test_name("checks running all tests while there is no tests");
tr.run_tests();
tr.set_callback(&callback);
tr.run_tests();
tr.set_callback(0);
tr.run_tests();
}
/**
* Checks attempt to run test/tests in unexistent group.
*/
template<>
template<>
void object::test<2>()
{
set_test_name("checks attempt to run test/tests in unexistent group");
try
{
tr.run_tests("unexistent");
fail("expected no_such_group");
}
catch (const no_such_group&)
{
// as expected
}
try
{
tr.run_test("unexistent", 1);
fail("expected tut::no_such_group");
}
catch (const no_such_group& )
{
// as expected
}
try
{
tr.set_callback(&callback);
tr.run_tests("unexistent");
fail("expected tut::no_such_group");
}
catch (const no_such_group&)
{
// as expected
}
try
{
tr.set_callback(&callback);
tr.run_test("unexistent", 1);
fail("expected tut::no_such_group");
}
catch (const no_such_group&)
{
// as expected
}
}
/**
* Checks attempt to run invalid test in existent group.
*/
template<>
template<>
void object::test<3>()
{
set_test_name("checks attempt to run invalid test in existent group");
try
{
tr.run_test("runner_internal", -1);
fail("expected no_such_test");
}
catch (const no_such_test& )
{
// as expected
}
try
{
tr.run_test("runner_internal", 100000);
fail("expected beyond_last_test");
}
catch (const beyond_last_test&)
{
// as expected
}
}
}
|