summaryrefslogtreecommitdiff
path: root/include/cppunit/CompilerOutputter.h
blob: 38270174620967ee6fe437c59cfcd0af635cd140 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#ifndef CPPUNIT_COMPILERTESTRESULTOUTPUTTER_H
#define CPPUNIT_COMPILERTESTRESULTOUTPUTTER_H

#include <cppunit/Portability.h>
#include <cppunit/Outputter.h>
#include <vector>
#include <iostream>

namespace CppUnit
{

class Exception;
class SourceLine;
class Test;
class TestFailure;
class TestResultCollector;

/*! \class CompilerOutputter
 * \brief This class implements output test result in a compiler compatible format.
 */
class CPPUNIT_API CompilerOutputter : public Outputter
{
public:
  /*! Constructs a CompilerOutputter object.
   */
  CompilerOutputter( TestResultCollector *result,
                     std::ostream &stream );

  /// Destructor.
  virtual ~CompilerOutputter();

  static CompilerOutputter *defaultOutputter( TestResultCollector *result,
                                              std::ostream &stream );

  void write();

  virtual void printSucess();
  virtual void printFailureReport();
  virtual void printFailuresList();
  virtual void printStatistics();
  virtual void printFailureDetail( TestFailure *failure );
  virtual void printFailureLocation( SourceLine sourceLine );
  virtual void printFailureType( TestFailure *failure );
  virtual void printFailedTestName( TestFailure *failure );
  virtual void printFailureMessage( TestFailure *failure );
  virtual void printNotEqualMessage( Exception *thrownException );
  virtual void printDefaultMessage( Exception *thrownException );
  virtual std::string wrap( std::string message );

private:
  /// Prevents the use of the copy constructor.
  CompilerOutputter( const CompilerOutputter &copy );

  /// Prevents the use of the copy operator.
  void operator =( const CompilerOutputter &copy );

  typedef std::vector<std::string> Lines;
  static Lines splitMessageIntoLines( std::string message );

private:
  TestResultCollector *m_result;
  std::ostream &m_stream;
};


}  // namespace CppUnit



#endif  // CPPUNIT_COMPILERTESTRESULTOUTPUTTER_H