pref_value_map_unittest.cc 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. // Copyright (c) 2011 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 "components/prefs/pref_value_map.h"
  5. #include "base/values.h"
  6. #include "testing/gtest/include/gtest/gtest.h"
  7. namespace base {
  8. namespace {
  9. TEST(PrefValueMapTest, SetValue) {
  10. PrefValueMap map;
  11. const Value* result = nullptr;
  12. EXPECT_FALSE(map.GetValue("key", &result));
  13. EXPECT_FALSE(result);
  14. EXPECT_TRUE(map.SetValue("key", Value("test")));
  15. EXPECT_FALSE(map.SetValue("key", Value("test")));
  16. EXPECT_TRUE(map.SetValue("key", Value("hi mom!")));
  17. EXPECT_TRUE(map.GetValue("key", &result));
  18. EXPECT_EQ("hi mom!", *result);
  19. }
  20. TEST(PrefValueMapTest, GetAndSetIntegerValue) {
  21. PrefValueMap map;
  22. ASSERT_TRUE(map.SetValue("key", Value(5)));
  23. int int_value = 0;
  24. EXPECT_TRUE(map.GetInteger("key", &int_value));
  25. EXPECT_EQ(5, int_value);
  26. map.SetInteger("key", -14);
  27. EXPECT_TRUE(map.GetInteger("key", &int_value));
  28. EXPECT_EQ(-14, int_value);
  29. }
  30. TEST(PrefValueMapTest, SetDoubleValue) {
  31. PrefValueMap map;
  32. ASSERT_TRUE(map.SetValue("key", Value(5.5)));
  33. const Value* result = nullptr;
  34. ASSERT_TRUE(map.GetValue("key", &result));
  35. EXPECT_DOUBLE_EQ(5.5, result->GetDouble());
  36. }
  37. TEST(PrefValueMapTest, RemoveValue) {
  38. PrefValueMap map;
  39. EXPECT_FALSE(map.RemoveValue("key"));
  40. EXPECT_TRUE(map.SetValue("key", Value("test")));
  41. EXPECT_TRUE(map.GetValue("key", nullptr));
  42. EXPECT_TRUE(map.RemoveValue("key"));
  43. EXPECT_FALSE(map.GetValue("key", nullptr));
  44. EXPECT_FALSE(map.RemoveValue("key"));
  45. }
  46. TEST(PrefValueMapTest, Clear) {
  47. PrefValueMap map;
  48. EXPECT_TRUE(map.SetValue("key", Value("test")));
  49. EXPECT_TRUE(map.GetValue("key", nullptr));
  50. map.Clear();
  51. EXPECT_FALSE(map.GetValue("key", nullptr));
  52. }
  53. TEST(PrefValueMapTest, ClearWithPrefix) {
  54. {
  55. PrefValueMap map;
  56. EXPECT_TRUE(map.SetValue("a", Value("test")));
  57. EXPECT_TRUE(map.SetValue("b", Value("test")));
  58. EXPECT_TRUE(map.SetValue("bb", Value("test")));
  59. EXPECT_TRUE(map.SetValue("z", Value("test")));
  60. map.ClearWithPrefix("b");
  61. EXPECT_TRUE(map.GetValue("a", nullptr));
  62. EXPECT_FALSE(map.GetValue("b", nullptr));
  63. EXPECT_FALSE(map.GetValue("bb", nullptr));
  64. EXPECT_TRUE(map.GetValue("z", nullptr));
  65. }
  66. {
  67. PrefValueMap map;
  68. EXPECT_TRUE(map.SetValue("a", Value("test")));
  69. EXPECT_TRUE(map.SetValue("b", Value("test")));
  70. EXPECT_TRUE(map.SetValue("bb", Value("test")));
  71. EXPECT_TRUE(map.SetValue("z", Value("test")));
  72. map.ClearWithPrefix("z");
  73. EXPECT_TRUE(map.GetValue("a", nullptr));
  74. EXPECT_TRUE(map.GetValue("b", nullptr));
  75. EXPECT_TRUE(map.GetValue("bb", nullptr));
  76. EXPECT_FALSE(map.GetValue("z", nullptr));
  77. }
  78. {
  79. PrefValueMap map;
  80. EXPECT_TRUE(map.SetValue("a", Value("test")));
  81. EXPECT_TRUE(map.SetValue("b", Value("test")));
  82. EXPECT_TRUE(map.SetValue("bb", Value("test")));
  83. EXPECT_TRUE(map.SetValue("z", Value("test")));
  84. map.ClearWithPrefix("c");
  85. EXPECT_TRUE(map.GetValue("a", nullptr));
  86. EXPECT_TRUE(map.GetValue("b", nullptr));
  87. EXPECT_TRUE(map.GetValue("bb", nullptr));
  88. EXPECT_TRUE(map.GetValue("z", nullptr));
  89. }
  90. }
  91. TEST(PrefValueMapTest, GetDifferingKeys) {
  92. PrefValueMap reference;
  93. EXPECT_TRUE(reference.SetValue("b", Value("test")));
  94. EXPECT_TRUE(reference.SetValue("c", Value("test")));
  95. EXPECT_TRUE(reference.SetValue("e", Value("test")));
  96. PrefValueMap check;
  97. std::vector<std::string> differing_paths;
  98. std::vector<std::string> expected_differing_paths;
  99. reference.GetDifferingKeys(&check, &differing_paths);
  100. expected_differing_paths.push_back("b");
  101. expected_differing_paths.push_back("c");
  102. expected_differing_paths.push_back("e");
  103. EXPECT_EQ(expected_differing_paths, differing_paths);
  104. EXPECT_TRUE(check.SetValue("a", Value("test")));
  105. EXPECT_TRUE(check.SetValue("c", Value("test")));
  106. EXPECT_TRUE(check.SetValue("d", Value("test")));
  107. reference.GetDifferingKeys(&check, &differing_paths);
  108. expected_differing_paths.clear();
  109. expected_differing_paths.push_back("a");
  110. expected_differing_paths.push_back("b");
  111. expected_differing_paths.push_back("d");
  112. expected_differing_paths.push_back("e");
  113. EXPECT_EQ(expected_differing_paths, differing_paths);
  114. }
  115. TEST(PrefValueMapTest, SwapTwoMaps) {
  116. PrefValueMap first_map;
  117. EXPECT_TRUE(first_map.SetValue("a", Value("test")));
  118. EXPECT_TRUE(first_map.SetValue("b", Value("test")));
  119. EXPECT_TRUE(first_map.SetValue("c", Value("test")));
  120. PrefValueMap second_map;
  121. EXPECT_TRUE(second_map.SetValue("d", Value("test")));
  122. EXPECT_TRUE(second_map.SetValue("e", Value("test")));
  123. EXPECT_TRUE(second_map.SetValue("f", Value("test")));
  124. first_map.Swap(&second_map);
  125. EXPECT_TRUE(first_map.GetValue("d", nullptr));
  126. EXPECT_TRUE(first_map.GetValue("e", nullptr));
  127. EXPECT_TRUE(first_map.GetValue("f", nullptr));
  128. EXPECT_TRUE(second_map.GetValue("a", nullptr));
  129. EXPECT_TRUE(second_map.GetValue("b", nullptr));
  130. EXPECT_TRUE(second_map.GetValue("c", nullptr));
  131. }
  132. } // namespace
  133. } // namespace base