⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 file_reporter.h

📁 stl的源码
💻 H
字号:
/* * Copyright (c) 2003, 2004 * Zdenek Nemec * * This material is provided "as is", with absolutely no warranty expressed * or implied. Any use is at your own risk. * * Permission to use or copy this software for any purpose is hereby granted * without fee, provided the above notices are retained on all copies. * Permission to modify the code and to distribute modified code is granted, * provided the above notices are retained, and a notice that the code was * modified is included with the above copyright notice. * *//* $Id$ */#ifndef _CPPUNITMINIFILEREPORTERINTERFACE_H_#define _CPPUNITMINIFILEREPORTERINTERFACE_H_#include <stdio.h>#include "cppunit_timer.h"//// CppUnit mini file(stream) reporter//class FileReporter : public CPPUNIT_NS::Reporter {private:  FileReporter(const FileReporter&);  FileReporter& operator=(const FileReporter&);public:  // reporting to stderr  explicit FileReporter(bool doMonitor = false):      m_numErrors(0), m_numIgnored(0), m_numExplicit(0), m_numTests(0), _myStream(false),      m_failed(false), m_doMonitor(doMonitor)  { _file = stderr; }  // reporting to the file with the given name  explicit FileReporter(const char* file, bool doMonitor = false):      m_numErrors(0), m_numIgnored(0), m_numExplicit(0), m_numTests(0), _myStream(true),      m_failed(false), m_doMonitor(doMonitor)  {#ifndef _STLP_USE_SAFE_STRING_FUNCTIONS    _file = fopen(file, "w");#else    fopen_s(&_file, file, "w");#endif  }  // reporting to the given file  explicit FileReporter(FILE* stream, bool doMonitor = false):      m_numErrors(0), m_numIgnored(0), m_numExplicit(0), m_numTests(0), _myStream(false),      m_failed(false), m_doMonitor(doMonitor)  { _file = stream; }  virtual ~FileReporter() {    if (_myStream)      fclose(_file);    else      fflush(_file);  }  virtual void error(const char *in_macroName, const char *in_macro, const char *in_file, int in_line) {    // Error might be called several times between 2 progress calls, we shouldn't however consider    // that a test failed twice so we simply keep the info that test failed, number of failed tests    // is computed later in end method.    m_failed = true;    fprintf(_file, "\n\n%s(%d) : %s(%s);", in_file, in_line, in_macroName, in_macro);  }  virtual void message( const char *msg )  { fprintf(_file, "\n\t%s", msg ); }  virtual void progress(const char *in_className, const char *in_shortTestName, bool ignored, bool explicitTest) {    if (m_doMonitor) {      m_globalTimer.restart();      m_testTimer.start();    }    ++m_numTests;    m_failed = false;    if (ignored)      ++m_numIgnored;    fprintf(_file, "%s::%s", in_className, in_shortTestName);    if (ignored) {      const char *ignoredReason;      if (explicitTest) {        ++m_numExplicit;        ignoredReason = " EXPLICIT";      }      else        ignoredReason = " IGNORED";      fprintf(_file, "%s", ignoredReason);    }  }  virtual void end() {    if (m_doMonitor) {      m_globalTimer.stop();      m_testTimer.stop();      fprintf(_file, " %f msec", m_testTimer.elapsedMilliseconds());    }    if (m_failed) {      ++m_numErrors;    }    fprintf(_file, "\n");  }  virtual void printSummary() {    if (m_numErrors > 0) {      fprintf(_file, "\nThere were errors! %d of %d tests", m_numErrors, m_numTests);    }    else {      fprintf(_file, "\nOK %d tests", m_numTests);    }    if (m_numIgnored > 0) {      fprintf(_file, ", %d ignored", m_numIgnored);    }    if (m_numExplicit > 0) {      fprintf(_file, " (%d explicit)", m_numExplicit);    }    if (m_doMonitor) {      fprintf(_file, " %f msec", m_globalTimer.elapsedMilliseconds());    }    fprintf(_file, "\n\n");  }private:  int m_numErrors;  int m_numIgnored;  int m_numExplicit;  int m_numTests;  // flag whether we own '_file' and are thus responsible for releasing it in the destructor  bool  _myStream;  bool m_failed;  bool m_doMonitor;  Timer m_globalTimer, m_testTimer;  FILE* _file;};#endif /*_CPPUNITMINIFILEREPORTERINTERFACE_H_*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -