From 6a3d2769e5a73fe73e6c44bf2862abc03be5fae9 Mon Sep 17 00:00:00 2001 From: Myles Watson Date: Fri, 7 Jun 2019 08:57:16 -0700 Subject: [PATCH] OS: Update Handler unittest Test: bluetooth_test_gd Change-Id: I14bb8c8852d8749e9c531ac18f18a39c92dae922 --- gd/os/linux_generic/handler_unittest.cc | 35 ++++++++++++++++++++------------- 1 file changed, 21 insertions(+), 14 deletions(-) diff --git a/gd/os/linux_generic/handler_unittest.cc b/gd/os/linux_generic/handler_unittest.cc index 7e0488f77..43bfbe319 100644 --- a/gd/os/linux_generic/handler_unittest.cc +++ b/gd/os/linux_generic/handler_unittest.cc @@ -17,9 +17,12 @@ #include "os/handler.h" #include + +#include #include #include "gtest/gtest.h" +#include "os/log.h" namespace bluetooth { namespace os { @@ -44,27 +47,31 @@ TEST_F(HandlerTest, empty) {} TEST_F(HandlerTest, post_task_invoked) { int val = 0; - Closure closure = [&val]() { val++; }; + std::promise closure_ran; + Closure closure = [&val, &closure_ran]() { + val++; + closure_ran.set_value(); + }; handler_->Post(closure); - std::this_thread::sleep_for(std::chrono::milliseconds(10)); - EXPECT_EQ(val, 1); + closure_ran.get_future().wait(); + ASSERT_EQ(val, 1); } TEST_F(HandlerTest, post_task_cleared) { int val = 0; - Closure closure = [&val]() { + std::promise closure_started; + std::promise closure_can_continue; + auto can_continue_future = closure_can_continue.get_future(); + handler_->Post([&val, &can_continue_future, &closure_started]() { + closure_started.set_value(); val++; - std::this_thread::sleep_for(std::chrono::milliseconds(5)); - }; - handler_->Post(std::move(closure)); - closure = []() { - ASSERT_TRUE(false); - }; - std::this_thread::sleep_for(std::chrono::milliseconds(5)); - handler_->Post(std::move(closure)); + can_continue_future.wait(); + }); + handler_->Post([]() { ASSERT_TRUE(false); }); + closure_started.get_future().wait(); handler_->Clear(); - std::this_thread::sleep_for(std::chrono::milliseconds(10)); - EXPECT_EQ(val, 1); + closure_can_continue.set_value(); + ASSERT_EQ(val, 1); } } // namespace -- 2.11.0