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
|
#include <tut/tut.hpp>
#include <string>
#include <stdexcept>
using std::string;
using std::runtime_error;
namespace tut
{
/**
* Testing ensure_equals() method.
*/
struct ensure_eq_test
{
};
typedef test_group<ensure_eq_test> tf;
typedef tf::object object;
tf ensure_eq_test("ensure_equals()");
/**
* Checks positive ensure_equals with simple types
*/
template<>
template<>
void object::test<1>()
{
volatile int n = 1; // to stop optimization
ensure_equals("1==n", 1, n);
}
/**
* Checks positive ensure_equals with complex non-matching types
*/
template<>
template<>
void object::test<2>()
{
set_test_name("checks positive ensure_equals with complex non-matching"
" types");
ensure_equals("string(foo)==foo", string("foo"), "foo");
ensure_equals("foo==string(foo)", "foo", string("foo"));
}
/**
* Checks positive ensure_equals with complex matching types
*/
template<>
template<>
void object::test<3>()
{
set_test_name("checks positive ensure_equals with complex matching types");
ensure_equals("string==string", string("foo"), string("foo"));
}
/**
* Checks negative ensure_equals with simple types
*/
template<>
template<>
void object::test<10>()
{
set_test_name("checks negative ensure_equals with simple types");
volatile int n = 1; // to stop optimization
try
{
ensure_equals("2!=n", 2, n);
throw runtime_error("ensure_equals failed");
}
catch (const failure& ex)
{
if (string(ex.what()).find("2!=n") == string::npos)
{
throw runtime_error("contains wrong message");
}
}
}
/**
* Checks negative ensure_equals with complex non-matching types
*/
template<>
template<>
void object::test<11>()
{
set_test_name("checks negative ensure_equals with complex non-matching"
" types");
try
{
ensure_equals("string(foo)!=boo", string("foo"), "boo");
throw runtime_error("ensure_equals failed");
}
catch (const failure& ex)
{
if (string(ex.what()).find("string(foo)!=boo") == string::npos)
{
throw runtime_error("contains wrong message");
}
}
}
/**
* Checks negative ensure_equals with complex matching types
*/
template<>
template<>
void object::test<12>()
{
set_test_name("checks negative ensure_equals with complex matching types");
try
{
ensure_equals("string(foo)!=string(boo)", string("foo"), string("boo"));
throw runtime_error("ensure_equals failed");
}
catch (const failure& ex)
{
if (string(ex.what()).find("string(foo)!=string(boo)") == string::npos)
{
throw runtime_error("contains wrong message");
}
}
}
}
|