Index: base/task_runner_util_unittest.cc |
diff --git a/base/task_runner_util_unittest.cc b/base/task_runner_util_unittest.cc |
index 4c5882629f44d9aafa5c6a6da254a604b9891d60..daed77016c3f0e69b035842ed508de8e7cd80f0d 100644 |
--- a/base/task_runner_util_unittest.cc |
+++ b/base/task_runner_util_unittest.cc |
@@ -20,9 +20,28 @@ void StoreValue(int* destination, int value) { |
*destination = value; |
} |
+int g_foo_destruct_count = 0; |
+ |
+struct Foo { |
+ ~Foo() { |
+ ++g_foo_destruct_count; |
+ } |
+}; |
+ |
+scoped_ptr<Foo> CreateFoo() { |
+ return scoped_ptr<Foo>(new Foo); |
+} |
+ |
+void ExpectFoo(scoped_ptr<Foo> foo) { |
+ EXPECT_TRUE(foo.get()); |
+ scoped_ptr<Foo> local_foo(foo.Pass()); |
+ EXPECT_TRUE(local_foo.get()); |
+ EXPECT_FALSE(foo.get()); |
+} |
+ |
} // namespace |
-TEST(TaskRunnerHelpersTest, PostAndReplyWithStatus) { |
+TEST(TaskRunnerHelpersTest, PostTaskAndReplyWithResult) { |
MessageLoop message_loop; |
int result = 0; |
@@ -37,4 +56,20 @@ TEST(TaskRunnerHelpersTest, PostAndReplyWithStatus) { |
EXPECT_EQ(42, result); |
} |
+TEST(TaskRunnerHelpersTest, PostTaskAndReplyWithResultPassed) { |
+ g_foo_destruct_count = 0; |
+ |
+ MessageLoop message_loop; |
+ |
+ PostTaskAndReplyWithResult( |
+ message_loop.message_loop_proxy(), |
+ FROM_HERE, |
+ Bind(&CreateFoo), |
+ Bind(&ExpectFoo)); |
+ |
+ message_loop.RunAllPending(); |
+ |
+ EXPECT_EQ(1, g_foo_destruct_count); |
+} |
+ |
} // namespace base |