File: set_test_name.cpp

package info (click to toggle)
libtut 0.0.20070706-2
  • links: PTS
  • area: main
  • in suites: buster
  • size: 1,148 kB
  • ctags: 607
  • sloc: cpp: 3,588; xml: 137; makefile: 61; ansic: 9
file content (157 lines) | stat: -rw-r--r-- 2,914 bytes parent folder | download | duplicates (3)
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
}