barrier_closure_unittest.cc 925 B

123456789101112131415161718192021222324252627282930313233343536
  1. // Copyright 2013 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. #include "butil/barrier_closure.h"
  5. #include "butil/bind.h"
  6. #include <gtest/gtest.h>
  7. namespace {
  8. void Increment(int* count) { (*count)++; }
  9. TEST(BarrierClosureTest, RunImmediatelyForZeroClosures) {
  10. int count = 0;
  11. butil::Closure doneClosure(butil::Bind(&Increment, butil::Unretained(&count)));
  12. butil::Closure barrierClosure = butil::BarrierClosure(0, doneClosure);
  13. EXPECT_EQ(1, count);
  14. }
  15. TEST(BarrierClosureTest, RunAfterNumClosures) {
  16. int count = 0;
  17. butil::Closure doneClosure(butil::Bind(&Increment, butil::Unretained(&count)));
  18. butil::Closure barrierClosure = butil::BarrierClosure(2, doneClosure);
  19. EXPECT_EQ(0, count);
  20. barrierClosure.Run();
  21. EXPECT_EQ(0, count);
  22. barrierClosure.Run();
  23. EXPECT_EQ(1, count);
  24. }
  25. } // namespace