Gui: test for ILoggerBlocker
This commit is contained in:
@@ -101,6 +101,11 @@ class ConsoleTestCase(unittest.TestCase):
|
||||
def tearDown(self):
|
||||
pass
|
||||
|
||||
def testILoggerBlocker(self):
|
||||
if FreeCAD.GuiUp:
|
||||
import QtUnitGui
|
||||
QtUnitGui.testILoggerBlocker()
|
||||
|
||||
class ParameterTestCase(unittest.TestCase):
|
||||
def setUp(self):
|
||||
self.TestPar = FreeCAD.ParamGet("System parameter:Test")
|
||||
|
||||
@@ -27,8 +27,87 @@
|
||||
|
||||
#include <Gui/Language/Translator.h>
|
||||
#include <Base/Console.h>
|
||||
#include <Base/ConsoleObserver.h>
|
||||
#include <Base/Interpreter.h>
|
||||
|
||||
class ILoggerBlockerTest : public Base::ILogger
|
||||
{
|
||||
public:
|
||||
virtual ~ILoggerBlockerTest() {Base::Console().DetachObserver(this);}
|
||||
|
||||
virtual const char *Name() {return "ILoggerBlockerTest";}
|
||||
|
||||
void flush() {buffer.str("");buffer.clear();}
|
||||
|
||||
void SendLog(const std::string& msg, Base::LogStyle level){
|
||||
(void) msg;
|
||||
switch(level){
|
||||
case Base::LogStyle::Warning:
|
||||
buffer << "WRN";
|
||||
break;
|
||||
case Base::LogStyle::Message:
|
||||
buffer << "MSG";
|
||||
break;
|
||||
case Base::LogStyle::Error:
|
||||
buffer << "ERR";
|
||||
break;
|
||||
case Base::LogStyle::Log:
|
||||
buffer << "LOG";
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void runSingleTest(const char* comment, std::string expectedResult) {
|
||||
Base::Console().Log(comment);
|
||||
flush();
|
||||
Base::Console().Log("LOG");
|
||||
Base::Console().Message("MSG");
|
||||
Base::Console().Warning("WRN");
|
||||
Base::Console().Error("ERR");
|
||||
if (buffer.str() != expectedResult)
|
||||
throw Py::RuntimeError("ILoggerTest: " + buffer.str() + " different from " + expectedResult);
|
||||
};
|
||||
|
||||
void runTest()
|
||||
{
|
||||
runSingleTest("Print all message types", "LOGMSGWRNERR");
|
||||
{
|
||||
Base::ILoggerBlocker blocker("ILoggerBlockerTest");
|
||||
runSingleTest("All types blocked", "");
|
||||
}
|
||||
runSingleTest("Print all", "LOGMSGWRNERR");
|
||||
{
|
||||
Base::ILoggerBlocker blocker("ILoggerBlockerTest", Base::ConsoleSingleton::MsgType_Err | Base::ConsoleSingleton::MsgType_Wrn);
|
||||
runSingleTest("Error & Warning blocked", "LOGMSG");
|
||||
}
|
||||
runSingleTest("Print all", "LOGMSGWRNERR");
|
||||
{
|
||||
Base::ILoggerBlocker blocker("ILoggerBlockerTest", Base::ConsoleSingleton::MsgType_Log | Base::ConsoleSingleton::MsgType_Txt);
|
||||
runSingleTest("Log & Message blocked", "WRNERR");
|
||||
}
|
||||
runSingleTest("Print all", "LOGMSGWRNERR");
|
||||
{
|
||||
Base::ILoggerBlocker blocker("ILoggerBlockerTest", Base::ConsoleSingleton::MsgType_Err);
|
||||
runSingleTest("Nested : Error blocked", "LOGMSGWRN");
|
||||
{
|
||||
Base::ILoggerBlocker blocker2("ILoggerBlockerTest", Base::ConsoleSingleton::MsgType_Err | Base::ConsoleSingleton::MsgType_Wrn);
|
||||
runSingleTest("Nested : Warning blocked + Error (from nesting) + Error (redundancy)", "LOGMSG");
|
||||
}
|
||||
runSingleTest("Nested : Error still blocked", "LOGMSGWRN");
|
||||
}
|
||||
runSingleTest("Print all", "LOGMSGWRNERR");
|
||||
{
|
||||
Base::ILoggerBlocker blocker("ILoggerBlockerTest");
|
||||
Base::Console().SetEnabledMsgType("ILoggerBlockerTest", Base::ConsoleSingleton::MsgType_Log, true);
|
||||
runSingleTest("Log is enabled but a warning is triggered in debug mode", "LOG");
|
||||
}
|
||||
runSingleTest("Print all", "LOGMSGWRNERR");
|
||||
};
|
||||
|
||||
private:
|
||||
std::ostringstream buffer;
|
||||
};
|
||||
|
||||
|
||||
namespace TestGui {
|
||||
class Module : public Py::ExtensionModule<Module>
|
||||
@@ -41,6 +120,7 @@ public:
|
||||
add_varargs_method("UnitTest",&Module::new_UnitTest,"UnitTest");
|
||||
add_varargs_method("setTest",&Module::setTest,"setTest");
|
||||
add_varargs_method("addTest",&Module::addTest,"addTest");
|
||||
add_varargs_method("testILoggerBlocker",&Module::testILoggerBlocker,"testILoggerBlocker");
|
||||
initialize("This module is the QtUnitGui module"); // register with Python
|
||||
}
|
||||
|
||||
@@ -79,6 +159,13 @@ private:
|
||||
dlg->raise();
|
||||
return Py::None();
|
||||
}
|
||||
Py::Object testILoggerBlocker(const Py::Tuple& args) {
|
||||
(void) args;
|
||||
ILoggerBlockerTest iltest;
|
||||
Base::Console().AttachObserver(static_cast<Base::ILogger *>(&iltest));
|
||||
iltest.runTest();
|
||||
return Py::None();
|
||||
}
|
||||
};
|
||||
|
||||
PyObject* initModule()
|
||||
|
||||
Reference in New Issue
Block a user