ReactOS  0.4.14-dev-815-ge410a12
file_reporter.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2003, 2004
3  * Zdenek Nemec
4  *
5  * This material is provided "as is", with absolutely no warranty expressed
6  * or implied. Any use is at your own risk.
7  *
8  * Permission to use or copy this software for any purpose is hereby granted
9  * without fee, provided the above notices are retained on all copies.
10  * Permission to modify the code and to distribute modified code is granted,
11  * provided the above notices are retained, and a notice that the code was
12  * modified is included with the above copyright notice.
13  *
14  */
15 
16 /* $Id$ */
17 
18 #ifndef _CPPUNITMINIFILEREPORTERINTERFACE_H_
19 #define _CPPUNITMINIFILEREPORTERINTERFACE_H_
20 
21 #include <stdio.h>
22 
23 #include "cppunit_timer.h"
24 
25 //
26 // CppUnit mini file(stream) reporter
27 //
28 class FileReporter : public CPPUNIT_NS::Reporter {
29 private:
30  FileReporter(const FileReporter&);
32 public:
33  // reporting to stderr
34  explicit FileReporter(bool doMonitor = false):
36  m_failed(false), m_doMonitor(doMonitor)
37  { _file = stderr; }
38 
39  // reporting to the file with the given name
40  explicit FileReporter(const char* file, bool doMonitor = false):
42  m_failed(false), m_doMonitor(doMonitor)
43  {
44 #ifndef _STLP_USE_SAFE_STRING_FUNCTIONS
45  _file = fopen(file, "w");
46 #else
47  fopen_s(&_file, file, "w");
48 #endif
49  }
50 
51  // reporting to the given file
52  explicit FileReporter(FILE* stream, bool doMonitor = false):
54  m_failed(false), m_doMonitor(doMonitor)
55  { _file = stream; }
56 
57  virtual ~FileReporter() {
58  if (_myStream)
59  fclose(_file);
60  else
61  fflush(_file);
62  }
63 
64  virtual void error(const char *in_macroName, const char *in_macro, const char *in_file, int in_line) {
65  // Error might be called several times between 2 progress calls, we shouldn't however consider
66  // that a test failed twice so we simply keep the info that test failed, number of failed tests
67  // is computed later in end method.
68  m_failed = true;
69  fprintf(_file, "\n\n%s(%d) : %s(%s);", in_file, in_line, in_macroName, in_macro);
70  }
71 
72  virtual void message( const char *msg )
73  { fprintf(_file, "\n\t%s", msg ); }
74 
75  virtual void progress(const char *in_className, const char *in_shortTestName, bool ignored, bool explicitTest) {
76  if (m_doMonitor) {
79  }
80  ++m_numTests;
81  m_failed = false;
82  if (ignored)
83  ++m_numIgnored;
84  fprintf(_file, "%s::%s", in_className, in_shortTestName);
85  if (ignored) {
86  const char *ignoredReason;
87  if (explicitTest) {
88  ++m_numExplicit;
89  ignoredReason = " EXPLICIT";
90  }
91  else
92  ignoredReason = " IGNORED";
93 
94  fprintf(_file, "%s", ignoredReason);
95  }
96  }
97 
98  virtual void end() {
99  if (m_doMonitor) {
101  m_testTimer.stop();
103  }
104  if (m_failed) {
105  ++m_numErrors;
106  }
107  fprintf(_file, "\n");
108  }
109 
110  virtual void printSummary() {
111  if (m_numErrors > 0) {
112  fprintf(_file, "\nThere were errors! %d of %d tests", m_numErrors, m_numTests);
113  }
114  else {
115  fprintf(_file, "\nOK %d tests", m_numTests);
116  }
117 
118  if (m_numIgnored > 0) {
119  fprintf(_file, ", %d ignored", m_numIgnored);
120  }
121 
122  if (m_numExplicit > 0) {
123  fprintf(_file, " (%d explicit)", m_numExplicit);
124  }
125 
126  if (m_doMonitor) {
128  }
129 
130  fprintf(_file, "\n\n");
131  }
132 private:
137  // flag whether we own '_file' and are thus responsible for releasing it in the destructor
138  bool _myStream;
139  bool m_failed;
143 };
144 
145 #endif /*_CPPUNITMINIFILEREPORTERINTERFACE_H_*/
#define true
Definition: stdbool.h:37
FileReporter(const char *file, bool doMonitor=false)
Definition: file_reporter.h:40
virtual ~FileReporter()
Definition: file_reporter.h:57
int CDECL fopen_s(FILE **pFile, const char *filename, const char *mode)
Definition: file.c:3255
virtual void error(const char *in_macroName, const char *in_macro, const char *in_file, int in_line)
Definition: file_reporter.h:64
_Check_return_opt_ _CRTIMP int __cdecl fprintf(_Inout_ FILE *_File, _In_z_ _Printf_format_string_ const char *_Format,...)
virtual void progress(const char *in_className, const char *in_shortTestName, bool ignored, bool explicitTest)
Definition: file_reporter.h:75
virtual void message(const char *msg)
Definition: file_reporter.h:72
virtual void end()
Definition: file_reporter.h:98
FileReporter(const FileReporter &)
FileReporter(bool doMonitor=false)
Definition: file_reporter.h:34
FileReporter(FILE *stream, bool doMonitor=false)
Definition: file_reporter.h:52
void start()
Definition: cppunit_timer.h:34
Definition: parse.h:22
GLuint GLuint stream
Definition: glext.h:7522
#define false
Definition: stdbool.h:38
_Check_return_opt_ _CRTIMP int __cdecl fclose(_Inout_ FILE *_File)
_Check_return_ _CRTIMP FILE *__cdecl fopen(_In_z_ const char *_Filename, _In_z_ const char *_Mode)
void restart()
Definition: cppunit_timer.h:40
double elapsedMilliseconds() const
Definition: cppunit_timer.h:75
_Check_return_opt_ _CRTIMP int __cdecl fflush(_Inout_opt_ FILE *_File)
virtual void printSummary()
FileReporter & operator=(const FileReporter &)
uint8_t ignored[3]
Definition: fsck.fat.h:35
Timer m_globalTimer
#define msg(x)
Definition: auth_time.c:54
FILE * stderr
void stop()
Definition: cppunit_timer.h:49
Definition: fci.c:126