kpeter@66: /* -*- C++ -*- kpeter@66: * kpeter@66: * This file is a part of LEMON, a generic C++ optimization library kpeter@66: * kpeter@66: * Copyright (C) 2003-2008 kpeter@66: * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport kpeter@66: * (Egervary Research Group on Combinatorial Optimization, EGRES). kpeter@66: * kpeter@66: * Permission to use, modify and distribute this software is granted kpeter@66: * provided that this copyright notice appears in all copies. For kpeter@66: * precise terms see the accompanying LICENSE file. kpeter@66: * kpeter@66: * This software is provided "AS IS" with no warranty of any kind, kpeter@66: * express or implied, and with no claim as to its suitability for any kpeter@66: * purpose. kpeter@66: * kpeter@66: */ kpeter@66: kpeter@66: #include kpeter@66: kpeter@66: #include kpeter@66: #include "test_tools.h" kpeter@66: kpeter@66: using namespace lemon; kpeter@66: deba@108: #ifdef LEMON_ENABLE_ASSERTS deba@108: #undef LEMON_ENABLE_ASSERTS deba@108: #endif deba@108: deba@108: #ifdef LEMON_DISABLE_ASSERTS deba@108: #undef LEMON_DISABLE_ASSERTS deba@108: #endif deba@108: deba@108: //checking disabled asserts deba@108: #define LEMON_DISABLE_ASSERTS deba@108: #include deba@108: deba@108: void no_assertion_text_disable() { deba@108: LEMON_ASSERT(true, "This is a fault message"); kpeter@66: } kpeter@66: deba@108: void assertion_text_disable() { deba@108: LEMON_ASSERT(false, "This is a fault message"); kpeter@66: } kpeter@66: deba@108: void fixme_disable() { deba@108: LEMON_FIXME("fixme_disable() is fixme!"); deba@108: } deba@108: deba@108: void check_assertion_disable() { deba@108: no_assertion_text_disable(); deba@108: assertion_text_disable(); deba@108: fixme_disable(); deba@108: } deba@108: #undef LEMON_DISABLE_ASSERTS deba@108: kpeter@171: //checking custom assert handler deba@108: #define LEMON_ASSERT_CUSTOM deba@108: deba@108: static int cnt = 0; deba@108: void my_assert_handler(const char*, int, const char*, deba@108: const char*, const char*) { deba@108: ++cnt; deba@108: } deba@108: deba@108: #define LEMON_CUSTOM_ASSERT_HANDLER my_assert_handler deba@108: #include deba@108: deba@108: void no_assertion_text_custom() { deba@108: LEMON_ASSERT(true, "This is a fault message"); deba@108: } deba@108: deba@108: void assertion_text_custom() { deba@108: LEMON_ASSERT(false, "This is a fault message"); deba@108: } deba@108: deba@108: void fixme_custom() { deba@108: LEMON_FIXME("fixme_custom() is fixme!"); deba@108: } deba@108: deba@108: void check_assertion_custom() { deba@108: no_assertion_text_custom(); deba@108: assertion_text_custom(); deba@108: fixme_custom(); deba@118: check(cnt == 2, "The custom assert handler does not work"); deba@108: } deba@108: deba@108: #undef LEMON_ASSERT_CUSTOM deba@108: deba@108: deba@108: int main() { deba@108: check_assertion_disable(); deba@108: check_assertion_custom(); deba@108: kpeter@66: return 0; kpeter@66: }