/** @file
$Id$
$Date$
$Author$
@copy © Marc Wäckerlin
@license LGPL, see file COPYING
1 2 3 4 5 6 7 8
5678901234567890123456789012345678901234567890123456789012345678901234567890
*/
#include
#include
#include
#include
#include
namespace mrw {
class StackTraceTest: public CppUnit::TestFixture {
public:
/// test if symbols are correctely evaluated
void StackTrace() {
bool init(mrw::StackTrace::createSymtable());
CPPUNIT_ASSERT_MESSAGE("createSymtable() failed! ERROR="
+mrw::StackTrace::error(),
init
||
mrw::StackTrace::error().find("/valgrind/")
!=std::string::npos);
mrw::StackTrace s; int l(__LINE__); std::string f(__FILE__);
std::stringstream ss;
ss<first+"\"\n";
msg += "----------------------------------------\n";
std::string::size_type pos(st.find("mrw::StackTraceTest::StackTrace()"));
CPPUNIT_ASSERT_MESSAGE("\"mrw::StackTraceTest::StackTrace()\""
" not found!\n"+msg, pos!=std::string::npos);
CPPUNIT_ASSERT_MESSAGE('"'+ss.str()+"\" not found!\n"+msg,
st.find(ss.str(), pos) < st.size());
CPPUNIT_ASSERT_MESSAGE("\"CppUnit::TestCaller"
"::runTest()\" not found!\n"+msg,
st.find("CppUnit::TestCaller"
"::runTest()") nm /usr/lib/libcppunit-1.10.so.2.0.0
// nm: /usr/lib/libcppunit-1.10.so.2.0.0: no symbols
// > file /usr/lib/libcppunit-1.10.so.2.0.0
// /usr/lib/libcppunit-1.10.so.2.0.0:
// ELF 32-bit LSB shared object, Intel 80386,
// version 1 (SYSV), stripped
//CPPUNIT_ASSERT_MESSAGE("\"CppUnit::TestCase::run\" not found!\n"+msg,
// st.find("CppUnit::TestCase::run")=st.size());
}
CPPUNIT_TEST_SUITE(StackTraceTest);
CPPUNIT_TEST(StackTrace);
CPPUNIT_TEST_SUITE_END();
};
CPPUNIT_TEST_SUITE_REGISTRATION(StackTraceTest);
}
int main(int argc, char** argv) try {
std::ofstream ofs((*argv+std::string(".xml")).c_str());
CppUnit::TextUi::TestRunner runner;
runner.setOutputter(new CppUnit::XmlOutputter(&runner.result(), ofs));
runner.addTest(CppUnit::TestFactoryRegistry::getRegistry().makeTest());
return runner.run() ? 0 : 1;
} catch (std::exception& e) {
std::cerr<<"***Exception: "<