| Index: remoting/jingle_glue/jingle_thread_unittest.cc
|
| diff --git a/remoting/jingle_glue/jingle_thread_unittest.cc b/remoting/jingle_glue/jingle_thread_unittest.cc
|
| index a29b69c28d2f6efe9c09fbcd12f9f7915447d861..bebb16d1b7e61b4c60efcfff51bc88e942ce8711 100644
|
| --- a/remoting/jingle_glue/jingle_thread_unittest.cc
|
| +++ b/remoting/jingle_glue/jingle_thread_unittest.cc
|
| @@ -3,6 +3,8 @@
|
| // found in the LICENSE file.
|
|
|
| #include "base/message_loop.h"
|
| +#include "base/time.h"
|
| +#include "base/waitable_event.h"
|
| #include "remoting/jingle_glue/jingle_thread.h"
|
| #include "testing/gmock/include/gmock/gmock.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
| @@ -14,6 +16,13 @@ class MockTask : public Task {
|
| MOCK_METHOD0(Run, void());
|
| };
|
|
|
| +namespace {
|
| +// Delay used to test delayed tasks. Shouldn't be too big, so that we don't
|
| +// slow down the test, yet, should be big enough to be measurable.
|
| +int kDelayMs = 50; // 0.05 s.
|
| +int kDelayTimeoutMs = 10000; // 10 s.
|
| +} // namespace
|
| +
|
| TEST(JingleThreadTest, PostTask) {
|
| JingleThread thread;
|
| MockTask* task = new MockTask();
|
| @@ -24,4 +33,24 @@ TEST(JingleThreadTest, PostTask) {
|
| thread.Stop();
|
| }
|
|
|
| +ACTION_P(SignalEvent, event) {
|
| + event->Signal();
|
| +}
|
| +
|
| +TEST(JingleThreadTest, PostDelayedTask) {
|
| + JingleThread thread;
|
| + MockTask* task = new MockTask();
|
| + base::WaitableEvent event(true, false);
|
| + EXPECT_CALL(*task, Run()).WillOnce(SignalEvent(&event));
|
| +
|
| + thread.Start();
|
| + base::Time start = base::Time::Now();
|
| + thread.message_loop()->PostDelayedTask(FROM_HERE, task, kDelayMs);
|
| + event.TimedWait(base::TimeDelta::FromMilliseconds(kDelayTimeoutMs));
|
| + base::Time end = base::Time::Now();
|
| + thread.Stop();
|
| +
|
| + EXPECT_GT((end - start).InMillisecondsRoundedUp(), kDelayMs);
|
| +}
|
| +
|
| } // namespace remoting
|
|
|