1//
2// MuleUnit: A minimalistic C++ Unit testing framework based on EasyUnit.
3//
4// Copyright (c) 2005-2011 aMule Team ( admin@amule.org / http://www.amule.org )
5// Copyright (c) 2004-2011 Barthelemy Dagenais ( barthelemy@prologique.com )
6//
7// This library is free software; you can redistribute it and/or
8// modify it under the terms of the GNU Lesser General Public
9// License as published by the Free Software Foundation; either
10// version 2.1 of the License, or (at your option) any later version.
11//
12// This library is distributed in the hope that it will be useful,
13// but WITHOUT ANY WARRANTY; without even the implied warranty of
14// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15// Lesser General Public License for more details.
16//
17// You should have received a copy of the GNU Lesser General Public
18// License along with this library; if not, write to the Free Software
19// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301, USA
20//
21
22
23#ifndef TESTREGISTRY_H
24#define TESTREGISTRY_H
25
26#include <list>
27
28namespace muleunit
29{
30	class Test;
31	class TestCase;
32
33
34typedef std::list<TestCase*> TestCaseList;
35
36
37/**
38 * The TestRegistry is the main class used to register all tests,
39 * and create appropriate TestCase. It can then be used to run
40 * tests and print results. All methods that should be used by
41 * the user are static.
42 */
43class TestRegistry
44{
45public:
46	TestRegistry();
47	~TestRegistry();
48
49	/**
50	 * Add a test in the registry. If the previous TestCase was not the same
51	 * as the one of the current test, a new TestCase is created.
52	 *
53	 * @param test Test to be added
54	 */
55	static void addTest(Test *test);
56
57	/**
58	 * Runs all added tests and prints the results.
59	 *
60	 * @return False if there were failures.
61	 */
62	static bool runAndPrint();
63
64private:
65	static TestRegistry& instance();
66	void add(Test *test);
67
68	bool runTests();
69	TestCaseList m_testCases;
70};
71
72} // MuleUnit ns
73#endif // TESTREGISTRY_H
74
75