Upstream tarball 10152
[amule.git] / unittests / muleunit / testcase.cpp
blob96bd76b35967185c50d42c17bfce9bd8aa63f6f4
1 //
2 // MuleUnit: A minimalistic C++ Unit testing framework based on EasyUnit.
3 //
4 // Copyright (c) 2005-2008 aMule Team ( admin@amule.org / http://www.amule.org )
5 // Copyright (c) 2004-2008 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
23 #include "testcase.h"
24 #include "test.h"
26 #include <exception>
28 using namespace muleunit;
30 TestCase::TestCase(const wxString& name)
31 : m_name(name)
34 TestCase::~TestCase()
38 void TestCase::addTest(Test *test)
40 m_tests.push_back(test);
43 const TestList& TestCase::getTests() const
45 return m_tests;
48 int TestCase::getTestsCount() const
50 return m_tests.size();
54 const wxString& TestCase::getName() const
56 return m_name;
61 bool TestCase::run()
63 Printf(wxT("\nRunning test-collection \"") + m_name + wxT("\" with %u test-cases:"),
64 m_tests.size());
66 bool failures = false;
68 TestList::iterator it = m_tests.begin();
69 for (; it != m_tests.end(); ++it) {
70 Test* test = *it;
72 Printf(wxT("\tTest \"") + test->getTestName() + wxT("\" "));
74 bool wasSetup = false;
75 try {
76 test->setUp();
77 wasSetup = true;
78 } catch (const CTestFailureException& e) {
79 failures = true;
80 Printf(wxT("\t\tFailure in setUp:\n"));
81 e.PrintBT();
84 // Only run the test if it was actually setup. Otherwise we
85 // are sure to get spurious failures.
86 if (wasSetup) {
87 try {
88 test->run();
89 } catch (const CTestFailureException& e) {
90 failures = true;
91 Printf(wxT("\t\tFailure running:"));
92 e.PrintBT();
96 try {
97 test->tearDown();
98 } catch (const CTestFailureException& e) {
99 failures = true;
100 Printf(wxT("\t\tFailure in tearDown:"));
101 e.PrintBT();
105 return !failures;