xref: /aosp_15_r20/external/cronet/components/prefs/pref_value_map_unittest.cc (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
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.
4 
5 #include "components/prefs/pref_value_map.h"
6 
7 #include "base/values.h"
8 #include "testing/gtest/include/gtest/gtest.h"
9 
10 namespace base {
11 namespace {
12 
TEST(PrefValueMapTest,SetValue)13 TEST(PrefValueMapTest, SetValue) {
14   PrefValueMap map;
15   const Value* result = nullptr;
16   EXPECT_FALSE(map.GetValue("key", &result));
17   EXPECT_FALSE(result);
18 
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!")));
22 
23   EXPECT_TRUE(map.GetValue("key", &result));
24   EXPECT_EQ("hi mom!", *result);
25 }
26 
TEST(PrefValueMapTest,GetAndSetIntegerValue)27 TEST(PrefValueMapTest, GetAndSetIntegerValue) {
28   PrefValueMap map;
29   ASSERT_TRUE(map.SetValue("key", Value(5)));
30 
31   int int_value = 0;
32   EXPECT_TRUE(map.GetInteger("key", &int_value));
33   EXPECT_EQ(5, int_value);
34 
35   map.SetInteger("key", -14);
36   EXPECT_TRUE(map.GetInteger("key", &int_value));
37   EXPECT_EQ(-14, int_value);
38 }
39 
TEST(PrefValueMapTest,SetDoubleValue)40 TEST(PrefValueMapTest, SetDoubleValue) {
41   PrefValueMap map;
42   ASSERT_TRUE(map.SetValue("key", Value(5.5)));
43 
44   const Value* result = nullptr;
45   ASSERT_TRUE(map.GetValue("key", &result));
46   EXPECT_DOUBLE_EQ(5.5, result->GetDouble());
47 }
48 
TEST(PrefValueMapTest,RemoveValue)49 TEST(PrefValueMapTest, RemoveValue) {
50   PrefValueMap map;
51   EXPECT_FALSE(map.RemoveValue("key"));
52 
53   EXPECT_TRUE(map.SetValue("key", Value("test")));
54   EXPECT_TRUE(map.GetValue("key", nullptr));
55 
56   EXPECT_TRUE(map.RemoveValue("key"));
57   EXPECT_FALSE(map.GetValue("key", nullptr));
58 
59   EXPECT_FALSE(map.RemoveValue("key"));
60 }
61 
TEST(PrefValueMapTest,Clear)62 TEST(PrefValueMapTest, Clear) {
63   PrefValueMap map;
64   EXPECT_TRUE(map.SetValue("key", Value("test")));
65   EXPECT_TRUE(map.GetValue("key", nullptr));
66 
67   map.Clear();
68 
69   EXPECT_FALSE(map.GetValue("key", nullptr));
70 }
71 
TEST(PrefValueMapTest,ClearWithPrefix)72 TEST(PrefValueMapTest, ClearWithPrefix) {
73   {
74     PrefValueMap map;
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")));
79 
80     map.ClearWithPrefix("b");
81 
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));
86   }
87   {
88     PrefValueMap map;
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")));
93 
94     map.ClearWithPrefix("z");
95 
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));
100   }
101   {
102     PrefValueMap map;
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")));
107 
108     map.ClearWithPrefix("c");
109 
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));
114   }
115 }
116 
TEST(PrefValueMapTest,GetDifferingKeys)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")));
122 
123   PrefValueMap check;
124   std::vector<std::string> differing_paths;
125   std::vector<std::string> expected_differing_paths;
126 
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);
132 
133   EXPECT_TRUE(check.SetValue("a", Value("test")));
134   EXPECT_TRUE(check.SetValue("c", Value("test")));
135   EXPECT_TRUE(check.SetValue("d", Value("test")));
136 
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);
144 }
145 
TEST(PrefValueMapTest,SwapTwoMaps)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")));
151 
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")));
156 
157   first_map.Swap(&second_map);
158 
159   EXPECT_TRUE(first_map.GetValue("d", nullptr));
160   EXPECT_TRUE(first_map.GetValue("e", nullptr));
161   EXPECT_TRUE(first_map.GetValue("f", nullptr));
162 
163   EXPECT_TRUE(second_map.GetValue("a", nullptr));
164   EXPECT_TRUE(second_map.GetValue("b", nullptr));
165   EXPECT_TRUE(second_map.GetValue("c", nullptr));
166 }
167 
168 }  // namespace
169 }  // namespace base
170