diff options
Diffstat (limited to 'base/thread_unittest.cc')
-rw-r--r-- | base/thread_unittest.cc | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/base/thread_unittest.cc b/base/thread_unittest.cc index 085df71..083456d 100644 --- a/base/thread_unittest.cc +++ b/base/thread_unittest.cc @@ -37,6 +37,20 @@ class SleepSome : public Task { int msec_; }; +class SleepInsideInitThread : public Thread { + public: + SleepInsideInitThread() : Thread("none") { init_called_ = false; } + virtual ~SleepInsideInitThread() { } + + virtual void Init() { + PlatformThread::Sleep(1000); + init_called_ = true; + } + bool InitCalled() { return init_called_; } + private: + bool init_called_; +}; + } // namespace TEST_F(ThreadTest, Restart) { @@ -107,3 +121,12 @@ TEST_F(ThreadTest, ThreadName) { EXPECT_TRUE(a.Start()); EXPECT_EQ("ThreadName", a.thread_name()); } + +// Make sure we can't use a thread between Start() and Init(). +TEST_F(ThreadTest, SleepInsideInit) { + SleepInsideInitThread t; + EXPECT_FALSE(t.InitCalled()); + t.Start(); + EXPECT_TRUE(t.InitCalled()); +} + |