--- /dev/null
+// ---
+//
+// $Id: collectoroutput.cpp,v 1.4 2008/07/15 20:33:31 hartwork Exp $
+//
+// CppTest - A C++ Unit Testing Framework
+// Copyright (c) 2003 Niklas Lundell
+//
+// ---
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the
+// Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+// Boston, MA 02111-1307, USA.
+//
+// ---
+
+
+#if (defined(__WIN32__) || defined(WIN32))
+# include "winconfig.h"
+#else
+# include "config.h"
+#endif
+
+
+#include "cpptest-collectoroutput.h"
+
+using namespace std;
+
+namespace Test
+{
+ CollectorOutput::TestInfo::TestInfo(const string name)
+ : _name(name)
+ {}
+
+ CollectorOutput::SuiteInfo::SuiteInfo(const string& name, int tests)
+ : _name(name),
+ _errors(0)
+ {
+ _tests.reserve(tests);
+ }
+
+ /// Constructs a collector object.
+ ///
+ CollectorOutput::CollectorOutput()
+ : Output(),
+ _total_errors(0)
+ {}
+
+ void
+ CollectorOutput::finished(int tests, const Time& time)
+ {
+ _total_tests = tests;
+ _total_time = time;
+ }
+
+ void
+ CollectorOutput::suite_start(int tests, const string& name)
+ {
+ if (tests > 0)
+ {
+ _suites.push_back(SuiteInfo(name, tests));
+ _cur_suite = &_suites.back();
+ }
+ }
+
+ void
+ CollectorOutput::suite_end(int tests, const string&, const Time& time)
+ {
+ if (tests > 0)
+ {
+ _cur_suite->_time = time;
+ _total_errors += _cur_suite->_errors;
+ }
+ }
+
+ void
+ CollectorOutput::test_start(const string& name)
+ {
+ _cur_suite->_tests.push_back(TestInfo(name));
+ _cur_test = &_cur_suite->_tests.back();
+ }
+
+ void
+ CollectorOutput::test_end(const string&, bool ok, const Time& time)
+ {
+ if (!(_cur_test->_success = ok))
+ ++_cur_suite->_errors;
+ _cur_test->_time = time;
+
+ }
+
+ void
+ CollectorOutput::assertment(const Source& s)
+ {
+ _cur_test->_sources.push_back(s);
+
+ }
+
+} // namespace Test
+