File: runner.cpp

package info (click to toggle)
libtut 0.0.20070706-4
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 1,148 kB
  • sloc: cpp: 3,588; xml: 137; makefile: 18; ansic: 9
file content (149 lines) | stat: -rw-r--r-- 2,589 bytes parent folder | download | duplicates (4)
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
    }
}

}