/*
* Copyright (C) 2016 Edward d'Auvergne
*
* This file is part of the program FlightGear.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
#ifndef _FG_COMPILER_OUTPUTTER_HXX
#define _FG_COMPILER_OUTPUTTER_HXX
#include
#include
#include "fgTestListener.hxx"
// The custom outputter for the FlightGear test suite.
class fgCompilerOutputter : public CppUnit::CompilerOutputter
{
public:
// Constructor.
fgCompilerOutputter(CppUnit::TestResultCollector *result,
std::vector *capt,
const clock_t *clock,
CppUnit::OStream &stream,
const std::string &locationFormat = CPPUNIT_COMPILER_LOCATION_FORMAT)
: CppUnit::CompilerOutputter(result, stream, locationFormat)
, io_capt(capt)
, fg_result(result)
, fg_stream(stream)
, suite_timer(clock)
{
}
// Create a new class instance.
static fgCompilerOutputter *defaultOutputter(CppUnit::TestResultCollector *result, std::vector *capt, const clock_t *clock, CppUnit::OStream &stream);
// Print a summary after a successful run of the test suite.
void printSuccess();
// Detailed printout after a failed run of the test suite.
void printFailureReport();
// Printout for each failed test.
void printFailureDetail(CppUnit::TestFailure *failure);
// Printout of the test suite stats.
void printSuiteStats();
// The captured IO for each failed test.
std::vector *io_capt;
private:
// Store copies of the base class objects.
CppUnit::TestResultCollector *fg_result;
CppUnit::OStream &fg_stream;
// The test suite time, in clock ticks.
const clock_t *suite_timer;
// Simgear logstream IO printout.
void printIOStreamMessages(const char *heading, std::string messages, bool empty);
void printIOStreamMessages(const char *heading, std::string messages) {printIOStreamMessages(heading, messages, false);}
};
#endif // _FG_COMPILER_OUTPUTTER_HXX