base_enabled_provider_unittest.cc 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. // Copyright 2021 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 "ash/quick_pair/feature_status_tracker/base_enabled_provider.h"
  5. #include <memory>
  6. #include "base/callback.h"
  7. #include "base/callback_helpers.h"
  8. #include "base/test/mock_callback.h"
  9. #include "testing/gtest/include/gtest/gtest.h"
  10. namespace {
  11. class TestEnabledProvider : public ash::quick_pair::BaseEnabledProvider {
  12. public:
  13. using BaseEnabledProvider::SetEnabledAndInvokeCallback;
  14. };
  15. } // namespace
  16. namespace ash {
  17. namespace quick_pair {
  18. class BaseEnabledProviderTest : public testing::Test {
  19. void SetUp() override { provider_ = std::make_unique<TestEnabledProvider>(); }
  20. protected:
  21. std::unique_ptr<TestEnabledProvider> provider_;
  22. };
  23. TEST_F(BaseEnabledProviderTest, IsInitiallyDisabled) {
  24. EXPECT_FALSE(provider_->is_enabled());
  25. }
  26. TEST_F(BaseEnabledProviderTest, CanSetEnabledWithoutACallback) {
  27. provider_->SetEnabledAndInvokeCallback(true);
  28. EXPECT_TRUE(provider_->is_enabled());
  29. }
  30. TEST_F(BaseEnabledProviderTest, CallbackInvoked) {
  31. base::MockCallback<base::RepeatingCallback<void(bool)>> callback;
  32. EXPECT_CALL(callback, Run(true));
  33. provider_->SetCallback(callback.Get());
  34. provider_->SetEnabledAndInvokeCallback(true);
  35. }
  36. TEST_F(BaseEnabledProviderTest, CallbackInvokedMultipleTimes) {
  37. base::MockCallback<base::RepeatingCallback<void(bool)>> callback;
  38. EXPECT_CALL(callback, Run(true)).Times(2);
  39. EXPECT_CALL(callback, Run(false));
  40. provider_->SetCallback(callback.Get());
  41. provider_->SetEnabledAndInvokeCallback(true);
  42. provider_->SetEnabledAndInvokeCallback(false);
  43. provider_->SetEnabledAndInvokeCallback(true);
  44. }
  45. TEST_F(BaseEnabledProviderTest, CallbackNotInvokedForSameValue) {
  46. base::MockCallback<base::RepeatingCallback<void(bool)>> callback;
  47. EXPECT_CALL(callback, Run).Times(0);
  48. provider_->SetCallback(callback.Get());
  49. provider_->SetEnabledAndInvokeCallback(false);
  50. }
  51. TEST_F(BaseEnabledProviderTest, ReplacesCallback) {
  52. base::MockCallback<base::RepeatingCallback<void(bool)>> callback;
  53. EXPECT_CALL(callback, Run(true));
  54. provider_->SetCallback(callback.Get());
  55. provider_->SetEnabledAndInvokeCallback(true);
  56. provider_->SetCallback(base::DoNothing());
  57. EXPECT_CALL(callback, Run).Times(0);
  58. provider_->SetEnabledAndInvokeCallback(false);
  59. }
  60. } // namespace quick_pair
  61. } // namespace ash