// Copyright 2021 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "base/task/delayed_task_handle.h" #include "base/memory/raw_ptr.h" #include "base/test/gtest_util.h" #include "testing/gtest/include/gtest/gtest.h" namespace base { namespace { // A non-working delegate that allows the testing of DelayedTaskHandle. class TestDelegate : public DelayedTaskHandle::Delegate { … }; } // namespace // Tests that a default-constructed handle is invalid. TEST(DelayedTaskHandleTest, DefaultConstructor) { … } // Tests that creating a handle with an invalid delegate will DCHECK. TEST(DelayedTaskHandleTest, RequiresValidDelegateOnConstruction) { … } // Tests that calling CancelTask() on the handle will call CancelTask() on the // delegate and invalidate it. TEST(DelayedTaskHandleTest, CancelTask) { … } // Tests that calling CancelTask() on a handle with no delegate will no-op. TEST(DelayedTaskHandleTest, CancelTaskNoDelegate) { … } // Tests that calling CancelTask() on a handle with an invalid delegate doesn't // crash and keeps the handle invalid. TEST(DelayedTaskHandleTest, CancelTaskInvalidDelegate) { … } // Tests that invalidating the delegate will also invalidate the handle. TEST(DelayedTaskHandleTest, InvalidateDelegate) { … } // Tests that destroying a valid handle will DCHECK. TEST(DelayedTaskHandleTest, InvalidOnDestuction) { … } // Tests the move-constructor. TEST(DelayedTaskHandleTest, MoveConstructor) { … } // Tests the move-assignment. TEST(DelayedTaskHandleTest, MoveAssignment) { … } // Tests that assigning to a valid handle will DCHECK. TEST(DelayedTaskHandleTest, AssignToValidHandle) { … } } // namespace base