COIN-OR::LEMON - Graph Library

Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • test/error_test.cc

    r118 r108  
    4040}
    4141
     42void no_assertion_exception_disable() {
     43  LEMON_ASSERT(true, Exception());
     44}
     45
    4246void assertion_text_disable() {
    4347  LEMON_ASSERT(false, "This is a fault message");
     48}
     49
     50void assertion_exception_disable() {
     51  LEMON_ASSERT(false, Exception());
    4452}
    4553
     
    5058void check_assertion_disable() {
    5159  no_assertion_text_disable();
     60  no_assertion_exception_disable();
     61  assertion_exception_disable();
    5262  assertion_text_disable();
    5363  fixme_disable();
    5464}
    5565#undef LEMON_DISABLE_ASSERTS
     66
     67
     68#define LEMON_ASSERT_ERROR
     69#include <lemon/assert.h>
     70
     71void no_assertion_text_error() {
     72  LEMON_ASSERT(true, "This is a fault message");
     73}
     74
     75void no_assertion_exception_error() {
     76  LEMON_ASSERT(true, Exception());
     77}
     78
     79void assertion_text_error() {
     80  LEMON_ASSERT(false, "This is a fault message");
     81}
     82
     83void assertion_exception_error() {
     84  LEMON_ASSERT(false, Exception());
     85}
     86
     87void fixme_error() {
     88  LEMON_FIXME("fixme_error() is fixme!");
     89}
     90
     91void check_assertion_error() {
     92  no_assertion_text_error();
     93  no_assertion_exception_error();
     94  try {
     95    assertion_exception_error();
     96    check(false, "Assertion error");
     97  } catch (const AssertionFailedError& e) {
     98  }
     99
     100  try {
     101    assertion_text_error();
     102    check(false, "Assertion error");
     103  } catch (const AssertionFailedError& e) {
     104  }
     105
     106  try {
     107    fixme_error();
     108    check(false, "Assertion error");
     109  } catch (const AssertionFailedError& e) {
     110  }
     111}
     112#undef LEMON_ASSERT_ERROR
     113
     114#define LEMON_ASSERT_EXCEPTION
     115#include <lemon/assert.h>
     116
     117void no_assertion_text_exception() {
     118  LEMON_ASSERT(true, "This is a fault message");
     119}
     120
     121void no_assertion_exception_exception() {
     122  LEMON_ASSERT(true, Exception());
     123}
     124
     125void assertion_text_exception() {
     126  LEMON_ASSERT(false, "This is a fault message");
     127}
     128
     129void assertion_exception_exception() {
     130  LEMON_ASSERT(false, Exception());
     131}
     132
     133void fixme_exception() {
     134  LEMON_FIXME("fixme_exception() is fixme!");
     135}
     136
     137void check_assertion_exception() {
     138  no_assertion_text_exception();
     139  no_assertion_exception_exception();
     140  try {
     141    assertion_exception_exception();
     142    check(false, "Assertion error");
     143  } catch (const Exception& e) {
     144  }
     145
     146  try {
     147    assertion_text_exception();
     148    check(false, "Assertion error");
     149  } catch (const AssertionFailedError& e) {
     150  }
     151
     152  try {
     153    assertion_text_exception();
     154    check(false, "Assertion error");
     155  } catch (const AssertionFailedError& e) {
     156  }
     157
     158  try {
     159    fixme_exception();
     160    check(false, "Assertion error");
     161  } catch (const AssertionFailedError& e) {
     162  }
     163}
     164#undef LEMON_ASSERT_EXCEPTION
     165
     166#define LEMON_ASSERT_LOG
     167
     168#include <lemon/assert.h>
     169
     170void no_assertion_text_log() {
     171  LEMON_ASSERT(true, "This is a fault message");
     172}
     173
     174void no_assertion_exception_log() {
     175  LEMON_ASSERT(true, Exception());
     176}
     177
     178void assertion_text_log() {
     179  LEMON_ASSERT(false, "This is a fault message");
     180}
     181
     182void assertion_exception_log() {
     183  LEMON_ASSERT(false, Exception());
     184}
     185
     186void fixme_log() {
     187  LEMON_FIXME("fixme_log() is fixme!");
     188}
     189
     190void check_assertion_log() {
     191  no_assertion_text_log();
     192  no_assertion_exception_log();
     193  std::cerr << "The next 3 failure messages are expected: " << std::endl;
     194  assertion_exception_log();
     195  assertion_text_log();
     196  fixme_log();
     197  std::cerr << "End of expected error messages" << std::endl;
     198}
     199#undef LEMON_ASSERT_LOG
    56200
    57201#define LEMON_ASSERT_CUSTOM
     
    63207}
    64208
     209void my_assert_handler(const char*, int, const char*,
     210                       const std::exception&, const char*) {
     211  ++cnt;
     212}
     213
     214void my_assert_handler(const char*, int, const char*,
     215                       const std::string&, const char*) {
     216  ++cnt;
     217}
     218
     219
    65220#define LEMON_CUSTOM_ASSERT_HANDLER my_assert_handler
    66221#include <lemon/assert.h>
     
    70225}
    71226
     227void no_assertion_exception_custom() {
     228  LEMON_ASSERT(true, Exception());
     229}
     230
    72231void assertion_text_custom() {
    73232  LEMON_ASSERT(false, "This is a fault message");
     233}
     234
     235void assertion_exception_custom() {
     236  LEMON_ASSERT(false, Exception());
    74237}
    75238
     
    80243void check_assertion_custom() {
    81244  no_assertion_text_custom();
     245  no_assertion_exception_custom();
     246  assertion_exception_custom();
    82247  assertion_text_custom();
    83248  fixme_custom();
    84   check(cnt == 2, "The custom assert handler does not work");
     249  check(cnt == 3, "The custom assert handler does not work");
    85250}
    86251
     
    90255int main() {
    91256  check_assertion_disable();
     257  check_assertion_error();
     258  check_assertion_exception();
     259  check_assertion_log();
    92260  check_assertion_custom();
    93261
Note: See TracChangeset for help on using the changeset viewer.