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()30TestRegistry::TestRegistry() 31 { 32 } 33 34 ~TestRegistry()35TestRegistry::~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)44void TestRegistry::addTest(Test *test) 45 { 46 instance().add(test); 47 } 48 49 runAndPrint()50bool TestRegistry::runAndPrint() 51 { 52 return instance().runTests(); 53 } 54 55 instance()56TestRegistry& TestRegistry::instance() 57 { 58 static TestRegistry registry; 59 return registry; 60 } 61 62 add(Test * test)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 runTests()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