advertisement_unittest.cc 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. // Copyright 2020 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 "device/bluetooth/advertisement.h"
  5. #include "base/run_loop.h"
  6. #include "base/test/task_environment.h"
  7. #include "device/bluetooth/bluetooth_advertisement.h"
  8. #include "testing/gtest/include/gtest/gtest.h"
  9. namespace {
  10. class FakeBluetoothAdvertisement : public device::BluetoothAdvertisement {
  11. public:
  12. // device::BluetoothAdvertisement:
  13. void Unregister(SuccessCallback success_callback,
  14. ErrorCallback error_callback) override {
  15. called_unregister_ = true;
  16. std::move(success_callback).Run();
  17. }
  18. bool called_unregister() { return called_unregister_; }
  19. private:
  20. ~FakeBluetoothAdvertisement() override = default;
  21. bool called_unregister_ = false;
  22. };
  23. } // namespace
  24. namespace bluetooth {
  25. class AdvertisementTest : public testing::Test {
  26. public:
  27. AdvertisementTest() = default;
  28. ~AdvertisementTest() override = default;
  29. AdvertisementTest(const AdvertisementTest&) = delete;
  30. AdvertisementTest& operator=(const AdvertisementTest&) = delete;
  31. void SetUp() override {
  32. fake_bluetooth_advertisement_ =
  33. base::MakeRefCounted<FakeBluetoothAdvertisement>();
  34. advertisement_ =
  35. std::make_unique<Advertisement>(fake_bluetooth_advertisement_);
  36. }
  37. protected:
  38. scoped_refptr<FakeBluetoothAdvertisement> fake_bluetooth_advertisement_;
  39. std::unique_ptr<Advertisement> advertisement_;
  40. private:
  41. base::test::TaskEnvironment task_environment_;
  42. };
  43. TEST_F(AdvertisementTest, TestOnDestroyCallsUnregister) {
  44. // When destroyed, |advertisement_| is expected to tear down its
  45. // BluetoothAdvertisement.
  46. ASSERT_FALSE(fake_bluetooth_advertisement_->called_unregister());
  47. advertisement_.reset();
  48. EXPECT_TRUE(fake_bluetooth_advertisement_->called_unregister());
  49. }
  50. TEST_F(AdvertisementTest, TestUnregister) {
  51. ASSERT_FALSE(fake_bluetooth_advertisement_->called_unregister());
  52. base::RunLoop run_loop;
  53. advertisement_->Unregister(run_loop.QuitClosure());
  54. run_loop.Run();
  55. EXPECT_TRUE(fake_bluetooth_advertisement_->called_unregister());
  56. }
  57. } // namespace bluetooth