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 
27 using namespace muleunit;
28 
29 
TestRegistry()30 TestRegistry::TestRegistry()
31 {
32 }
33 
34 
~TestRegistry()35 TestRegistry::~TestRegistry()
36 {
37 	TestCaseList::iterator it = m_testCases.begin();
38 	for (; it != m_testCases.end(); ++it) {
39 		delete *it;
40 	}
41 }
42 
43 
addTest(Test * test)44 void TestRegistry::addTest(Test *test)
45 {
46 	instance().add(test);
47 }
48 
49 
runAndPrint()50 bool TestRegistry::runAndPrint()
51 {
52 	return instance().runTests();
53 }
54 
55 
instance()56 TestRegistry& TestRegistry::instance()
57 {
58 	static TestRegistry registry;
59 	return registry;
60 }
61 
62 
add(Test * test)63 void 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 
runTests()77 bool 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