| // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "base/time.h" |
| #include "base/waitable_event.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| |
| using base::TimeDelta; |
| using base::WaitableEvent; |
| |
| namespace { |
| typedef testing::Test WaitableEventTest; |
| } |
| |
| TEST(WaitableEventTest, ManualBasics) { |
| WaitableEvent event(true, false); |
| |
| EXPECT_FALSE(event.IsSignaled()); |
| |
| event.Signal(); |
| EXPECT_TRUE(event.IsSignaled()); |
| EXPECT_TRUE(event.IsSignaled()); |
| |
| event.Reset(); |
| EXPECT_FALSE(event.IsSignaled()); |
| EXPECT_FALSE(event.TimedWait(TimeDelta::FromMilliseconds(10))); |
| |
| event.Signal(); |
| EXPECT_TRUE(event.Wait()); |
| EXPECT_TRUE(event.TimedWait(TimeDelta::FromMilliseconds(10))); |
| } |
| |
| TEST(WaitableEventTest, AutoBasics) { |
| WaitableEvent event(false, false); |
| |
| EXPECT_FALSE(event.IsSignaled()); |
| |
| event.Signal(); |
| EXPECT_TRUE(event.IsSignaled()); |
| EXPECT_FALSE(event.IsSignaled()); |
| |
| event.Reset(); |
| EXPECT_FALSE(event.IsSignaled()); |
| EXPECT_FALSE(event.TimedWait(TimeDelta::FromMilliseconds(10))); |
| |
| event.Signal(); |
| EXPECT_TRUE(event.Wait()); |
| EXPECT_FALSE(event.TimedWait(TimeDelta::FromMilliseconds(10))); |
| |
| event.Signal(); |
| EXPECT_TRUE(event.TimedWait(TimeDelta::FromMilliseconds(10))); |
| } |
| |