1 //===-- PredicateTest.cpp ---------------------------------------*- C++ -*-===// 2 // 3 // The LLVM Compiler Infrastructure 4 // 5 // This file is distributed under the University of Illinois Open Source 6 // License. See LICENSE.TXT for details. 7 // 8 //===----------------------------------------------------------------------===// 9 10 #include "lldb/Utility/Predicate.h" 11 #include "gtest/gtest.h" 12 #include <thread> 13 14 using namespace lldb_private; 15 16 TEST(Predicate, WaitForValueEqualTo) { 17 Predicate<int> P(0); 18 EXPECT_TRUE(P.WaitForValueEqualTo(0)); 19 EXPECT_FALSE(P.WaitForValueEqualTo(1, std::chrono::milliseconds(10))); 20 21 std::thread Setter([&P] { 22 std::this_thread::sleep_for(std::chrono::milliseconds(100)); 23 P.SetValue(1, eBroadcastAlways); 24 }); 25 EXPECT_TRUE(P.WaitForValueEqualTo(1)); 26 Setter.join(); 27 } 28 29 TEST(Predicate, WaitForValueNotEqualTo) { 30 Predicate<int> P(0); 31 EXPECT_EQ(0, P.WaitForValueNotEqualTo(1)); 32 EXPECT_EQ(llvm::None, 33 P.WaitForValueNotEqualTo(0, std::chrono::milliseconds(10))); 34 } 35