diff --git a/test/frame_generator_capturer_unittest.cc b/test/frame_generator_capturer_unittest.cc index 7f910118ea..1434474c3f 100644 --- a/test/frame_generator_capturer_unittest.cc +++ b/test/frame_generator_capturer_unittest.cc @@ -38,7 +38,7 @@ TEST(FrameGeneratorCapturerTest, CreateFromConfig) { capturer->AddOrUpdateSink(&mock_sink, rtc::VideoSinkWants()); capturer->Start(); EXPECT_CALL(mock_sink, OnFrame(Property(&VideoFrame::width, Eq(300)))) - .Times(20); + .Times(21); time.AdvanceTime(TimeDelta::seconds(1)); } } // namespace test diff --git a/test/time_controller/simulated_time_controller.cc b/test/time_controller/simulated_time_controller.cc index 4c8a1e1938..7c3d7bdbd5 100644 --- a/test/time_controller/simulated_time_controller.cc +++ b/test/time_controller/simulated_time_controller.cc @@ -432,6 +432,9 @@ void GlobalSimulatedTimeController::AdvanceTime(TimeDelta duration) { sim_clock_.AdvanceTimeMicroseconds(delta.us()); global_clock_.AdvanceTime(delta); } + // After time has been simulated up until |target_time| we also need to run + // tasks meant to be executed at |target_time|. + impl_.RunReadyRunners(); } } // namespace webrtc diff --git a/test/time_controller/simulated_time_controller_unittest.cc b/test/time_controller/simulated_time_controller_unittest.cc index be640dd44e..469d2d7482 100644 --- a/test/time_controller/simulated_time_controller_unittest.cc +++ b/test/time_controller/simulated_time_controller_unittest.cc @@ -76,6 +76,7 @@ TEST(SimulatedTimeControllerTest, TaskCanStopItself) { time_simulation.AdvanceTime(TimeDelta::ms(10)); EXPECT_EQ(counter.load(), 1); } + TEST(SimulatedTimeControllerTest, Example) { class ObjectOnTaskQueue { public: @@ -110,4 +111,17 @@ TEST(SimulatedTimeControllerTest, Example) { }; task_queue.PostTask(Destructor{std::move(object)}); } + +TEST(SimulatedTimeControllerTest, DelayTaskRunOnTime) { + GlobalSimulatedTimeController time_simulation(kStartTime); + rtc::TaskQueue task_queue( + time_simulation.GetTaskQueueFactory()->CreateTaskQueue( + "TestQueue", TaskQueueFactory::Priority::NORMAL)); + + bool delay_task_executed = false; + task_queue.PostDelayedTask([&] { delay_task_executed = true; }, 10); + + time_simulation.AdvanceTime(TimeDelta::ms(10)); + EXPECT_TRUE(delay_task_executed); +} } // namespace webrtc