diff -Burp dejagnu-1.4.4/testsuite/libdejagnu/unit.cc dejagnu-1.4.4-pm/testsuite/libdejagnu/unit.cc --- dejagnu-1.4.4/testsuite/libdejagnu/unit.cc 2003-08-17 03:33:06.000000000 +0200 +++ dejagnu-1.4.4-pm/testsuite/libdejagnu/unit.cc 2007-10-03 18:31:03.000000000 +0200 @@ -7,6 +7,7 @@ #include #include #include +#include using namespace std; @@ -49,12 +50,8 @@ main (int argc, char *argv[]) { // Replace the output buffer for cout, so we can examine it to // see what was displayed. Otherwise, there is no way we can test // the logging functions completely. - char bbuuff[5120]; -#ifdef __STDC_HOSTED__ - cout.rdbuf()->pubsetbuf(bbuuff, 5120); -#else - cout.rdbuf()->setbuf(bbuuff, 5120); -#endif + stringstream stream; + streambuf * buf = cout.rdbuf(stream.rdbuf()); testClass1.tname = "testType1"; testClass1.tnum = 1; @@ -65,53 +62,59 @@ main (int argc, char *argv[]) { // Test the pass message test.pass ("bogus pass message for testing"); + cout.flush(); outstate = os2; - if (strncmp(bbuuff, "\tPAS: bogus pass message", 22) == 0) { + if (strncmp(stream.str().c_str(), "\tPAS: bogus pass message", 22) == 0) { runtest.pass ("Pass message"); } else { runtest.fail ("Pass message"); } + stream.str(""); // Test the fail message outstate = os1; test.fail ("bogus fail message for testing"); cout.flush(); outstate = os2; - if (strncmp(bbuuff, "\tFAI: bogus fail message", 22) == 0) { + if (strncmp(stream.str().c_str(), "\tFAI: bogus fail message", 22) == 0) { runtest.pass ("Fail message"); } else { runtest.fail ("Fail message"); } + stream.str(""); // Test the untested message outstate = os1; test.untested ("bogus untested message for testing"); cout.flush(); outstate = os2; - if (strncmp(bbuuff, "\tUNT: bogus untested message", 21) == 0) { + if (strncmp(stream.str().c_str(), "\tUNT: bogus untested message", 21) == 0) { runtest.pass ("Untested message"); } else { runtest.fail ("Untested message"); } + stream.str(""); // Test the unresolved message outstate = os1; test.unresolved ("bogus unresolved message for testing"); cout.flush(); outstate = os2; - if (strncmp(bbuuff, "\tUNR: bogus unresolved message", 21) == 0) { + if (strncmp(stream.str().c_str(), "\tUNR: bogus unresolved message", 21) == 0) { runtest.pass ("Unresolved message"); } else { runtest.fail ("Unresolved message"); } + stream.str(""); // Make sure we got everything in the totals regcomp (®ex_pat, "\r\n\t#passed.*#failed.*#untested.*#unresolved", REG_NOSUB|REG_NEWLINE); - if (regexec (®ex_pat, bbuuff, 0, (regmatch_t *)0, 0)) { + if (regexec (®ex_pat, stream.str().c_str(), 0, (regmatch_t *)0, 0)) { runtest.pass ("Totals message"); } else { runtest.fail ("Totals message"); } -} - + stream.str(""); + cout.rdbuf(buf); +}