/* -*- C++ -*-
 * src/test/error_test.cc - Part of LEMON, a generic C++ optimization library
 *
 * Copyright (C) 2005 Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport
 * (Egervary Combinatorial Optimization Research Group, EGRES).
 *
 * Permission to use, modify and distribute this software is granted
 * provided that this copyright notice appears in all copies. For
 * precise terms see the accompanying LICENSE file.
 *
 * This software is provided "AS IS" with no warranty of any kind,
 * express or implied, and with no claim as to its suitability for any
 * purpose.
 *
 */

#include <iostream>

#include <lemon/error.h>
#include "test_tools.h"
using namespace lemon;
using std::cout;
using std::endl;

void faulty_fn() {
  fault("This is a fault message");
}

void exception_fn() {
  throw Exception("This is a fn throwing excpt with some args: ") 
    << 5 << ", " << 18;
}

void unfinished_fn() {
  FIXME("unfinished_fn() is unfinished!");
}


int main() {
  try {
    faulty_fn();
    check(false, "A faulty function did not fail.");
  }
  catch(const Exception &e) {
    cout << "Exeption = \"" << e.what() << "\" (Right behaviour)" << endl;
  }

  try {
    exception_fn();
    check(false, "The function did not throw Exception.");
  }
  catch(const Exception &e) {
    cout << "Exeption = \"" << e.what() << "\" (Right behaviour)" << endl;
  }

  try {
    unfinished_fn();
    check(false, "FIXME macro does not work.");
  }
  catch(const Exception &e) {
    cout << "Exeption = \"" << e.what() << "\" (Right behaviour)" << endl;
  }

  return 0;
}
