1 // Copyright 2011 The Chromium Authors
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "components/prefs/pref_value_map.h"
7 #include "base/values.h"
8 #include "testing/gtest/include/gtest/gtest.h"
13 TEST(PrefValueMapTest, SetValue) {
15 const Value* result = nullptr;
16 EXPECT_FALSE(map.GetValue("key", &result));
19 EXPECT_TRUE(map.SetValue("key", Value("test")));
20 EXPECT_FALSE(map.SetValue("key", Value("test")));
21 EXPECT_TRUE(map.SetValue("key", Value("hi mom!")));
23 EXPECT_TRUE(map.GetValue("key", &result));
24 EXPECT_EQ("hi mom!", *result);
27 TEST(PrefValueMapTest, GetAndSetIntegerValue) {
29 ASSERT_TRUE(map.SetValue("key", Value(5)));
32 EXPECT_TRUE(map.GetInteger("key", &int_value));
33 EXPECT_EQ(5, int_value);
35 map.SetInteger("key", -14);
36 EXPECT_TRUE(map.GetInteger("key", &int_value));
37 EXPECT_EQ(-14, int_value);
40 TEST(PrefValueMapTest, SetDoubleValue) {
42 ASSERT_TRUE(map.SetValue("key", Value(5.5)));
44 const Value* result = nullptr;
45 ASSERT_TRUE(map.GetValue("key", &result));
46 EXPECT_DOUBLE_EQ(5.5, result->GetDouble());
49 TEST(PrefValueMapTest, RemoveValue) {
51 EXPECT_FALSE(map.RemoveValue("key"));
53 EXPECT_TRUE(map.SetValue("key", Value("test")));
54 EXPECT_TRUE(map.GetValue("key", nullptr));
56 EXPECT_TRUE(map.RemoveValue("key"));
57 EXPECT_FALSE(map.GetValue("key", nullptr));
59 EXPECT_FALSE(map.RemoveValue("key"));
62 TEST(PrefValueMapTest, Clear) {
64 EXPECT_TRUE(map.SetValue("key", Value("test")));
65 EXPECT_TRUE(map.GetValue("key", nullptr));
69 EXPECT_FALSE(map.GetValue("key", nullptr));
72 TEST(PrefValueMapTest, ClearWithPrefix) {
75 EXPECT_TRUE(map.SetValue("a", Value("test")));
76 EXPECT_TRUE(map.SetValue("b", Value("test")));
77 EXPECT_TRUE(map.SetValue("bb", Value("test")));
78 EXPECT_TRUE(map.SetValue("z", Value("test")));
80 map.ClearWithPrefix("b");
82 EXPECT_TRUE(map.GetValue("a", nullptr));
83 EXPECT_FALSE(map.GetValue("b", nullptr));
84 EXPECT_FALSE(map.GetValue("bb", nullptr));
85 EXPECT_TRUE(map.GetValue("z", nullptr));
89 EXPECT_TRUE(map.SetValue("a", Value("test")));
90 EXPECT_TRUE(map.SetValue("b", Value("test")));
91 EXPECT_TRUE(map.SetValue("bb", Value("test")));
92 EXPECT_TRUE(map.SetValue("z", Value("test")));
94 map.ClearWithPrefix("z");
96 EXPECT_TRUE(map.GetValue("a", nullptr));
97 EXPECT_TRUE(map.GetValue("b", nullptr));
98 EXPECT_TRUE(map.GetValue("bb", nullptr));
99 EXPECT_FALSE(map.GetValue("z", nullptr));
103 EXPECT_TRUE(map.SetValue("a", Value("test")));
104 EXPECT_TRUE(map.SetValue("b", Value("test")));
105 EXPECT_TRUE(map.SetValue("bb", Value("test")));
106 EXPECT_TRUE(map.SetValue("z", Value("test")));
108 map.ClearWithPrefix("c");
110 EXPECT_TRUE(map.GetValue("a", nullptr));
111 EXPECT_TRUE(map.GetValue("b", nullptr));
112 EXPECT_TRUE(map.GetValue("bb", nullptr));
113 EXPECT_TRUE(map.GetValue("z", nullptr));
117 TEST(PrefValueMapTest, GetDifferingKeys) {
118 PrefValueMap reference;
119 EXPECT_TRUE(reference.SetValue("b", Value("test")));
120 EXPECT_TRUE(reference.SetValue("c", Value("test")));
121 EXPECT_TRUE(reference.SetValue("e", Value("test")));
124 std::vector<std::string> differing_paths;
125 std::vector<std::string> expected_differing_paths;
127 reference.GetDifferingKeys(&check, &differing_paths);
128 expected_differing_paths.push_back("b");
129 expected_differing_paths.push_back("c");
130 expected_differing_paths.push_back("e");
131 EXPECT_EQ(expected_differing_paths, differing_paths);
133 EXPECT_TRUE(check.SetValue("a", Value("test")));
134 EXPECT_TRUE(check.SetValue("c", Value("test")));
135 EXPECT_TRUE(check.SetValue("d", Value("test")));
137 reference.GetDifferingKeys(&check, &differing_paths);
138 expected_differing_paths.clear();
139 expected_differing_paths.push_back("a");
140 expected_differing_paths.push_back("b");
141 expected_differing_paths.push_back("d");
142 expected_differing_paths.push_back("e");
143 EXPECT_EQ(expected_differing_paths, differing_paths);
146 TEST(PrefValueMapTest, SwapTwoMaps) {
147 PrefValueMap first_map;
148 EXPECT_TRUE(first_map.SetValue("a", Value("test")));
149 EXPECT_TRUE(first_map.SetValue("b", Value("test")));
150 EXPECT_TRUE(first_map.SetValue("c", Value("test")));
152 PrefValueMap second_map;
153 EXPECT_TRUE(second_map.SetValue("d", Value("test")));
154 EXPECT_TRUE(second_map.SetValue("e", Value("test")));
155 EXPECT_TRUE(second_map.SetValue("f", Value("test")));
157 first_map.Swap(&second_map);
159 EXPECT_TRUE(first_map.GetValue("d", nullptr));
160 EXPECT_TRUE(first_map.GetValue("e", nullptr));
161 EXPECT_TRUE(first_map.GetValue("f", nullptr));
163 EXPECT_TRUE(second_map.GetValue("a", nullptr));
164 EXPECT_TRUE(second_map.GetValue("b", nullptr));
165 EXPECT_TRUE(second_map.GetValue("c", nullptr));