TestCase.cpp
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:3k
源码类别:

模拟服务器

开发平台:

C/C++

  1. #include <stdexcept>
  2. #include <cmath>
  3. #include "TestCase.h"
  4. #include "TestResult.h"
  5. #include "estring.h"
  6. // Create a default TestResult
  7. TestResult *TestCase::defaultResult ()
  8. { return new TestResult; } 
  9. // Check for a failed general assertion 
  10. void TestCase::assertImplementation (bool          condition,
  11.                                      std::string   conditionExpression,
  12.                                      long          lineNumber,
  13.                                      std::string   fileName)
  14.     if (!condition) 
  15.         throw CppUnitException (conditionExpression, lineNumber, fileName); 
  16. }
  17. // Check for a failed equality assertion 
  18. void TestCase::assertEquals (long        expected, 
  19.                              long        actual,
  20.                              long        lineNumber,
  21.                              std::string fileName)
  22.     if (expected != actual) 
  23.         assertImplementation (false, notEqualsMessage(expected, actual), lineNumber, fileName); 
  24. }
  25. // Check for a failed equality assertion
  26. void TestCase::assertEquals (double        expected, 
  27.                              double        actual, 
  28.                              double        delta,
  29.                              long          lineNumber,
  30.                              std::string   fileName)
  31.     if (fabs (expected - actual) > delta) 
  32.         assertImplementation (false, notEqualsMessage(expected, actual), lineNumber, fileName); 
  33. }
  34. // Run the test and catch any exceptions that are triggered by it 
  35. void TestCase::run (TestResult *result)
  36. {
  37.     result->startTest (this);
  38.     setUp ();
  39.     try {
  40.         runTest ();
  41.     }
  42.     catch (CppUnitException e) {
  43.         CppUnitException *copy = new CppUnitException (e);
  44.         result->addFailure (this, copy);
  45.     }
  46.     catch (exception e) {
  47.         result->addError (this, new CppUnitException (e.what ()));
  48.     }
  49.     catch (...) {
  50.         CppUnitException *e = new CppUnitException ("unknown exception");
  51.         result->addError (this, e);
  52.     }
  53.     tearDown ();
  54.     result->endTest (this);
  55. }
  56. // A default run method 
  57. TestResult *TestCase::run ()
  58. {
  59.     TestResult *result = defaultResult ();
  60.     run (result);
  61.     return result;
  62. }
  63. // All the work for runTest is deferred to subclasses 
  64. void TestCase::runTest ()
  65. {
  66. }
  67. // Build a message about a failed equality check 
  68. std::string TestCase::notEqualsMessage (long expected, long actual)
  69.     return "expected: " + estring (expected) + " but was: " + estring (actual); 
  70. }
  71. // Build a message about a failed equality check 
  72. std::string TestCase::notEqualsMessage (double expected, double actual)
  73.     return "expected: " + estring (expected) + " but was: " + estring (actual); 
  74. }