1313#include < clockmock.h>
1414#include < audioplayerfactorymock.h>
1515#include < audioplayermock.h>
16+ #include < monitorhandlermock.h>
1617#include < thread>
1718
1819#include " ../common.h"
@@ -38,10 +39,11 @@ class RedrawMock
3839 MOCK_METHOD (void , redraw, ());
3940};
4041
41- class AddMonitorMock
42+ class AddRemoveMonitorMock
4243{
4344 public:
4445 MOCK_METHOD (void , monitorAdded, (Monitor *));
46+ MOCK_METHOD (void , monitorRemoved, (Monitor *, IMonitorHandler *));
4547};
4648
4749TEST (EngineTest, Clock)
@@ -65,11 +67,36 @@ TEST(EngineTest, Clear)
6567 auto section = std::make_shared<TestSection>();
6668 engine.registerSection (section);
6769
70+ auto monitor1 = std::make_shared<Monitor>(" " , " " );
71+ auto monitor2 = std::make_shared<Monitor>(" " , " " );
72+ auto monitor3 = std::make_shared<Monitor>(" " , " " );
73+ auto monitor4 = std::make_shared<Monitor>(" " , " " );
74+
75+ MonitorHandlerMock iface1, iface3, iface4;
76+ EXPECT_CALL (iface1, init);
77+ EXPECT_CALL (iface3, init);
78+ EXPECT_CALL (iface4, init);
79+ monitor1->setInterface (&iface1);
80+ monitor3->setInterface (&iface3);
81+ monitor4->setInterface (&iface4);
82+
6883 engine.clear ();
6984 ASSERT_TRUE (engine.targets ().empty ());
7085 ASSERT_TRUE (engine.broadcasts ().empty ());
7186 ASSERT_TRUE (engine.monitors ().empty ());
7287 ASSERT_TRUE (engine.registeredSections ().empty ());
88+
89+ AddRemoveMonitorMock removeMonitorMock;
90+ auto handler = std::bind (&AddRemoveMonitorMock::monitorRemoved, &removeMonitorMock, std::placeholders::_1, std::placeholders::_2);
91+ engine.setRemoveMonitorHandler (std::function<void (Monitor *, IMonitorHandler *)>(handler));
92+ engine.setMonitors ({ monitor1, monitor2, monitor3, monitor4 });
93+
94+ EXPECT_CALL (removeMonitorMock, monitorRemoved (monitor1.get (), &iface1));
95+ EXPECT_CALL (removeMonitorMock, monitorRemoved (monitor2.get (), nullptr ));
96+ EXPECT_CALL (removeMonitorMock, monitorRemoved (monitor3.get (), &iface3));
97+ EXPECT_CALL (removeMonitorMock, monitorRemoved (monitor4.get (), &iface4));
98+ engine.clear ();
99+ ASSERT_TRUE (engine.monitors ().empty ());
73100}
74101
75102TEST (EngineTest, IsRunning)
@@ -1154,8 +1181,8 @@ TEST(EngineTest, Monitors)
11541181 engine.setMonitors ({ m1, m2, m3 });
11551182 ASSERT_EQ (engine.monitors (), std::vector<std::shared_ptr<Monitor>>({ m1, m2, m3 }));
11561183
1157- AddMonitorMock addMonitorMock;
1158- auto handler = std::bind (&AddMonitorMock ::monitorAdded, &addMonitorMock, std::placeholders::_1);
1184+ AddRemoveMonitorMock addMonitorMock;
1185+ auto handler = std::bind (&AddRemoveMonitorMock ::monitorAdded, &addMonitorMock, std::placeholders::_1);
11591186 engine.setAddMonitorHandler (std::function<void (Monitor *)>(handler));
11601187 engine.setMonitors ({});
11611188
@@ -1264,8 +1291,8 @@ TEST(EngineTest, CreateMissingMonitors)
12641291
12651292 {
12661293 Engine engine;
1267- AddMonitorMock addMonitorMock;
1268- auto handler = std::bind (&AddMonitorMock ::monitorAdded, &addMonitorMock, std::placeholders::_1);
1294+ AddRemoveMonitorMock addMonitorMock;
1295+ auto handler = std::bind (&AddRemoveMonitorMock ::monitorAdded, &addMonitorMock, std::placeholders::_1);
12691296 engine.setAddMonitorHandler (std::function<void (Monitor *)>(handler));
12701297
12711298 EXPECT_CALL (addMonitorMock, monitorAdded (m1.get ()));
0 commit comments