77#include < QTest>
88
99namespace {
10- QtMsgType g_capturedType{};
11- QString g_capturedMessage{};
10+ QtMsgType& capturedType ()
11+ {
12+ static QtMsgType t{};
13+ return t;
14+ }
15+ QString& capturedMessage ()
16+ {
17+ static QString m;
18+ return m;
19+ }
1220
1321void captureHandler (QtMsgType type, const QMessageLogContext&, const QString& msg)
1422{
15- g_capturedType = type;
16- g_capturedMessage = msg;
23+ capturedType () = type;
24+ capturedMessage () = msg;
1725}
1826} // namespace
1927
@@ -34,56 +42,62 @@ void TestModbusPoll::cleanup()
3442
3543void TestModbusPoll::diagnosticDebugLevel ()
3644{
37- g_capturedType = QtMsgType{};
38- g_capturedMessage = QString{};
45+ capturedType () = QtMsgType{};
46+ capturedMessage () = QString{};
3947 QtMessageHandler previous = qInstallMessageHandler (captureHandler);
40- bool invoked =
41- QMetaObject::invokeMethod (_pModbusPoll, " onAdapterDiagnostic" , Q_ARG (QString, QStringLiteral (" debug" )),
42- Q_ARG (QString, QStringLiteral (" polling started" )));
43- QVERIFY (invoked);
48+ _pModbusPoll->onAdapterDiagnostic (QStringLiteral (" debug" ), QStringLiteral (" polling started" ));
4449 qInstallMessageHandler (previous);
4550
46- QCOMPARE (g_capturedType , QtDebugMsg);
47- QVERIFY (g_capturedMessage .contains (QStringLiteral (" polling started" )));
51+ QCOMPARE (capturedType () , QtDebugMsg);
52+ QVERIFY (capturedMessage () .contains (QStringLiteral (" polling started" )));
4853}
4954
5055void TestModbusPoll::diagnosticInfoLevel ()
5156{
52- g_capturedType = QtMsgType{};
53- g_capturedMessage = QString{};
57+ capturedType () = QtMsgType{};
58+ capturedMessage () = QString{};
5459 QtMessageHandler previous = qInstallMessageHandler (captureHandler);
55- QMetaObject::invokeMethod (_pModbusPoll, " onAdapterDiagnostic" , Q_ARG (QString, QStringLiteral (" info" )),
56- Q_ARG (QString, QStringLiteral (" session active" )));
60+ _pModbusPoll->onAdapterDiagnostic (QStringLiteral (" info" ), QStringLiteral (" session active" ));
5761 qInstallMessageHandler (previous);
5862
59- QCOMPARE (g_capturedType , QtInfoMsg);
60- QVERIFY (g_capturedMessage .contains (QStringLiteral (" session active" )));
63+ QCOMPARE (capturedType () , QtInfoMsg);
64+ QVERIFY (capturedMessage () .contains (QStringLiteral (" session active" )));
6165}
6266
6367void TestModbusPoll::diagnosticWarningLevel ()
6468{
65- g_capturedType = QtMsgType{};
66- g_capturedMessage = QString{};
69+ capturedType () = QtMsgType{};
70+ capturedMessage () = QString{};
71+ QtMessageHandler previous = qInstallMessageHandler (captureHandler);
72+ _pModbusPoll->onAdapterDiagnostic (QStringLiteral (" warning" ), QStringLiteral (" register read failed" ));
73+ qInstallMessageHandler (previous);
74+
75+ QCOMPARE (capturedType (), QtWarningMsg);
76+ QVERIFY (capturedMessage ().contains (QStringLiteral (" register read failed" )));
77+ }
78+
79+ void TestModbusPoll::diagnosticErrorLevel ()
80+ {
81+ capturedType () = QtMsgType{};
82+ capturedMessage () = QString{};
6783 QtMessageHandler previous = qInstallMessageHandler (captureHandler);
68- QMetaObject::invokeMethod (_pModbusPoll, " onAdapterDiagnostic" , Q_ARG (QString, QStringLiteral (" warning" )),
69- Q_ARG (QString, QStringLiteral (" register read failed" )));
84+ _pModbusPoll->onAdapterDiagnostic (QStringLiteral (" error" ), QStringLiteral (" fatal adapter fault" ));
7085 qInstallMessageHandler (previous);
7186
72- QCOMPARE (g_capturedType, QtWarningMsg );
73- QVERIFY (g_capturedMessage .contains (QStringLiteral (" register read failed " )));
87+ QCOMPARE (capturedType (), QtCriticalMsg );
88+ QVERIFY (capturedMessage () .contains (QStringLiteral (" fatal adapter fault " )));
7489}
7590
7691void TestModbusPoll::diagnosticUnknownLevel ()
7792{
78- g_capturedType = QtMsgType{};
79- g_capturedMessage = QString{};
93+ capturedType () = QtMsgType{};
94+ capturedMessage () = QString{};
8095 QtMessageHandler previous = qInstallMessageHandler (captureHandler);
81- QMetaObject::invokeMethod (_pModbusPoll, " onAdapterDiagnostic" , Q_ARG (QString, QStringLiteral (" critical" )),
82- Q_ARG (QString, QStringLiteral (" unexpected error" )));
96+ _pModbusPoll->onAdapterDiagnostic (QStringLiteral (" critical" ), QStringLiteral (" unexpected error" ));
8397 qInstallMessageHandler (previous);
8498
85- QCOMPARE (g_capturedType , QtWarningMsg);
86- QVERIFY (g_capturedMessage .contains (QStringLiteral (" unknown diagnostic level" )));
99+ QCOMPARE (capturedType () , QtWarningMsg);
100+ QVERIFY (capturedMessage () .contains (QStringLiteral (" unknown diagnostic level" )));
87101}
88102
89103QTEST_GUILESS_MAIN (TestModbusPoll)
0 commit comments