phone_status_model_unittest.cc 3.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  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 "ash/components/phonehub/phone_status_model.h"
  5. #include "ash/components/phonehub/phone_model_test_util.h"
  6. #include "base/strings/utf_string_conversions.h"
  7. #include "testing/gtest/include/gtest/gtest.h"
  8. namespace ash {
  9. namespace phonehub {
  10. TEST(PhoneStatusModelTest, NormalCase) {
  11. PhoneStatusModel success(PhoneStatusModel::MobileStatus::kSimWithReception,
  12. CreateFakeMobileConnectionMetadata(),
  13. PhoneStatusModel::ChargingState::kNotCharging,
  14. PhoneStatusModel::BatterySaverState::kOff,
  15. /*battery_percentage=*/100u);
  16. EXPECT_EQ(PhoneStatusModel::MobileStatus::kSimWithReception,
  17. success.mobile_status());
  18. EXPECT_EQ(CreateFakeMobileConnectionMetadata(),
  19. *success.mobile_connection_metadata());
  20. EXPECT_EQ(PhoneStatusModel::ChargingState::kNotCharging,
  21. success.charging_state());
  22. EXPECT_EQ(PhoneStatusModel::BatterySaverState::kOff,
  23. success.battery_saver_state());
  24. EXPECT_EQ(100u, success.battery_percentage());
  25. }
  26. TEST(PhoneStatusModelTest, InvalidBattery) {
  27. // If battery is >100, it is set to 100.
  28. PhoneStatusModel high_battery(
  29. PhoneStatusModel::MobileStatus::kSimWithReception,
  30. CreateFakeMobileConnectionMetadata(),
  31. PhoneStatusModel::ChargingState::kNotCharging,
  32. PhoneStatusModel::BatterySaverState::kOff,
  33. /*battery_percentage=*/1000u);
  34. EXPECT_EQ(100u, high_battery.battery_percentage());
  35. }
  36. TEST(PhoneStatusModelTest, NoReceptionWithMetadata_MobileCarrierProvided) {
  37. // If the MobileStatus does not indicate reception, connection metadata should
  38. // be cleared.
  39. PhoneStatusModel no_sim(PhoneStatusModel::MobileStatus::kNoSim,
  40. CreateFakeMobileConnectionMetadata(),
  41. PhoneStatusModel::ChargingState::kNotCharging,
  42. PhoneStatusModel::BatterySaverState::kOff,
  43. /*battery_percentage=*/100u);
  44. EXPECT_EQ(PhoneStatusModel::MobileStatus::kSimWithReception,
  45. no_sim.mobile_status());
  46. EXPECT_TRUE(no_sim.mobile_connection_metadata().has_value());
  47. EXPECT_EQ(kFakeMobileProviderName,
  48. no_sim.mobile_connection_metadata()->mobile_provider);
  49. EXPECT_EQ(PhoneStatusModel::SignalStrength::kOneBar,
  50. no_sim.mobile_connection_metadata()->signal_strength);
  51. }
  52. TEST(PhoneStatusModelTest, NoReceptionWithMetadata_NoCarrier) {
  53. PhoneStatusModel::MobileConnectionMetadata metadata;
  54. metadata.signal_strength = PhoneStatusModel::SignalStrength::kZeroBars;
  55. metadata.mobile_provider = std::u16string();
  56. // If the MobileStatus does not indicate reception, connection metadata should
  57. // be cleared.
  58. PhoneStatusModel no_sim(PhoneStatusModel::MobileStatus::kNoSim, metadata,
  59. PhoneStatusModel::ChargingState::kNotCharging,
  60. PhoneStatusModel::BatterySaverState::kOff,
  61. /*battery_percentage=*/100u);
  62. EXPECT_EQ(PhoneStatusModel::MobileStatus::kNoSim, no_sim.mobile_status());
  63. EXPECT_FALSE(no_sim.mobile_connection_metadata().has_value());
  64. }
  65. TEST(PhoneStatusModelTest, ReceptionWithNoMetdata) {
  66. // If the MobileStatus does indicate reception but no connection metadata is
  67. // available, the status is set back to no reception.
  68. PhoneStatusModel no_connection_metadata(
  69. PhoneStatusModel::MobileStatus::kSimWithReception,
  70. /*mobile_connection_metadata=*/absl::nullopt,
  71. PhoneStatusModel::ChargingState::kNotCharging,
  72. PhoneStatusModel::BatterySaverState::kOff,
  73. /*battery_percentage=*/100u);
  74. EXPECT_EQ(PhoneStatusModel::MobileStatus::kSimButNoReception,
  75. no_connection_metadata.mobile_status());
  76. }
  77. } // namespace phonehub
  78. } // namespace ash