Commit 4c1150395b4fffd0ccad21bd1b230f532f7b9a3e

Authored by Jürgen Knödlseder
1 parent 2cde884c

Add test_value() method for integer comparisons.

Added a test_value() method for integer comparisons that automatically informs about the mismatches. This increases the readability of the test results.
include/GTestSuite.hpp
@@ -77,6 +77,10 @@ public: @@ -77,6 +77,10 @@ public:
77 void test_assert(bool result, 77 void test_assert(bool result,
78 const std::string& name, 78 const std::string& name,
79 const std::string& message=""); 79 const std::string& message="");
  80 + void test_value(const int& value,
  81 + const int& expected,
  82 + const std::string& name="",
  83 + const std::string& message="");
80 void test_value(const double& value, 84 void test_value(const double& value,
81 const double& expected, 85 const double& expected,
82 const double& eps = 1.0e-10, 86 const double& eps = 1.0e-10,
pyext/GTestSuite.i
@@ -158,6 +158,10 @@ public: @@ -158,6 +158,10 @@ public:
158 void test_assert(bool result, 158 void test_assert(bool result,
159 const std::string& name, 159 const std::string& name,
160 const std::string& message = ""); 160 const std::string& message = "");
  161 + void test_value(const int& value,
  162 + const int& expected,
  163 + const std::string& name="",
  164 + const std::string& message="");
161 void test_value(const double& value, 165 void test_value(const double& value,
162 const double& expected, 166 const double& expected,
163 const double& eps = 1.0e-10, 167 const double& eps = 1.0e-10,
src/test/GTestSuite.cpp
@@ -443,6 +443,67 @@ void GTestSuite::test_assert(bool assert, @@ -443,6 +443,67 @@ void GTestSuite::test_assert(bool assert,
443 * 443 *
444 * @param[in] value Value to test. 444 * @param[in] value Value to test.
445 * @param[in] expected Expected value. 445 * @param[in] expected Expected value.
  446 + * @param[in] name Test case name (defaults to "").
  447 + * @param[in] message Test case message (defaults to "").
  448 + *
  449 + * Test if the value is comprised in the interval
  450 + * [expected-eps, expected+eps].
  451 + ***************************************************************************/
  452 +void GTestSuite::test_value(const int& value,
  453 + const int& expected,
  454 + const std::string& name,
  455 + const std::string& message)
  456 +{
  457 + // Set test case name. If no name is specify then build the name from
  458 + // the actual test parameters.
  459 + std::string formated_name;
  460 + if (name != "") {
  461 + formated_name = format_name(name);
  462 + }
  463 + else {
  464 + formated_name = format_name("Test if " + str(value) + " is " +
  465 + str(expected));
  466 + }
  467 +
  468 + // Create a test case of failure type
  469 + GTestCase* testcase = new GTestCase(GTestCase::FAIL_TEST, formated_name);
  470 +
  471 + // If value is not the expected one then signal test as failed and
  472 + // increment the number of failures
  473 + if (value != expected) {
  474 + testcase->passed(false);
  475 + m_failures++;
  476 + }
  477 +
  478 + // If no message is specified then build message from test result
  479 + std::string formated_message;
  480 + if (message != "") {
  481 + formated_message = message;
  482 + }
  483 + else {
  484 + formated_message = "Value " + str(value) + " equals not the " +
  485 + "expected value of " + str(expected) + ".";
  486 + }
  487 +
  488 + // Set message
  489 + testcase->message(formated_message);
  490 +
  491 + // Log the result (".","F" or, "E")
  492 + std::cout << testcase->print();
  493 +
  494 + // Add test case to test suite
  495 + m_tests.push_back(testcase);
  496 +
  497 + // Return
  498 + return;
  499 +}
  500 +
  501 +
  502 +/***********************************************************************//**
  503 + * @brief Test a value
  504 + *
  505 + * @param[in] value Value to test.
  506 + * @param[in] expected Expected value.
446 * @param[in] eps Precision of the test (default 1e-30). 507 * @param[in] eps Precision of the test (default 1e-30).
447 * @param[in] name Test case name (defaults to ""). 508 * @param[in] name Test case name (defaults to "").
448 * @param[in] message Test case message (defaults to ""). 509 * @param[in] message Test case message (defaults to "").
@@ -472,7 +533,7 @@ void GTestSuite::test_value(const double&amp; value, @@ -472,7 +533,7 @@ void GTestSuite::test_value(const double&amp; value,
472 533
473 // If value is not between in interval [expected-eps, expected+eps] 534 // If value is not between in interval [expected-eps, expected+eps]
474 // then signal test as failed and increment the number of failures 535 // then signal test as failed and increment the number of failures
475 - if(value > expected + eps || value < expected - eps) { 536 + if (value > expected + eps || value < expected - eps) {
476 testcase->passed(false); 537 testcase->passed(false);
477 m_failures++; 538 m_failures++;
478 } 539 }