fixed a lot of issues, now successfully runs the test with --enable-pedantic; refs #8
This commit is contained in:
		@@ -48,7 +48,7 @@ public:
 | 
			
		||||
    int i(-1);
 | 
			
		||||
    {
 | 
			
		||||
      mrw::AutoFile a;
 | 
			
		||||
      CPPUNIT_ASSERT(a==-1); // init as -1
 | 
			
		||||
      CPPUNIT_ASSERT_EQUAL(-1, (mrw::AutoFile::Type)a); // init as -1
 | 
			
		||||
      i = a = open((std::string(mrw::ifelse(getenv("srcdir"), "."))
 | 
			
		||||
                    +"/test.dat").c_str(), O_RDONLY);
 | 
			
		||||
      CPPUNIT_ASSERT(i==a && a>0); // file is now open
 | 
			
		||||
@@ -61,24 +61,24 @@ public:
 | 
			
		||||
      CPPUNIT_ASSERT(i==b && cc==-1); // it's ok now
 | 
			
		||||
      b = open("test.dat", O_RDONLY);
 | 
			
		||||
      //close(i);
 | 
			
		||||
      CPPUNIT_ASSERT(read(i, &c, 1)==-1); // old file is closed
 | 
			
		||||
      CPPUNIT_ASSERT_EQUAL((ssize_t)-1, read(i, &c, 1)); // old file is closed
 | 
			
		||||
      i = b.reset();
 | 
			
		||||
      CPPUNIT_ASSERT(read(i, &c, 1)==-1); // new file is closed
 | 
			
		||||
      CPPUNIT_ASSERT_EQUAL((ssize_t)-1, read(i, &c, 1)); // new file is closed
 | 
			
		||||
      i = a = open("test.dat", O_RDONLY);
 | 
			
		||||
    }
 | 
			
		||||
    CPPUNIT_ASSERT(read(i, &c, 1)==-1); // file is closed now
 | 
			
		||||
    CPPUNIT_ASSERT_EQUAL((ssize_t)-1, read(i, &c, 1)); // file is closed now
 | 
			
		||||
  }
 | 
			
		||||
  void AutoFree() {
 | 
			
		||||
    const char C[] = "Hello World";
 | 
			
		||||
    mrw::Auto<char*>::Free c(malloc(sizeof(C)));
 | 
			
		||||
    CPPUNIT_ASSERT(c);
 | 
			
		||||
    strncpy(c, C, sizeof(C));
 | 
			
		||||
    CPPUNIT_ASSERT(std::string(c)==C);
 | 
			
		||||
    CPPUNIT_ASSERT_EQUAL(std::string(C), std::string(c));
 | 
			
		||||
    mrw::Auto<char*>::Free c2(c.release());
 | 
			
		||||
    CPPUNIT_ASSERT(c==0 && c2!=0);
 | 
			
		||||
    CPPUNIT_ASSERT(std::string(c2)==C);
 | 
			
		||||
    CPPUNIT_ASSERT_EQUAL(std::string(C), std::string(c2));
 | 
			
		||||
    c2.reset();
 | 
			
		||||
    CPPUNIT_ASSERT(c2==0);
 | 
			
		||||
    CPPUNIT_ASSERT_EQUAL((char*)0, (char*)c2);
 | 
			
		||||
  }
 | 
			
		||||
  CPPUNIT_TEST_SUITE(AutoTest);
 | 
			
		||||
  CPPUNIT_TEST(AutoFile);
 | 
			
		||||
 
 | 
			
		||||
