@@ -116,7 +116,7 @@ class MainNodeTest : public ::testing::Test
116116 mScreenData (mMutex ),
117117 mPlayerData {0 , mDreamcastControllerObserver , mScreenData , mClock , mUsbFileSystem },
118118 mMapleBus (),
119- mPrioritizedTxScheduler (std::make_shared<PrioritizedTxScheduler>(DreamcastMainNode:: MAX_PRIORITY )),
119+ mPrioritizedTxScheduler (std::make_shared<PrioritizedTxScheduler>(PrioritizedTxScheduler:: PRIORITY_COUNT - 1 )),
120120 mDreamcastMainNode (mMapleBus , mPlayerData , mPrioritizedTxScheduler )
121121 {}
122122
@@ -265,9 +265,9 @@ TEST_F(MainNodeTest, peripheralDisconnect)
265265 // The task will process events, and it will return read failure
266266 MapleBusInterface::Status status;
267267 status.phase = MapleBusInterface::Phase::READ_FAILED ;
268- EXPECT_CALL (mMapleBus , processEvents (1000000 ))
269- .Times (1 )
270- .WillOnce (Return (status));
268+ EXPECT_CALL (mMapleBus , processEvents (_ ))
269+ .Times (3 )
270+ .WillRepeatedly (Return (status));
271271 // All sub node's task functions will be called with the current time
272272 EXPECT_CALL (*mDreamcastMainNode .mMockedSubNodes [0 ], mainPeripheralDisconnected ()).Times (1 );
273273 EXPECT_CALL (*mDreamcastMainNode .mMockedSubNodes [1 ], mainPeripheralDisconnected ()).Times (1 );
@@ -280,9 +280,25 @@ TEST_F(MainNodeTest, peripheralDisconnect)
280280 EXPECT_CALL (*mDreamcastMainNode .mMockedSubNodes [2 ], task (1000000 )).Times (1 );
281281 EXPECT_CALL (*mDreamcastMainNode .mMockedSubNodes [3 ], task (1000000 )).Times (1 );
282282 EXPECT_CALL (*mDreamcastMainNode .mMockedSubNodes [4 ], task (1000000 )).Times (1 );
283+ EXPECT_CALL (*mDreamcastMainNode .mMockedSubNodes [0 ], task (1000001 )).Times (1 );
284+ EXPECT_CALL (*mDreamcastMainNode .mMockedSubNodes [1 ], task (1000001 )).Times (1 );
285+ EXPECT_CALL (*mDreamcastMainNode .mMockedSubNodes [2 ], task (1000001 )).Times (1 );
286+ EXPECT_CALL (*mDreamcastMainNode .mMockedSubNodes [3 ], task (1000001 )).Times (1 );
287+ EXPECT_CALL (*mDreamcastMainNode .mMockedSubNodes [4 ], task (1000001 )).Times (1 );
288+ EXPECT_CALL (*mDreamcastMainNode .mMockedSubNodes [0 ], task (1000002 )).Times (1 );
289+ EXPECT_CALL (*mDreamcastMainNode .mMockedSubNodes [1 ], task (1000002 )).Times (1 );
290+ EXPECT_CALL (*mDreamcastMainNode .mMockedSubNodes [2 ], task (1000002 )).Times (1 );
291+ EXPECT_CALL (*mDreamcastMainNode .mMockedSubNodes [3 ], task (1000002 )).Times (1 );
292+ EXPECT_CALL (*mDreamcastMainNode .mMockedSubNodes [4 ], task (1000002 )).Times (1 );
293+ // The peripheral will get to run task twice before it disconnects on the 3rd failure
294+ EXPECT_CALL (*mockedDreamcastPeripheral, task (1000000 )).Times (1 );
295+ EXPECT_CALL (*mockedDreamcastPeripheral, task (1000001 )).Times (1 );
283296
284297 // --- TEST EXECUTION ---
285298 mDreamcastMainNode .task (1000000 );
299+ mDreamcastMainNode .task (1000001 );
300+ // Disconnection happens on 3rd failure
301+ mDreamcastMainNode .task (1000002 );
286302
287303 // --- EXPECTATIONS ---
288304 // All peripherals removed
0 commit comments