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