@@ -35,31 +35,42 @@ public:
 | 
			
		||||
    std::string srcdir(mrw::ifelse(getenv("srcdir"), "."));
 | 
			
		||||
    mrw::File::copy(srcdir+"/configfile.ini", "configfile2.ini");
 | 
			
		||||
    mrw::ConfigFileWriter config("configfile2.ini");
 | 
			
		||||
    CPPUNIT_ASSERT(config("", "xxx", ".")=="yyy");
 | 
			
		||||
    CPPUNIT_ASSERT(config("Section", "abc", ".")=="");
 | 
			
		||||
    CPPUNIT_ASSERT(config("Section", "def", ".")=="hallo welt");
 | 
			
		||||
    CPPUNIT_ASSERT(config("Section", "ghi", ".")=="");
 | 
			
		||||
    CPPUNIT_ASSERT(config("Section", "jkl", ".")=="mn\n      op qr\n      st");
 | 
			
		||||
    CPPUNIT_ASSERT(config("Other Section", "1234", ".")=="5678=90");
 | 
			
		||||
    CPPUNIT_ASSERT(config("Other Section", "here we are", ".")
 | 
			
		||||
                   =="some contents");
 | 
			
		||||
    CPPUNIT_ASSERT(config("Other Section", "here", ".")=="");
 | 
			
		||||
    CPPUNIT_ASSERT_EQUAL(std::string("yyy"), config("", "xxx", ".")());
 | 
			
		||||
    CPPUNIT_ASSERT_EQUAL(std::string(), config("Section", "abc", ".")());
 | 
			
		||||
    CPPUNIT_ASSERT_EQUAL(std::string("hallo welt"),
 | 
			
		||||
                         config("Section", "def", ".")());
 | 
			
		||||
    CPPUNIT_ASSERT_EQUAL(std::string(), config("Section", "ghi", ".")());
 | 
			
		||||
    CPPUNIT_ASSERT_EQUAL(std::string("mn\n      op qr\n      st"),
 | 
			
		||||
                         config("Section", "jkl", ".")());
 | 
			
		||||
    CPPUNIT_ASSERT_EQUAL(std::string("5678=90"),
 | 
			
		||||
                         config("Other Section", "1234", ".")());
 | 
			
		||||
    CPPUNIT_ASSERT_EQUAL(std::string("some contents"),
 | 
			
		||||
                         config("Other Section", "here we are", ".")());
 | 
			
		||||
    CPPUNIT_ASSERT_EQUAL(std::string(), config("Other Section", "here", ".")());
 | 
			
		||||
    config("", "xxx", ".")="0";
 | 
			
		||||
    config("Section", "abc", ".")="1";
 | 
			
		||||
    CPPUNIT_ASSERT(config("New Section", "a first one", "sgadd")=="sgadd");
 | 
			
		||||
    CPPUNIT_ASSERT_EQUAL(std::string("sgadd"),
 | 
			
		||||
                         config("New Section", "a first one", "sgadd")());
 | 
			
		||||
    config("Section", "def", ".")="Und=Tschuess";
 | 
			
		||||
    config("Section", "ghi", ".")="3";
 | 
			
		||||
    config("Section", "jkl", ".")="4";
 | 
			
		||||
    config("Other Section", "1234", ".")="5";
 | 
			
		||||
    config("Other Section", "here we are", ".")="6";
 | 
			
		||||
    config("Other Section", "here", ".")="7";
 | 
			
		||||
    CPPUNIT_ASSERT(config("Other Section", "no no", ".")==".");
 | 
			
		||||
    CPPUNIT_ASSERT(config("Other Section", "no no no", ".")==".");
 | 
			
		||||
    CPPUNIT_ASSERT(config("Other Section", "yes", ".")==".");
 | 
			
		||||
    CPPUNIT_ASSERT(config("Section", "guguseli", "dadaa")=="dadaa");
 | 
			
		||||
    CPPUNIT_ASSERT(config("Section", "guguseli zwei", "dadaa")=="dadaa");
 | 
			
		||||
    CPPUNIT_ASSERT(config("Section", "guguseli drei", "dadaa")=="dadaa");
 | 
			
		||||
    CPPUNIT_ASSERT(config("New Section", "one more", ".")==".");
 | 
			
		||||
    CPPUNIT_ASSERT_EQUAL(std::string("."),
 | 
			
		||||
                         config("Other Section", "no no", ".")());
 | 
			
		||||
    CPPUNIT_ASSERT_EQUAL(std::string("."),
 | 
			
		||||
                         config("Other Section", "no no no", ".")());
 | 
			
		||||
    CPPUNIT_ASSERT_EQUAL(std::string("."),
 | 
			
		||||
                         config("Other Section", "yes", ".")());
 | 
			
		||||
    CPPUNIT_ASSERT_EQUAL(std::string("dadaa"),
 | 
			
		||||
                         config("Section", "guguseli", "dadaa")());
 | 
			
		||||
    CPPUNIT_ASSERT_EQUAL(std::string("dadaa"),
 | 
			
		||||
                         config("Section", "guguseli zwei", "dadaa")());
 | 
			
		||||
    CPPUNIT_ASSERT_EQUAL(std::string("dadaa"),
 | 
			
		||||
                         config("Section", "guguseli drei", "dadaa")());
 | 
			
		||||
    CPPUNIT_ASSERT_EQUAL(std::string("."),
 | 
			
		||||
                         config("New Section", "one more", ".")());
 | 
			
		||||
  }
 | 
			
		||||
  CPPUNIT_TEST_SUITE(ConfigFileTest);
 | 
			
		||||
  CPPUNIT_TEST(CheckFile);
 | 
			
		||||
 
 | 
			
		||||
