void LogTestCase::Component() { wxLogMessage("Message"); CPPUNIT_ASSERT_EQUAL( wxLOG_COMPONENT, m_log->GetInfo(wxLOG_Message).component ); // completely disable logging for this component wxLog::SetComponentLevel("test/ignore", wxLOG_FatalError); // but enable it for one of its subcomponents wxLog::SetComponentLevel("test/ignore/not", wxLOG_Max); #undef wxLOG_COMPONENT #define wxLOG_COMPONENT "test/ignore" // this shouldn't be output as this component is ignored wxLogError("Error"); CPPUNIT_ASSERT_EQUAL( "", m_log->GetLog(wxLOG_Error) ); // and so are its subcomponents #undef wxLOG_COMPONENT #define wxLOG_COMPONENT "test/ignore/sub/subsub" wxLogError("Error"); CPPUNIT_ASSERT_EQUAL( "", m_log->GetLog(wxLOG_Error) ); // but one subcomponent is not #undef wxLOG_COMPONENT #define wxLOG_COMPONENT "test/ignore/not" wxLogError("Error"); CPPUNIT_ASSERT_EQUAL( "Error", m_log->GetLog(wxLOG_Error) ); // restore the original value #undef wxLOG_COMPONENT #define wxLOG_COMPONENT "test" }
void LogTestCase::Null() { { wxLogNull noLog; wxLogWarning("%s warning", "Not important"); CPPUNIT_ASSERT_EQUAL( "", m_log->GetLog(wxLOG_Warning) ); } wxLogWarning("%s warning", "Important"); CPPUNIT_ASSERT_EQUAL( "Important warning", m_log->GetLog(wxLOG_Warning) ); }
void LogTestCase::Functions() { wxLogMessage("Message"); CPPUNIT_ASSERT_EQUAL( "Message", m_log->GetLog(wxLOG_Message) ); wxLogError("Error %d", 17); CPPUNIT_ASSERT_EQUAL( "Error 17", m_log->GetLog(wxLOG_Error) ); wxLogDebug("Debug"); #if wxDEBUG_LEVEL CPPUNIT_ASSERT_EQUAL( "Debug", m_log->GetLog(wxLOG_Debug) ); #else CPPUNIT_ASSERT_EQUAL( "", m_log->GetLog(wxLOG_Debug) ); #endif }
void LogTestCase::Trace() { // we use wxLogTrace() or wxVLogTrace() from inside TraceTest() // interchangeably here, it shouldn't make any difference wxLogTrace(TEST_MASK, "Not shown"); CPPUNIT_ASSERT_EQUAL( "", m_log->GetLog(wxLOG_Trace) ); wxLog::AddTraceMask(TEST_MASK); TraceTest("Shown"); CPPUNIT_ASSERT_EQUAL( wxString::Format("(%s) Shown", TEST_MASK), m_log->GetLog(wxLOG_Trace) ); wxLog::RemoveTraceMask(TEST_MASK); m_log->Clear(); TraceTest("Not shown again"); CPPUNIT_ASSERT_EQUAL( "", m_log->GetLog(wxLOG_Trace) ); }
void LogTestCase::SysError() { wxString s; wxLogSysError(17, "Error"); CPPUNIT_ASSERT( m_log->GetLog(wxLOG_Error).StartsWith("Error (", &s) ); WX_ASSERT_MESSAGE( ("Error message is \"(%s\"", s), s.StartsWith("error 17") ); // The last error code seems to be set somewhere in MinGW CRT as its value // is just not what we expect (ERROR_INVALID_PARAMETER instead of 0 and 0 // instead of ERROR_FILE_NOT_FOUND) so exclude the tests which rely on last // error being preserved for this compiler. #ifndef __MINGW32__ wxLogSysError("Success"); CPPUNIT_ASSERT( m_log->GetLog(wxLOG_Error).StartsWith("Success (", &s) ); WX_ASSERT_MESSAGE( ("Error message is \"(%s\"", s), s.StartsWith("error 0") ); wxOpen("no-such-file", 0, 0); wxLogSysError("Not found"); CPPUNIT_ASSERT( m_log->GetLog(wxLOG_Error).StartsWith("Not found (", &s) ); WX_ASSERT_MESSAGE( ("Error message is \"(%s\"", s), s.StartsWith("error 2") ); #endif // __MINGW32__ }
void LogTestCase::SysError() { wxString s; wxLogSysError(17, "Error"); CPPUNIT_ASSERT( m_log->GetLog(wxLOG_Error).StartsWith("Error (", &s) ); WX_ASSERT_MESSAGE( ("Error message is \"(%s\"", s), s.StartsWith("error 17") ); // Try to ensure that the system error is 0. #ifdef __WINDOWS__ ::SetLastError(0); #else errno = 0; #endif wxLogSysError("Success"); CPPUNIT_ASSERT( m_log->GetLog(wxLOG_Error).StartsWith("Success (", &s) ); WX_ASSERT_MESSAGE( ("Error message is \"(%s\"", s), s.StartsWith("error 0") ); wxOpen("no-such-file", 0, 0); wxLogSysError("Not found"); CPPUNIT_ASSERT( m_log->GetLog(wxLOG_Error).StartsWith("Not found (", &s) ); WX_ASSERT_MESSAGE( ("Error message is \"(%s\"", s), s.StartsWith("error 2") ); }
void LogTestCase::NoWarnings() { // Check that "else" branch is [not] taken as expected and that this code // compiles without warnings (which used to not be the case). bool b = wxFalse; if ( b ) wxLogError("Not logged"); else b = !b; CPPUNIT_ASSERT( b ); if ( b ) wxLogError("If"); else CPPUNIT_FAIL("Should not be taken"); CPPUNIT_ASSERT_EQUAL( "If", m_log->GetLog(wxLOG_Error) ); }