The Power in your Hands
Search Site:
About
Features
Documentation
Download
Community
Main
Classes
Namespaces
Modules
include
Pt
Unit
Test.h
1
/*
2
* Copyright (C) 2005-2008 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_TEST_H
30
#define PT_UNIT_TEST_H
31
32
#include <Pt/Unit/Api.h>
33
#include <Pt/Unit/Reporter.h>
34
#include <Pt/Unit/Assertion.h>
35
#include <Pt/NonCopyable.h>
36
#include <string>
37
#include <list>
38
39
namespace
Pt {
40
41
namespace
Unit {
42
43
class
TestContext;
44
54
class
PT_UNIT_API
Test
:
protected
NonCopyable
55
{
56
public
:
59
virtual
~
Test
();
60
74
virtual
void
run() = 0;
75
78
const
std::string& name()
const
;
79
82
void
reportStart(
const
TestContext
& ctx);
83
89
void
reportFinish(
const
TestContext
& ctx);
90
95
void
reportSuccess(
const
TestContext
& ctx);
96
101
void
reportAssertion(
const
TestContext
& ctx,
const
Assertion
& ass);
102
107
void
reportException(
const
TestContext
& ctx,
const
std::exception& ex);
108
113
void
reportError(
const
TestContext
& ctx);
114
119
void
reportMessage(
const
std::string& msg);
120
123
void
setParent(
Test
* test);
124
127
Test
* parent();
128
131
const
Test
* parent()
const
;
132
135
void
attachReporter(
Reporter
& r);
136
139
void
detachReporter(
Reporter
& r);
140
141
protected
:
145
explicit
Test
(
const
std::string& name)
146
: _name(name)
147
, _parent(0)
148
{ }
149
150
private
:
151
std::string _name;
152
Test
* _parent;
153
std::list<Reporter*> _reporter;
154
};
155
156
}
// namespace Unit
157
158
}
// namespace Pt
159
160
#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::Test
Test base class
Definition:
Test.h:54
Pt::Unit::Test::Test
Test(const std::string &name)
Construct a test by name.
Definition:
Test.h:145