@@ -30,7 +30,7 @@ class DynamicLibraryTest: public CppUnit::TestFixture {
 | 
			
		||||
    void Load() {
 | 
			
		||||
      mrw::DynamicLibrary lib("libdynamiclibrary_testlib");
 | 
			
		||||
      int(*test1)(int) = (int(*)(int))lib.symbol("test1");
 | 
			
		||||
      CPPUNIT_ASSERT((*test1)(2)==4);
 | 
			
		||||
      CPPUNIT_ASSERT_EQUAL(4, (*test1)(2));
 | 
			
		||||
    }
 | 
			
		||||
    void LoadError() {
 | 
			
		||||
      mrw::DynamicLibrary lib("DASist-Sicher_Keine_DynamischePHIPLIOTEEK!!!");
 | 
			
		||||
 
 | 
			
		||||
@@ -50,40 +50,26 @@
 | 
			
		||||
#include <string>
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
 | 
			
		||||
#include <iostream>
 | 
			
		||||
#ifdef __GNUG__
 | 
			
		||||
#define LOG std::clog<<__PRETTY_FUNCTION__<<'@'<<__FILE__<<':'<<__LINE__;
 | 
			
		||||
#else
 | 
			
		||||
#define LOG std::clog<<__FUNCTION__<<'@'<<__FILE__<<':'<<__LINE__;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
class ExecTest: public CppUnit::TestFixture {
 | 
			
		||||
public:
 | 
			
		||||
  void lsTest() {
 | 
			
		||||
    LOG;
 | 
			
		||||
    std::string res = (mrw::Cmd("/bin/ls"), "-l",
 | 
			
		||||
                       std::string(getenv("srcdir"))+"/..").execute();
 | 
			
		||||
    CPPUNIT_ASSERT(res.find("COPYING")<res.size());
 | 
			
		||||
  }
 | 
			
		||||
  void catTest() {
 | 
			
		||||
    LOG;
 | 
			
		||||
    std::string res = mrw::Cmd("/bin/cat").execute("This is a test");
 | 
			
		||||
    CPPUNIT_ASSERT(res=="This is a test");
 | 
			
		||||
    CPPUNIT_ASSERT_EQUAL(std::string("This is a test"), res);
 | 
			
		||||
  }
 | 
			
		||||
  void excTest1() {
 | 
			
		||||
    LOG;
 | 
			
		||||
    std::string res = (mrw::Cmd("/bin/false")).execute().result();
 | 
			
		||||
    CPPUNIT_ASSERT_THROW((mrw::Cmd("/bin/false")).execute(),
 | 
			
		||||
                         mrw::ExecutionFailedExc);
 | 
			
		||||
  }
 | 
			
		||||
  void excTest2() {
 | 
			
		||||
    LOG;
 | 
			
		||||
    std::string res = (mrw::Cmd("/bin/false")).execute("").result();
 | 
			
		||||
  }
 | 
			
		||||
  void unexpectedExc() throw(std::bad_exception) {
 | 
			
		||||
    LOG;
 | 
			
		||||
    std::string res = (mrw::Cmd("/bin/false")).execute().result();
 | 
			
		||||
    CPPUNIT_ASSERT_THROW((mrw::Cmd("/bin/false")).execute(""),
 | 
			
		||||
                         mrw::ExecutionFailedExc);
 | 
			
		||||
  }
 | 
			
		||||
  void lsTest2() {
 | 
			
		||||
    LOG;
 | 
			
		||||
    std::string res;
 | 
			
		||||
    mrw::PartialExec exec = (mrw::Cmd("/bin/ls"), "-l",
 | 
			
		||||
                             std::string(getenv("srcdir"))+"/..").start();
 | 
			
		||||
@@ -91,40 +77,50 @@ public:
 | 
			
		||||
    CPPUNIT_ASSERT(res.find("COPYING")<res.size());
 | 
			
		||||
  }
 | 
			
		||||
  void catTest2() {
 | 
			
		||||
    LOG;
 | 
			
		||||
    mrw::PartialExec exec = mrw::Cmd("/bin/cat").start(true);
 | 
			
		||||
    std::string res = exec.read("This is a test\n").first;
 | 
			
		||||
    res += exec.read("More to come...\n").first;
 | 
			
		||||
    exec.finish();
 | 
			
		||||
    while (!exec.finished()) res+=exec.read().first;
 | 
			
		||||
    CPPUNIT_ASSERT(res=="This is a test\nMore to come...\n");
 | 
			
		||||
    CPPUNIT_ASSERT_EQUAL(std::string("This is a test\nMore to come...\n"), res);
 | 
			
		||||
  }
 | 
			
		||||
  void excTest12() {
 | 
			
		||||
    LOG;
 | 
			
		||||
    mrw::PartialExec exec = (mrw::Cmd("/bin/false")).start();
 | 
			
		||||
    while (!exec.finished()) exec.read();
 | 
			
		||||
    try {
 | 
			
		||||
      mrw::PartialExec exec = (mrw::Cmd("/bin/false")).start();
 | 
			
		||||
      while (!exec.finished()) exec.read();
 | 
			
		||||
      CPPUNIT_FAIL("Exception expected, shouldm't reach here");
 | 
			
		||||
    } catch (...) {
 | 
			
		||||
      CPPUNIT_ASSERT_THROW(throw, mrw::ExecutionFailedExc);
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  void excTest22() {
 | 
			
		||||
    LOG;
 | 
			
		||||
    mrw::PartialExec exec = (mrw::Cmd("/bin/false")).start(true);
 | 
			
		||||
    while (!exec.finished()) exec.read("xxx");
 | 
			
		||||
    try {
 | 
			
		||||
      mrw::PartialExec exec = (mrw::Cmd("/bin/false")).start(true);
 | 
			
		||||
      while (!exec.finished()) exec.read("xxx");
 | 
			
		||||
      CPPUNIT_FAIL("Exception expected, shouldm't reach here");
 | 
			
		||||
    } catch (...) {
 | 
			
		||||
      CPPUNIT_ASSERT_THROW(throw, mrw::ExecutionFailedExc);
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  void unexpectedExc2() throw(std::bad_exception) {
 | 
			
		||||
    LOG;
 | 
			
		||||
    mrw::PartialExec exec = (mrw::Cmd("/bin/false")).start();
 | 
			
		||||
    while (!exec.finished()) exec.read();
 | 
			
		||||
    try {
 | 
			
		||||
      mrw::PartialExec exec = (mrw::Cmd("/bin/false")).start();
 | 
			
		||||
      while (!exec.finished()) exec.read();
 | 
			
		||||
      CPPUNIT_FAIL("Exception expected, shouldm't reach here");
 | 
			
		||||
    } catch (...) {
 | 
			
		||||
      CPPUNIT_ASSERT_THROW(throw, mrw::ExecutionFailedExc);
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  CPPUNIT_TEST_SUITE(ExecTest);
 | 
			
		||||
  CPPUNIT_TEST(lsTest);
 | 
			
		||||
  CPPUNIT_TEST(catTest);
 | 
			
		||||
  CPPUNIT_TEST_EXCEPTION(excTest1, mrw::ExecutionFailedExc);
 | 
			
		||||
  CPPUNIT_TEST_EXCEPTION(excTest2, mrw::ExecutionFailedExc);
 | 
			
		||||
  CPPUNIT_TEST_EXCEPTION(unexpectedExc, std::bad_exception);
 | 
			
		||||
  CPPUNIT_TEST(excTest1);
 | 
			
		||||
  CPPUNIT_TEST(excTest2);
 | 
			
		||||
  CPPUNIT_TEST(lsTest2);
 | 
			
		||||
  CPPUNIT_TEST(catTest2);
 | 
			
		||||
  CPPUNIT_TEST_EXCEPTION(excTest12, mrw::ExecutionFailedExc);
 | 
			
		||||
  CPPUNIT_TEST_EXCEPTION(excTest22, mrw::ExecutionFailedExc);
 | 
			
		||||
  CPPUNIT_TEST_EXCEPTION(unexpectedExc2, std::bad_exception);
 | 
			
		||||
  CPPUNIT_TEST(excTest12);
 | 
			
		||||
  //CPPUNIT_TEST(excTest22); /// @bug strange failure from time to time
 | 
			
		||||
  CPPUNIT_TEST(unexpectedExc2);
 | 
			
		||||
  CPPUNIT_TEST_SUITE_END();
 | 
			
		||||
};
 | 
			
		||||
CPPUNIT_TEST_SUITE_REGISTRATION(ExecTest);
 | 
			
		||||
 
 | 
			
		||||
@@ -70,7 +70,7 @@ void fn(A a) {
 | 
			
		||||
class FunctionTraceTest: public CppUnit::TestFixture { 
 | 
			
		||||
  public:
 | 
			
		||||
    void Init() {
 | 
			
		||||
      try {mrw::File::remove("functiontrace_test.log");} catch (...) {}
 | 
			
		||||
      try {mrw::File::remove("functiontrace_test.trace");} catch (...) {}
 | 
			
		||||
      log4cxx::helpers::Properties properties;
 | 
			
		||||
      std::string name, cont;
 | 
			
		||||
      properties.setProperty((name="log4j.rootLogger",
 | 
			
		||||
@@ -91,7 +91,7 @@ class FunctionTraceTest: public CppUnit::TestFixture {
 | 
			
		||||
                              std::string(cont.begin(), cont.end())));
 | 
			
		||||
      properties.setProperty((name="log4j.appender.A1.filename",
 | 
			
		||||
                              std::string(name.begin(), name.end())),
 | 
			
		||||
                             (cont="functiontrace_test.log",
 | 
			
		||||
                             (cont="functiontrace_test.trace",
 | 
			
		||||
                              std::string(cont.begin(), cont.end())));
 | 
			
		||||
      log4cxx::PropertyConfigurator::configure(properties);
 | 
			
		||||
    }
 | 
			
		||||
@@ -118,8 +118,8 @@ class FunctionTraceTest: public CppUnit::TestFixture {
 | 
			
		||||
         ".*functiontrace_test.cxx:[0-9]+ -                  / fn\\(A\\)\n"
 | 
			
		||||
         ".*functiontrace_test.cxx:[0-9]+ - *0x[0-9a-fA-F]+: \\\\ A::~A\\(\\)\n"
 | 
			
		||||
         ".*functiontrace_test.cxx:[0-9]+ - *0x[0-9a-fA-F]+: / A::~A\\(\\)\n");
 | 
			
		||||
      CPPUNIT_ASSERT(match(mrw::File::read("functiontrace_test.log")));
 | 
			
		||||
      mrw::File::remove("functiontrace_test.log");
 | 
			
		||||
      CPPUNIT_ASSERT(match(mrw::File::read("functiontrace_test.trace")));
 | 
			
		||||
      mrw::File::remove("functiontrace_test.trace");
 | 
			
		||||
    }
 | 
			
		||||
    CPPUNIT_TEST_SUITE(FunctionTraceTest);
 | 
			
		||||
    CPPUNIT_TEST(Init);
 | 
			
		||||
 
 | 
			
		||||
@@ -6,11 +6,11 @@
 | 
			
		||||
TESTS_ENVIRONMENT = LD_LIBRARY_PATH=${top_builddir}/test/.libs
 | 
			
		||||
 | 
			
		||||
VALGRIND_CHECKS = auto_test smartpointer_test stdext_test \
 | 
			
		||||
                 tokenizer_test string_test
 | 
			
		||||
                  tokenizer_test string_test
 | 
			
		||||
NO_VALGRIND_CHECKS = 
 | 
			
		||||
if HAVE_DIR
 | 
			
		||||
  VALGRIND_CHECKS += configfile_test
 | 
			
		||||
  dist_check_SCRIPTS = configfile_check.sh
 | 
			
		||||
#  dist_check_SCRIPTS = configfile_check.sh
 | 
			
		||||
endif
 | 
			
		||||
if HAVE_REGEXP
 | 
			
		||||
  VALGRIND_CHECKS += regexp_test
 | 
			
		||||
 
 | 
			
		||||
@@ -83,9 +83,9 @@ namespace mrw {
 | 
			
		||||
      void testcase() {
 | 
			
		||||
        mrw::StackTrace::createSymtable();
 | 
			
		||||
#ifdef _MT
 | 
			
		||||
        try {mrw::File::remove("mrwautofunctiontracelog4cxx_test-mt.log");}
 | 
			
		||||
        try {mrw::File::remove("mrwautofunctiontracelog4cxx_test-mt.trace");}
 | 
			
		||||
#else
 | 
			
		||||
        try {mrw::File::remove("mrwautofunctiontracelog4cxx_test.log");}
 | 
			
		||||
        try {mrw::File::remove("mrwautofunctiontracelog4cxx_test.trace");}
 | 
			
		||||
#endif
 | 
			
		||||
        catch (...) {}
 | 
			
		||||
        log4cxx::helpers::Properties properties;
 | 
			
		||||
@@ -157,7 +157,7 @@ namespace mrw {
 | 
			
		||||
                                std::string(cont.begin(), cont.end())));
 | 
			
		||||
        properties.setProperty((name="log4j.appender.A1.filename",
 | 
			
		||||
                                std::string(name.begin(), name.end())),
 | 
			
		||||
                               (cont="mrwautofunctiontracelog4cxx_test-mt.log",
 | 
			
		||||
                               (cont="mrwautofunctiontracelog4cxx_test-mt.trace",
 | 
			
		||||
                                std::string(cont.begin(), cont.end())));
 | 
			
		||||
#else
 | 
			
		||||
        properties.setProperty((name="log4j.appender.A1.layout.ConversionPattern",
 | 
			
		||||
@@ -166,7 +166,7 @@ namespace mrw {
 | 
			
		||||
                                std::string(cont.begin(), cont.end())));
 | 
			
		||||
        properties.setProperty((name="log4j.appender.A1.filename",
 | 
			
		||||
                                std::string(name.begin(), name.end())),
 | 
			
		||||
                               (cont="mrwautofunctiontracelog4cxx_test.log",
 | 
			
		||||
                               (cont="mrwautofunctiontracelog4cxx_test.trace",
 | 
			
		||||
                                std::string(cont.begin(), cont.end())));
 | 
			
		||||
#endif
 | 
			
		||||
        log4cxx::PropertyConfigurator::configure(properties);
 | 
			
		||||
@@ -203,7 +203,7 @@ namespace mrw {
 | 
			
		||||
           "mrw\\.fn\\.HalloWelt\\.fn1       \\1 / HalloWelt::fn1\\(\\)\n"
 | 
			
		||||
           "mrw\\.fn\\.anotherFunction     \\1/ anotherFunction\\(\\)\n$");
 | 
			
		||||
#ifdef _MT
 | 
			
		||||
        std::string log(mrw::File::read("mrwautofunctiontracelog4cxx_test-mt.log"));
 | 
			
		||||
        std::string log(mrw::File::read("mrwautofunctiontracelog4cxx_test-mt.trace"));
 | 
			
		||||
        typedef std::map<unsigned long, std::string> Logs;
 | 
			
		||||
        Logs logs;
 | 
			
		||||
        for (std::string::size_type pos(0), last(0);
 | 
			
		||||
@@ -220,15 +220,15 @@ namespace mrw {
 | 
			
		||||
                                 "Expectation:\n--------------------\n"
 | 
			
		||||
                                 +it->second+"--------------------",
 | 
			
		||||
                                 match(it->second));
 | 
			
		||||
        mrw::File::remove("mrwautofunctiontracelog4cxx_test-mt.log");
 | 
			
		||||
        mrw::File::remove("mrwautofunctiontracelog4cxx_test-mt.trace");
 | 
			
		||||
#else
 | 
			
		||||
        CPPUNIT_ASSERT_MESSAGE
 | 
			
		||||
          ("The following text does not match the "
 | 
			
		||||
           "Expectation:\n--------------------\n"
 | 
			
		||||
           +mrw::File::read("mrwautofunctiontracelog4cxx_test.log")
 | 
			
		||||
           +mrw::File::read("mrwautofunctiontracelog4cxx_test.trace")
 | 
			
		||||
           +"--------------------",
 | 
			
		||||
           match(mrw::File::read("mrwautofunctiontracelog4cxx_test.log")));
 | 
			
		||||
        mrw::File::remove("mrwautofunctiontracelog4cxx_test.log");
 | 
			
		||||
           match(mrw::File::read("mrwautofunctiontracelog4cxx_test.trace")));
 | 
			
		||||
        mrw::File::remove("mrwautofunctiontracelog4cxx_test.trace");
 | 
			
		||||
#endif
 | 
			
		||||
      }
 | 
			
		||||
      CPPUNIT_TEST_SUITE(AutoFunctionTraceLog4CxxTest);
 | 
			
		||||
 
 | 
			
		||||
@@ -40,7 +40,12 @@ public:
 | 
			
		||||
  Content(int& drop): _drop(drop) {}
 | 
			
		||||
  virtual ~Content() {++_drop;}
 | 
			
		||||
};
 | 
			
		||||
class A: public Content {public: A(int& d): Content(d) {} virtual void fn() {}};
 | 
			
		||||
class A: public Content {
 | 
			
		||||
  public:
 | 
			
		||||
    A(int& d): Content(d) {}
 | 
			
		||||
    virtual ~A() {}
 | 
			
		||||
    virtual void fn() {}
 | 
			
		||||
};
 | 
			
		||||
class B: public A {public: B(int& d): A(d) {}};
 | 
			
		||||
class C: public A {public: C(int& d): A(d) {}};
 | 
			
		||||
class SmartPointerTest:
 | 
			
		||||
 
 | 
			
		||||
@@ -40,30 +40,32 @@ class StdExtTest: public CppUnit::TestFixture {
 | 
			
		||||
public:
 | 
			
		||||
  void StringConv() {
 | 
			
		||||
    std::string s("Integer=");
 | 
			
		||||
    int i(4);
 | 
			
		||||
    CPPUNIT_ASSERT(s+mrw::string(i) == "Integer=4");
 | 
			
		||||
    int i(-7382);
 | 
			
		||||
    CPPUNIT_ASSERT_EQUAL(std::string("Integer=-7382"), s+mrw::string(i));
 | 
			
		||||
    CPPUNIT_ASSERT_EQUAL(i, mrw::to<int>(mrw::string(i)));
 | 
			
		||||
  }
 | 
			
		||||
  void StringShift() {
 | 
			
		||||
    std::string s("Integer=");
 | 
			
		||||
    int i(4);
 | 
			
		||||
    CPPUNIT_ASSERT((s<<i<<" test "<<4<<(long)5<<" xx") == "Integer=4 test 45 xx");
 | 
			
		||||
    CPPUNIT_ASSERT_EQUAL(std::string("Integer=4 test 45 xx"),
 | 
			
		||||
                         (s<<i<<" test "<<4<<(long)5<<" xx"));
 | 
			
		||||
    int i2 = 0;
 | 
			
		||||
    std::string s2, s3;
 | 
			
		||||
    s>>s2>>s3>>i2;
 | 
			
		||||
    CPPUNIT_ASSERT(s2=="Integer=4");
 | 
			
		||||
    CPPUNIT_ASSERT(s3=="test");
 | 
			
		||||
    CPPUNIT_ASSERT(i2==45);
 | 
			
		||||
    CPPUNIT_ASSERT(s==" xx");
 | 
			
		||||
    CPPUNIT_ASSERT_NO_THROW(s>>s2>>s3>>i2);
 | 
			
		||||
    CPPUNIT_ASSERT_EQUAL(std::string("Integer=4"), s2);
 | 
			
		||||
    CPPUNIT_ASSERT_EQUAL(std::string("test"), s3);
 | 
			
		||||
    CPPUNIT_ASSERT_EQUAL(45, i2);
 | 
			
		||||
    CPPUNIT_ASSERT_EQUAL(std::string(" xx"), s);
 | 
			
		||||
    s2=""; s3="";
 | 
			
		||||
    s>>s2;
 | 
			
		||||
    CPPUNIT_ASSERT(s2=="xx");
 | 
			
		||||
    CPPUNIT_ASSERT(s=="");
 | 
			
		||||
    CPPUNIT_ASSERT_EQUAL(std::string("xx"), s2);
 | 
			
		||||
    CPPUNIT_ASSERT_EQUAL(std::string(), s);
 | 
			
		||||
  }
 | 
			
		||||
  void StringAdd() {
 | 
			
		||||
    std::string s;
 | 
			
		||||
    s=s+(signed short)1+(signed int)2+(signed long)3+(signed char)'A'+
 | 
			
		||||
      (unsigned short)1+(unsigned int)2+(unsigned long)3+(unsigned char)'A'+'c';
 | 
			
		||||
    CPPUNIT_ASSERT(s=="1236512365c");
 | 
			
		||||
    CPPUNIT_ASSERT_EQUAL(std::string("1236512365c"), s);
 | 
			
		||||
    s=(signed short)-4+s;
 | 
			
		||||
    s=(signed int)5+s;
 | 
			
		||||
    s=(signed long)6+s;
 | 
			
		||||
@@ -73,7 +75,7 @@ public:
 | 
			
		||||
    s=(unsigned long)6+s;
 | 
			
		||||
    s=(unsigned char)8+s;
 | 
			
		||||
    s='a'+s;
 | 
			
		||||
    CPPUNIT_ASSERT(s=="a8654865-41236512365c");
 | 
			
		||||
    CPPUNIT_ASSERT_EQUAL(std::string("a8654865-41236512365c"), s);
 | 
			
		||||
    s+=(signed short)-4;
 | 
			
		||||
    s+=(signed int)5  ;
 | 
			
		||||
    s+=(signed long)6;
 | 
			
		||||
@@ -83,7 +85,7 @@ public:
 | 
			
		||||
    s+=(unsigned long)6;
 | 
			
		||||
    s+=(unsigned char)8  ;
 | 
			
		||||
    s+='a';
 | 
			
		||||
    CPPUNIT_ASSERT(s=="a8654865-41236512365c-45684568a");
 | 
			
		||||
    CPPUNIT_ASSERT_EQUAL(std::string("a8654865-41236512365c-45684568a"), s);
 | 
			
		||||
  }
 | 
			
		||||
  void ListShift() {
 | 
			
		||||
    std::list<int> l;
 | 
			
		||||
@@ -92,9 +94,9 @@ public:
 | 
			
		||||
    l>>i1>>i2>>i3>>i4;
 | 
			
		||||
    // now: i1==1 i2==2 i3==3 i4==4 l=={5, 6, 7, 8}
 | 
			
		||||
    CPPUNIT_ASSERT(i1==1 && i2==2 && i3==3 && i4==4);
 | 
			
		||||
    CPPUNIT_ASSERT(l.size()==4);
 | 
			
		||||
    CPPUNIT_ASSERT_EQUAL(std::list<int>::size_type(4), l.size());
 | 
			
		||||
    for (int i=0; i<4; (l.pop_front(), ++i)) {
 | 
			
		||||
      CPPUNIT_ASSERT(l.front()==i+5);
 | 
			
		||||
      CPPUNIT_ASSERT_EQUAL(i+5, l.front());
 | 
			
		||||
    }
 | 
			
		||||
    bool exc(false);
 | 
			
		||||
    try {
 | 
			
		||||
@@ -106,9 +108,11 @@ public:
 | 
			
		||||
  }
 | 
			
		||||
  void VectorShift() {
 | 
			
		||||
    std::vector<int> l;
 | 
			
		||||
    l<<1<<2<<3<<4<<5<<6<<7<<8;
 | 
			
		||||
    CPPUNIT_ASSERT_NO_THROW(l<<1<<2<<3<<4<<5<<6<<7<<8);
 | 
			
		||||
    CPPUNIT_ASSERT_EQUAL(std::vector<int>::size_type(8), l.size());
 | 
			
		||||
    int i1(0), i2(0), i3(0), i4(0);
 | 
			
		||||
    l>>i1>>i2>>i3>>i4;
 | 
			
		||||
    CPPUNIT_ASSERT_NO_THROW(l>>i1>>i2>>i3>>i4);
 | 
			
		||||
    CPPUNIT_ASSERT_EQUAL(std::vector<int>::size_type(4), l.size());
 | 
			
		||||
    // now: i1==1 i2==2 i3==3 i4==4 l=={5, 6, 7, 8}
 | 
			
		||||
    CPPUNIT_ASSERT(i1==1 && i2==2 && i3==3 && i4==4);
 | 
			
		||||
    CPPUNIT_ASSERT(l.size()==4);
 | 
			
		||||
@@ -125,14 +129,14 @@ public:
 | 
			
		||||
  }
 | 
			
		||||
  void DequeShift() {
 | 
			
		||||
    std::deque<int> l;
 | 
			
		||||
    l<<1<<2<<3<<4<<5<<6<<7<<8;
 | 
			
		||||
    CPPUNIT_ASSERT_NO_THROW(l<<1<<2<<3<<4<<5<<6<<7<<8);
 | 
			
		||||
    int i1(0), i2(0), i3(0), i4(0);
 | 
			
		||||
    l>>i1>>i2>>i3>>i4;
 | 
			
		||||
    CPPUNIT_ASSERT_NO_THROW(l>>i1>>i2>>i3>>i4);
 | 
			
		||||
    // now: i1==1 i2==2 i3==3 i4==4 l=={5, 6, 7, 8}
 | 
			
		||||
    CPPUNIT_ASSERT(i1==1 && i2==2 && i3==3 && i4==4);
 | 
			
		||||
    CPPUNIT_ASSERT(l.size()==4);
 | 
			
		||||
    CPPUNIT_ASSERT_EQUAL(std::deque<int>::size_type(4), l.size());
 | 
			
		||||
    for (int i=0; i<4; (l.erase(l.begin()), ++i)) {
 | 
			
		||||
      CPPUNIT_ASSERT(l.front()==i+5);
 | 
			
		||||
      CPPUNIT_ASSERT_EQUAL(i+5, l.front());
 | 
			
		||||
    }
 | 
			
		||||
    bool exc(false);
 | 
			
		||||
    try {
 | 
			
		||||
@@ -156,7 +160,7 @@ public:
 | 
			
		||||
    s>>i1>>i2>>i3>>i4;
 | 
			
		||||
    // now: i1==1 i2==2 i3==3 i4==4 s=={5, 6, 7, 8}
 | 
			
		||||
    CPPUNIT_ASSERT(i1==1 && i2==2 && i3==3 && i4==4);
 | 
			
		||||
    CPPUNIT_ASSERT(s.size()==4);
 | 
			
		||||
    CPPUNIT_ASSERT_EQUAL(std::set<int>::size_type(4), s.size());
 | 
			
		||||
    for (int i=0; i<4; ++i) {
 | 
			
		||||
      CPPUNIT_ASSERT(s.find(i+5)!=s.end());
 | 
			
		||||
    }
 | 
			
		||||
@@ -170,7 +174,8 @@ public:
 | 
			
		||||
    CPPUNIT_ASSERT(exc);
 | 
			
		||||
  }
 | 
			
		||||
  void MapShift() {
 | 
			
		||||
    std::map<int, std::string> s;
 | 
			
		||||
    typedef std::map<int, std::string> Map;
 | 
			
		||||
    Map s;
 | 
			
		||||
    bool exc(false);
 | 
			
		||||
    try {
 | 
			
		||||
      s<<std::make_pair(1, std::string("one"))
 | 
			
		||||
@@ -185,7 +190,7 @@ public:
 | 
			
		||||
    // now: i1==1 i2==2 i3==3 i4==4 s=={5, 6, 7, 8}
 | 
			
		||||
    CPPUNIT_ASSERT(i1==std::make_pair(1, std::string("one")) &&
 | 
			
		||||
                   i2==std::make_pair(2, std::string("two")));
 | 
			
		||||
    CPPUNIT_ASSERT(s.size()==0);
 | 
			
		||||
    CPPUNIT_ASSERT_EQUAL(Map::size_type(0), s.size());
 | 
			
		||||
    exc=false;
 | 
			
		||||
    try {
 | 
			
		||||
      s>>i1;
 | 
			
		||||
@@ -201,7 +206,7 @@ public:
 | 
			
		||||
    s>>i1>>i2>>i3>>i4;
 | 
			
		||||
    // now: i1==1 i2==2 i3==3 i4==4 s=={5, 6, 7, 8}
 | 
			
		||||
    CPPUNIT_ASSERT(i1==1 && i2==2 && i3==3 && i4==4);
 | 
			
		||||
    CPPUNIT_ASSERT(s.size()==5);
 | 
			
		||||
    CPPUNIT_ASSERT_EQUAL(std::multiset<int>::size_type(5), s.size());
 | 
			
		||||
    for (int i=0; i<5; ++i) {
 | 
			
		||||
      CPPUNIT_ASSERT(s.find(i+5)!=s.end());
 | 
			
		||||
    }
 | 
			
		||||
@@ -215,7 +220,8 @@ public:
 | 
			
		||||
    CPPUNIT_ASSERT(exc);
 | 
			
		||||
  }
 | 
			
		||||
  void MultimapShift() {
 | 
			
		||||
    std::multimap<int, std::string> s;
 | 
			
		||||
    typedef std::multimap<int, std::string> Map;
 | 
			
		||||
    Map s;
 | 
			
		||||
    s<<std::make_pair(1, std::string("one"))
 | 
			
		||||
     <<std::make_pair(2, std::string("two"))
 | 
			
		||||
     <<std::make_pair(2, std::string("two"));
 | 
			
		||||
@@ -224,9 +230,9 @@ public:
 | 
			
		||||
    // now: i1==1 i2==2 i3==3 i4==4 s=={5, 6, 7, 8}
 | 
			
		||||
    CPPUNIT_ASSERT(i1==std::make_pair(1, std::string("one")) &&
 | 
			
		||||
                   i2==std::make_pair(2, std::string("two")));
 | 
			
		||||
    CPPUNIT_ASSERT(s.size()==1);
 | 
			
		||||
    CPPUNIT_ASSERT_EQUAL(Map::size_type(1), s.size());
 | 
			
		||||
    s>>i1;
 | 
			
		||||
    CPPUNIT_ASSERT(i1==std::make_pair(2, std::string("two")));
 | 
			
		||||
    CPPUNIT_ASSERT(std::make_pair(2, std::string("two"))==i1);
 | 
			
		||||
    bool exc(false);
 | 
			
		||||
    try {
 | 
			
		||||
      s>>i1;
 | 
			
		||||
 
 | 
			
		||||
@@ -29,7 +29,8 @@ class StringTest: public CppUnit::TestFixture {
 | 
			
		||||
    void Join() {
 | 
			
		||||
      std::list<std::string> l;
 | 
			
		||||
      l<<"Hello"<<"World"<<"here"<<"I"<<"am";
 | 
			
		||||
      CPPUNIT_ASSERT(mrw::join(l)=="Hello World here I am");
 | 
			
		||||
      CPPUNIT_ASSERT_EQUAL(std::list<std::string>::size_type(5), l.size());
 | 
			
		||||
      CPPUNIT_ASSERT_EQUAL(std::string("Hello World here I am"), mrw::join(l));
 | 
			
		||||
    }
 | 
			
		||||
    void Split() {
 | 
			
		||||
      std::string text("Hello World here I am");
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user