The Power in your Hands
Search Site:
About
Features
Documentation
Download
Community
Main
Classes
Namespaces
Modules
include
Pt
Unit
Reporter.h
1
/*
2
* Copyright (C) 2005-2006 by Dr. Marc Boris Duerner
3
*
4
* This library is free software; you can redistribute it and/or
5
* modify it under the terms of the GNU Lesser General Public
6
* License as published by the Free Software Foundation; either
7
* version 2.1 of the License, or (at your option) any later version.
8
*
9
* As a special exception, you may use this file as part of a free
10
* software library without restriction. Specifically, if other files
11
* instantiate templates or use macros or inline functions from this
12
* file, or you compile this file and link it with other files to
13
* produce an executable, this file does not by itself cause the
14
* resulting executable to be covered by the GNU General Public
15
* License. This exception does not however invalidate any other
16
* reasons why the executable file might be covered by the GNU Library
17
* General Public License.
18
*
19
* This library is distributed in the hope that it will be useful,
20
* but WITHOUT ANY WARRANTY; without even the implied warranty of
21
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
22
* Lesser General Public License for more details.
23
*
24
* You should have received a copy of the GNU Lesser General Public
25
* License along with this library; if not, write to the Free Software
26
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
27
*/
28
29
#ifndef PT_UNIT_REPORTER_H
30
#define PT_UNIT_REPORTER_H
31
32
#include <Pt/Unit/Api.h>
33
#include <Pt/Unit/Assertion.h>
34
#include <Pt/Unit/TestContext.h>
35
#include <Pt/NonCopyable.h>
36
#include <vector>
37
#include <iosfwd>
38
#include <stdexcept>
39
40
namespace
Pt {
41
42
namespace
Unit {
43
44
class
Test;
45
55
class
PT_UNIT_API
Reporter
:
protected
NonCopyable
56
{
57
friend
class
Test
;
58
59
public
:
62
virtual
~
Reporter
();
63
71
virtual
void
reportStart(
const
TestContext
& test) = 0;
72
80
virtual
void
reportFinish(
const
TestContext
& test) = 0;
81
89
virtual
void
reportMessage(
const
std::string& msg) = 0;
90
97
virtual
void
reportSuccess(
const
TestContext
& test) = 0;
98
107
virtual
void
reportAssertion(
const
TestContext
& test,
const
Assertion
& a) = 0;
108
118
virtual
void
reportException(
const
TestContext
& test,
const
std::exception& ex) = 0;
119
127
virtual
void
reportError(
const
TestContext
& test) = 0;
128
129
protected
:
132
Reporter
()
133
{}
134
135
void
attachTest(
Test
& test);
136
137
void
detachTest(
Test
& test);
138
139
private
:
140
std::vector<Test*> _attachedTests;
141
};
142
143
144
class
PT_UNIT_API BriefReporter :
public
Reporter
145
{
146
public
:
147
explicit
BriefReporter(std::ostream* out = &std::cout);
148
149
virtual
~BriefReporter();
150
151
void
setOutput(std::ostream& out);
152
153
virtual
void
reportStart(
const
TestContext& test);
154
155
virtual
void
reportFinish(
const
TestContext& test);
156
157
virtual
void
reportMessage(
const
std::string& msg);
158
159
virtual
void
reportSuccess(
const
TestContext& test);
160
161
virtual
void
reportAssertion(
const
TestContext& test,
const
Assertion& a);
162
163
virtual
void
reportException(
const
TestContext& test,
const
std::exception& ex);
164
165
virtual
void
reportError(
const
TestContext& test);
166
167
private
:
170
std::ostream* _out;
171
};
172
173
}
// namespace Unit
174
175
}
// namespace Pt
176
177
#endif
Pt::Unit::Assertion
Test Assertion exception
Definition:
Assertion.h:60
Pt::Unit::Reporter
Test event reporter
Definition:
Reporter.h:55
Pt::NonCopyable
Protects derived classes from being copied.
Definition:
NonCopyable.h:54
Pt::Unit::TestContext
Context in which test are run.
Definition:
TestContext.h:46
Pt::Unit::Reporter::Reporter
Reporter()
Constructs a reporter.
Definition:
Reporter.h:132
Pt::Unit::Test
Test base class
Definition:
Test.h:54