1// Copyright (c) 2012 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#include "base/test/test_pending_task.h" 6 7#include "base/bind.h" 8#include "base/debug/trace_event.h" 9#include "testing/gmock/include/gmock/gmock.h" 10#include "testing/gtest/include/gtest/gtest-spi.h" 11#include "testing/gtest/include/gtest/gtest.h" 12 13namespace { 14 15TEST(TestPendingTaskTest, TraceSupport) { 16 base::TestPendingTask task; 17 18 // Check that TestPendingTask can be sent to the trace subsystem. 19 TRACE_EVENT1("test", "TestPendingTask::TraceSupport", "task", task.AsValue()); 20 21 // Just a basic check that the trace output has *something* in it. 22 EXPECT_THAT(task.AsValue()->ToString(), ::testing::HasSubstr("post_time")); 23} 24 25TEST(TestPendingTaskTest, ToString) { 26 base::TestPendingTask task; 27 28 // Just a basic check that ToString has *something* in it. 29 EXPECT_THAT(task.ToString(), ::testing::StartsWith("TestPendingTask(")); 30} 31 32TEST(TestPendingTaskTest, GTestPrettyPrint) { 33 base::TestPendingTask task; 34 35 // Check that gtest is calling the TestPendingTask's PrintTo method. 36 EXPECT_THAT(::testing::PrintToString(task), 37 ::testing::StartsWith("TestPendingTask(")); 38 39 // Check that pretty printing works with the gtest iostreams operator. 40 EXPECT_NONFATAL_FAILURE(EXPECT_TRUE(false) << task, "TestPendingTask("); 41} 42 43TEST(TestPendingTaskTest, ShouldRunBefore) { 44 base::TestPendingTask task_first; 45 task_first.delay = base::TimeDelta::FromMilliseconds(1); 46 base::TestPendingTask task_after; 47 task_after.delay = base::TimeDelta::FromMilliseconds(2); 48 49 EXPECT_FALSE(task_after.ShouldRunBefore(task_first)) 50 << task_after << ".ShouldRunBefore(" << task_first << ")\n"; 51 EXPECT_TRUE(task_first.ShouldRunBefore(task_after)) 52 << task_first << ".ShouldRunBefore(" << task_after << ")\n"; 53} 54 55} // namespace 56