// Copyright 2013 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/barrier_closure.h" #include "base/functional/bind.h" #include "base/functional/callback.h" #include "base/functional/callback_helpers.h" #include "base/memory/raw_ptr.h" #include "base/test/bind.h" #include "base/test/gtest_util.h" #include "testing/gtest/include/gtest/gtest.h" namespace { TEST(BarrierClosureTest, RunImmediatelyForZeroClosures) { … } TEST(BarrierClosureTest, ChecksIfCalledForZeroClosures) { … } TEST(BarrierClosureTest, RunAfterNumClosures) { … } class DestructionIndicator { … }; TEST(BarrierClosureTest, ReleasesDoneClosureWhenDone) { … } // Tests a case when |done_closure| resets a |barrier_closure|. // |barrier_closure| is a RepeatingClosure holding the |done_closure|. // |done_closure| holds a pointer back to the |barrier_closure|. When // |barrier_closure| is Run() it calls ResetBarrierClosure() which erases the // |barrier_closure| while still inside of its Run(). The Run() implementation // (in base::BarrierClosure) must not try use itself after executing // ResetBarrierClosure() or this test would crash inside Run(). TEST(BarrierClosureTest, KeepingClosureAliveUntilDone) { … } } // namespace