expiring_remote_device_cache_unittest.cc 3.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. // Copyright 2018 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/components/multidevice/expiring_remote_device_cache.h"
  5. #include <algorithm>
  6. #include "ash/components/multidevice/remote_device_test_util.h"
  7. #include "testing/gtest/include/gtest/gtest.h"
  8. namespace ash::multidevice {
  9. class ExpiringRemoteDeviceCacheTest : public ::testing::Test {
  10. public:
  11. ExpiringRemoteDeviceCacheTest(const ExpiringRemoteDeviceCacheTest&) = delete;
  12. ExpiringRemoteDeviceCacheTest& operator=(
  13. const ExpiringRemoteDeviceCacheTest&) = delete;
  14. protected:
  15. ExpiringRemoteDeviceCacheTest()
  16. : test_remote_device_list_(CreateRemoteDeviceListForTest(5)),
  17. test_remote_device_ref_list_(CreateRemoteDeviceRefListForTest(5)) {}
  18. // testing::Test:
  19. void SetUp() override {
  20. // Clear every other device's Instance ID to test secondary lookup by legacy
  21. // device ID.
  22. test_remote_device_list_[1].instance_id.clear();
  23. test_remote_device_list_[3].instance_id.clear();
  24. GetMutableRemoteDevice(test_remote_device_ref_list_[1])
  25. ->instance_id.clear();
  26. GetMutableRemoteDevice(test_remote_device_ref_list_[3])
  27. ->instance_id.clear();
  28. // Sort device lists so they can be compared to expected device lists in
  29. // VerifyCacheRemoteDevices().
  30. std::sort(test_remote_device_list_.begin(), test_remote_device_list_.end(),
  31. [](const auto& device_1, const auto& device_2) {
  32. return device_1 < device_2;
  33. });
  34. std::sort(test_remote_device_ref_list_.begin(),
  35. test_remote_device_ref_list_.end(),
  36. [](const auto& device_1, const auto& device_2) {
  37. return device_1 < device_2;
  38. });
  39. cache_ = std::make_unique<ExpiringRemoteDeviceCache>();
  40. }
  41. void VerifyCacheRemoteDevices(
  42. RemoteDeviceRefList expected_remote_device_ref_list) {
  43. RemoteDeviceRefList remote_device_ref_list =
  44. cache_->GetNonExpiredRemoteDevices();
  45. std::sort(remote_device_ref_list.begin(), remote_device_ref_list.end(),
  46. [](const auto& device_1, const auto& device_2) {
  47. return device_1 < device_2;
  48. });
  49. EXPECT_EQ(expected_remote_device_ref_list, remote_device_ref_list);
  50. }
  51. RemoteDeviceList test_remote_device_list_;
  52. RemoteDeviceRefList test_remote_device_ref_list_;
  53. std::unique_ptr<ExpiringRemoteDeviceCache> cache_;
  54. };
  55. TEST_F(ExpiringRemoteDeviceCacheTest,
  56. TestSetRemoteDevices_RemoteDeviceRefsRemoved) {
  57. cache_->SetRemoteDevicesAndInvalidateOldEntries(test_remote_device_list_);
  58. VerifyCacheRemoteDevices(test_remote_device_ref_list_);
  59. cache_->SetRemoteDevicesAndInvalidateOldEntries(RemoteDeviceList());
  60. VerifyCacheRemoteDevices(RemoteDeviceRefList());
  61. }
  62. TEST_F(ExpiringRemoteDeviceCacheTest,
  63. TestSetRemoteDevices_DeviceRemovedAndAddedBack) {
  64. cache_->SetRemoteDevicesAndInvalidateOldEntries(test_remote_device_list_);
  65. cache_->SetRemoteDevicesAndInvalidateOldEntries(RemoteDeviceList());
  66. cache_->SetRemoteDevicesAndInvalidateOldEntries(test_remote_device_list_);
  67. VerifyCacheRemoteDevices(test_remote_device_ref_list_);
  68. }
  69. TEST_F(ExpiringRemoteDeviceCacheTest, TestUpdateRemoteDevice) {
  70. cache_->SetRemoteDevicesAndInvalidateOldEntries(test_remote_device_list_);
  71. VerifyCacheRemoteDevices(test_remote_device_ref_list_);
  72. cache_->UpdateRemoteDevice(test_remote_device_list_[0]);
  73. VerifyCacheRemoteDevices(test_remote_device_ref_list_);
  74. }
  75. } // namespace ash::multidevice