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#include "testregistry.h"
24#include "testcase.h"
25#include "test.h"
26
27using namespace muleunit;
28
29
30TestRegistry::TestRegistry()
31{
32}
33
34
35TestRegistry::~TestRegistry()
36{
37	TestCaseList::iterator it = m_testCases.begin();
38	for (; it != m_testCases.end(); ++it) {
39		delete *it;
40	}
41}
42
43
44void TestRegistry::addTest(Test *test)
45{
46	instance().add(test);
47}
48
49
50bool TestRegistry::runAndPrint()
51{
52	return instance().runTests();
53}
54
55
56TestRegistry& TestRegistry::instance()
57{
58	static TestRegistry registry;
59	return registry;
60}
61
62
63void TestRegistry::add(Test *test)
64{
65	const wxString tcName = test->getTestCaseName();
66	const wxString tName = test->getTestName();
67
68
69	if (m_testCases.empty() || m_testCases.back()->getName() != tcName) {
70		m_testCases.push_back(new TestCase(tcName));
71	}
72
73	m_testCases.back()->addTest(test);
74}
75
76
77bool TestRegistry::runTests()
78{
79	bool success = true;
80
81	TestCaseList::iterator it = m_testCases.begin();
82	for (; it != m_testCases.end(); ++it) {
83		success &= (*it)->run();
84	}
85
86	return success;
87}
88
89