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

📄 compileroutputter.cpp

📁 开发源代码的CPU卡的COS源程序。
💻 CPP
字号:
#include <algorithm>#include <cppunit/NotEqualException.h>#include <cppunit/SourceLine.h>#include <cppunit/TestFailure.h>#include <cppunit/TestResultCollector.h>#include <cppunit/CompilerOutputter.h>namespace CppUnit{CompilerOutputter::CompilerOutputter( TestResultCollector *result,                                      std::ostream &stream ) :    m_result( result ),    m_stream( stream ){}CompilerOutputter::~CompilerOutputter(){}CompilerOutputter *CompilerOutputter::defaultOutputter( TestResultCollector *result,                                     std::ostream &stream ){  return new CompilerOutputter( result, stream );// For automatic adpatation...//  return new CPPUNIT_DEFAULT_OUTPUTTER( result, stream );}void CompilerOutputter::write(){  if ( m_result->wasSuccessful() )    printSucess();  else    printFailureReport();}void CompilerOutputter::printSucess(){  m_stream  << "OK (" << m_result->runTests()  << ")"              <<  std::endl;}void CompilerOutputter::printFailureReport(){  printFailuresList();  printStatistics();}void CompilerOutputter::printFailuresList(){  for ( int index =0; index < m_result->testFailuresTotal(); ++index)  {    printFailureDetail( m_result->failures()[ index ] );  }}void CompilerOutputter::printFailureDetail( TestFailure *failure ){  printFailureLocation( failure->sourceLine() );  printFailureType( failure );  printFailedTestName( failure );  printFailureMessage( failure );} void CompilerOutputter::printFailureLocation( SourceLine sourceLine ){  if ( sourceLine.isValid() )    m_stream  <<  sourceLine.fileName()                <<  "("  << sourceLine.lineNumber()  << ") : ";  else    m_stream  <<  "##Failure Location unknown## : ";}void CompilerOutputter::printFailureType( TestFailure *failure ){  m_stream  <<  (failure->isError() ? "Error" : "Assertion");}void CompilerOutputter::printFailedTestName( TestFailure *failure ){  m_stream  <<  std::endl;  m_stream  <<  "Test name: "  <<  failure->failedTestName();}void CompilerOutputter::printFailureMessage( TestFailure *failure ){  m_stream  <<  std::endl;  Exception *thrownException = failure->thrownException();  if ( thrownException->isInstanceOf( NotEqualException::type() ) )    printNotEqualMessage( thrownException );  else    printDefaultMessage( thrownException );  m_stream  <<  std::endl;}void CompilerOutputter::printNotEqualMessage( Exception *thrownException ){  NotEqualException *e = (NotEqualException *)thrownException;  m_stream  <<  wrap( "- Expected : " + e->expectedValue() );  m_stream  <<  std::endl;  m_stream  <<  wrap( "- Actual   : " + e->actualValue() );  m_stream  <<  std::endl;  if ( !e->additionalMessage().empty() )  {    m_stream  <<  wrap( e->additionalMessage() );    m_stream  <<  std::endl;  }}void CompilerOutputter::printDefaultMessage( Exception *thrownException ){  std::string wrappedMessage = wrap( thrownException->what() );  m_stream  <<  wrappedMessage  << std::endl;}void CompilerOutputter::printStatistics(){  m_stream  <<  "Failures !!!"  <<  std::endl;  m_stream  <<  "Run: "  <<  m_result->runTests()  << "   "            <<  "Failure total: "  <<  m_result->testFailuresTotal()  << "   "            <<  "Failures: "  <<  m_result->testFailures()  << "   "            <<  "Errors: "  <<  m_result->testErrors()            <<  std::endl;}std::stringCompilerOutputter::wrap( std::string message ){  Lines lines = splitMessageIntoLines( message );  std::string wrapped;  for ( Lines::iterator it = lines.begin(); it != lines.end(); ++it )  {    std::string line( *it );    const int maxLineLength = 80;    int index =0;    while ( index < line.length() )    {      std::string line( line.substr( index, maxLineLength ) );      wrapped += line;      index += maxLineLength;      if ( index < line.length() )        wrapped += "\n";    }    wrapped += '\n';  }  return wrapped;}CompilerOutputter::Lines CompilerOutputter::splitMessageIntoLines( std::string message ){  Lines lines;  std::string::iterator itStart = message.begin();  while ( true )  {    std::string::iterator itEol = std::find( itStart,                                              message.end(),                                              '\n' );    lines.push_back( message.substr( itStart - message.begin(),                                     itEol - itStart ) );    if ( itEol == message.end() )      break;    itStart = itEol +1;  }  return lines;}}  // namespace CppUnit

⌨️ 快捷键说明

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