/** @file

    $Id$

    $Date$
    $Author$

    @copy © Marc Wäckerlin
    @license LGPL, see file <a href="license.html">COPYING</a>

    $Log$
    Revision 1.4  2004/08/28 16:21:25  marc
    mrw-c++-0.92 (mrw)
    - new file: version.cpp
    - new file header for all sources
    - work around warning in mrw::auto<T>
    - possibility to compile without log4cxx
    - work around bugs in demangle.h and libiberty.h
    - corrections in documentation
    - added simple tracing mechanism
    - more warnings
    - small corrections in Auto<>::Free and a new test for it
    - possibility to compile without stack trace

*/
#include <mrw/stacktrace.hpp>
#include <cppunit/TestFixture.h>
#include <cppunit/ui/text/TestRunner.h>
#include <cppunit/extensions/HelperMacros.h>
#include <cppunit/extensions/TestFactoryRegistry.h>

namespace mrw {
  class StackTraceTest: public CppUnit::TestFixture { 
  public:
    /// test if symbols are correctely evaluated
    void StackTrace() {
      mrw::StackTrace::createSymtable();
      mrw::StackTrace s; int l(__LINE__); std::string f(__FILE__);
      std::stringstream ss;
      ss<<f<<':'<<l;
      std::string st(s);
      std::string::size_type pos(st.find(ss.str()));
      CPPUNIT_ASSERT(pos!=std::string::npos);
      CPPUNIT_ASSERT(st.find("mrw::StackTraceTest::StackTrace()", pos)
                     < st.size());
    }
    CPPUNIT_TEST_SUITE(StackTraceTest);
    CPPUNIT_TEST(StackTrace);
    CPPUNIT_TEST_SUITE_END();
  };
  CPPUNIT_TEST_SUITE_REGISTRATION(StackTraceTest);
}

int main() {
  CppUnit::TextUi::TestRunner runner;
  runner.addTest(CppUnit::TestFactoryRegistry::getRegistry().makeTest());
  return runner.run() ? 0 : 1;
}