OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/prefs/pref_member.h" | 5 #include "chrome/browser/prefs/pref_member.h" |
6 #include "chrome/browser/prefs/pref_value_store.h" | 6 #include "chrome/browser/prefs/pref_value_store.h" |
7 #include "chrome/common/notification_service.h" | 7 #include "chrome/common/notification_service.h" |
8 #include "chrome/test/testing_pref_service.h" | 8 #include "chrome/test/testing_pref_service.h" |
9 #include "testing/gtest/include/gtest/gtest.h" | 9 #include "testing/gtest/include/gtest/gtest.h" |
10 | 10 |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
44 StringPrefMember str_; | 44 StringPrefMember str_; |
45 int observe_cnt_; | 45 int observe_cnt_; |
46 | 46 |
47 private: | 47 private: |
48 PrefService* prefs_; | 48 PrefService* prefs_; |
49 }; | 49 }; |
50 | 50 |
51 } // anonymous namespace | 51 } // anonymous namespace |
52 | 52 |
53 TEST(PrefMemberTest, BasicGetAndSet) { | 53 TEST(PrefMemberTest, BasicGetAndSet) { |
54 TestingPrefService prefs; | 54 scoped_ptr<TestingPrefService> prefs( |
55 RegisterTestPrefs(&prefs); | 55 TestingPrefService::CreateTestingPrefService()); |
| 56 RegisterTestPrefs(prefs.get()); |
56 | 57 |
57 // Test bool | 58 // Test bool |
58 BooleanPrefMember boolean; | 59 BooleanPrefMember boolean; |
59 boolean.Init(kBoolPref, &prefs, NULL); | 60 boolean.Init(kBoolPref, prefs.get(), NULL); |
60 | 61 |
61 // Check the defaults | 62 // Check the defaults |
62 EXPECT_FALSE(prefs.GetBoolean(kBoolPref)); | 63 EXPECT_FALSE(prefs->GetBoolean(kBoolPref)); |
63 EXPECT_FALSE(boolean.GetValue()); | 64 EXPECT_FALSE(boolean.GetValue()); |
64 EXPECT_FALSE(*boolean); | 65 EXPECT_FALSE(*boolean); |
65 | 66 |
66 // Try changing through the member variable. | 67 // Try changing through the member variable. |
67 boolean.SetValue(true); | 68 boolean.SetValue(true); |
68 EXPECT_TRUE(boolean.GetValue()); | 69 EXPECT_TRUE(boolean.GetValue()); |
69 EXPECT_TRUE(prefs.GetBoolean(kBoolPref)); | 70 EXPECT_TRUE(prefs->GetBoolean(kBoolPref)); |
70 EXPECT_TRUE(*boolean); | 71 EXPECT_TRUE(*boolean); |
71 | 72 |
72 // Try changing back through the pref. | 73 // Try changing back through the pref. |
73 prefs.SetBoolean(kBoolPref, false); | 74 prefs->SetBoolean(kBoolPref, false); |
74 EXPECT_FALSE(prefs.GetBoolean(kBoolPref)); | 75 EXPECT_FALSE(prefs->GetBoolean(kBoolPref)); |
75 EXPECT_FALSE(boolean.GetValue()); | 76 EXPECT_FALSE(boolean.GetValue()); |
76 EXPECT_FALSE(*boolean); | 77 EXPECT_FALSE(*boolean); |
77 | 78 |
78 // Test int | 79 // Test int |
79 IntegerPrefMember integer; | 80 IntegerPrefMember integer; |
80 integer.Init(kIntPref, &prefs, NULL); | 81 integer.Init(kIntPref, prefs.get(), NULL); |
81 | 82 |
82 // Check the defaults | 83 // Check the defaults |
83 EXPECT_EQ(0, prefs.GetInteger(kIntPref)); | 84 EXPECT_EQ(0, prefs->GetInteger(kIntPref)); |
84 EXPECT_EQ(0, integer.GetValue()); | 85 EXPECT_EQ(0, integer.GetValue()); |
85 EXPECT_EQ(0, *integer); | 86 EXPECT_EQ(0, *integer); |
86 | 87 |
87 // Try changing through the member variable. | 88 // Try changing through the member variable. |
88 integer.SetValue(5); | 89 integer.SetValue(5); |
89 EXPECT_EQ(5, integer.GetValue()); | 90 EXPECT_EQ(5, integer.GetValue()); |
90 EXPECT_EQ(5, prefs.GetInteger(kIntPref)); | 91 EXPECT_EQ(5, prefs->GetInteger(kIntPref)); |
91 EXPECT_EQ(5, *integer); | 92 EXPECT_EQ(5, *integer); |
92 | 93 |
93 // Try changing back through the pref. | 94 // Try changing back through the pref. |
94 prefs.SetInteger(kIntPref, 2); | 95 prefs->SetInteger(kIntPref, 2); |
95 EXPECT_EQ(2, prefs.GetInteger(kIntPref)); | 96 EXPECT_EQ(2, prefs->GetInteger(kIntPref)); |
96 EXPECT_EQ(2, integer.GetValue()); | 97 EXPECT_EQ(2, integer.GetValue()); |
97 EXPECT_EQ(2, *integer); | 98 EXPECT_EQ(2, *integer); |
98 | 99 |
99 // Test real (double) | 100 // Test real (double) |
100 RealPrefMember real; | 101 RealPrefMember real; |
101 real.Init(kRealPref, &prefs, NULL); | 102 real.Init(kRealPref, prefs.get(), NULL); |
102 | 103 |
103 // Check the defaults | 104 // Check the defaults |
104 EXPECT_EQ(0.0, prefs.GetReal(kRealPref)); | 105 EXPECT_EQ(0.0, prefs->GetReal(kRealPref)); |
105 EXPECT_EQ(0.0, real.GetValue()); | 106 EXPECT_EQ(0.0, real.GetValue()); |
106 EXPECT_EQ(0.0, *real); | 107 EXPECT_EQ(0.0, *real); |
107 | 108 |
108 // Try changing through the member variable. | 109 // Try changing through the member variable. |
109 real.SetValue(1.0); | 110 real.SetValue(1.0); |
110 EXPECT_EQ(1.0, real.GetValue()); | 111 EXPECT_EQ(1.0, real.GetValue()); |
111 EXPECT_EQ(1.0, prefs.GetReal(kRealPref)); | 112 EXPECT_EQ(1.0, prefs->GetReal(kRealPref)); |
112 EXPECT_EQ(1.0, *real); | 113 EXPECT_EQ(1.0, *real); |
113 | 114 |
114 // Try changing back through the pref. | 115 // Try changing back through the pref. |
115 prefs.SetReal(kRealPref, 3.0); | 116 prefs->SetReal(kRealPref, 3.0); |
116 EXPECT_EQ(3.0, prefs.GetReal(kRealPref)); | 117 EXPECT_EQ(3.0, prefs->GetReal(kRealPref)); |
117 EXPECT_EQ(3.0, real.GetValue()); | 118 EXPECT_EQ(3.0, real.GetValue()); |
118 EXPECT_EQ(3.0, *real); | 119 EXPECT_EQ(3.0, *real); |
119 | 120 |
120 // Test string | 121 // Test string |
121 StringPrefMember string; | 122 StringPrefMember string; |
122 string.Init(kStringPref, &prefs, NULL); | 123 string.Init(kStringPref, prefs.get(), NULL); |
123 | 124 |
124 // Check the defaults | 125 // Check the defaults |
125 EXPECT_EQ("default", prefs.GetString(kStringPref)); | 126 EXPECT_EQ("default", prefs->GetString(kStringPref)); |
126 EXPECT_EQ("default", string.GetValue()); | 127 EXPECT_EQ("default", string.GetValue()); |
127 EXPECT_EQ("default", *string); | 128 EXPECT_EQ("default", *string); |
128 | 129 |
129 // Try changing through the member variable. | 130 // Try changing through the member variable. |
130 string.SetValue("foo"); | 131 string.SetValue("foo"); |
131 EXPECT_EQ("foo", string.GetValue()); | 132 EXPECT_EQ("foo", string.GetValue()); |
132 EXPECT_EQ("foo", prefs.GetString(kStringPref)); | 133 EXPECT_EQ("foo", prefs->GetString(kStringPref)); |
133 EXPECT_EQ("foo", *string); | 134 EXPECT_EQ("foo", *string); |
134 | 135 |
135 // Try changing back through the pref. | 136 // Try changing back through the pref. |
136 prefs.SetString(kStringPref, "bar"); | 137 prefs->SetString(kStringPref, "bar"); |
137 EXPECT_EQ("bar", prefs.GetString(kStringPref)); | 138 EXPECT_EQ("bar", prefs->GetString(kStringPref)); |
138 EXPECT_EQ("bar", string.GetValue()); | 139 EXPECT_EQ("bar", string.GetValue()); |
139 EXPECT_EQ("bar", *string); | 140 EXPECT_EQ("bar", *string); |
140 } | 141 } |
141 | 142 |
142 TEST(PrefMemberTest, TwoPrefs) { | 143 TEST(PrefMemberTest, TwoPrefs) { |
143 // Make sure two RealPrefMembers stay in sync. | 144 // Make sure two RealPrefMembers stay in sync. |
144 TestingPrefService prefs; | 145 scoped_ptr<TestingPrefService> prefs( |
145 RegisterTestPrefs(&prefs); | 146 TestingPrefService::CreateTestingPrefService()); |
| 147 RegisterTestPrefs(prefs.get()); |
146 | 148 |
147 RealPrefMember pref1; | 149 RealPrefMember pref1; |
148 pref1.Init(kRealPref, &prefs, NULL); | 150 pref1.Init(kRealPref, prefs.get(), NULL); |
149 RealPrefMember pref2; | 151 RealPrefMember pref2; |
150 pref2.Init(kRealPref, &prefs, NULL); | 152 pref2.Init(kRealPref, prefs.get(), NULL); |
151 | 153 |
152 pref1.SetValue(2.3); | 154 pref1.SetValue(2.3); |
153 EXPECT_EQ(2.3, *pref2); | 155 EXPECT_EQ(2.3, *pref2); |
154 | 156 |
155 pref2.SetValue(3.5); | 157 pref2.SetValue(3.5); |
156 EXPECT_EQ(3.5, *pref1); | 158 EXPECT_EQ(3.5, *pref1); |
157 | 159 |
158 prefs.SetReal(kRealPref, 4.2); | 160 prefs->SetReal(kRealPref, 4.2); |
159 EXPECT_EQ(4.2, *pref1); | 161 EXPECT_EQ(4.2, *pref1); |
160 EXPECT_EQ(4.2, *pref2); | 162 EXPECT_EQ(4.2, *pref2); |
161 } | 163 } |
162 | 164 |
163 TEST(PrefMemberTest, Observer) { | 165 TEST(PrefMemberTest, Observer) { |
164 TestingPrefService prefs; | 166 scoped_ptr<TestingPrefService> prefs( |
165 RegisterTestPrefs(&prefs); | 167 TestingPrefService::CreateTestingPrefService()); |
| 168 RegisterTestPrefs(prefs.get()); |
166 | 169 |
167 PrefMemberTestClass test_obj(&prefs); | 170 PrefMemberTestClass test_obj(prefs.get()); |
168 EXPECT_EQ("default", *test_obj.str_); | 171 EXPECT_EQ("default", *test_obj.str_); |
169 | 172 |
170 // Calling SetValue should not fire the observer. | 173 // Calling SetValue should not fire the observer. |
171 test_obj.str_.SetValue("hello"); | 174 test_obj.str_.SetValue("hello"); |
172 EXPECT_EQ(0, test_obj.observe_cnt_); | 175 EXPECT_EQ(0, test_obj.observe_cnt_); |
173 EXPECT_EQ("hello", prefs.GetString(kStringPref)); | 176 EXPECT_EQ("hello", prefs->GetString(kStringPref)); |
174 | 177 |
175 // Changing the pref does fire the observer. | 178 // Changing the pref does fire the observer. |
176 prefs.SetString(kStringPref, "world"); | 179 prefs->SetString(kStringPref, "world"); |
177 EXPECT_EQ(1, test_obj.observe_cnt_); | 180 EXPECT_EQ(1, test_obj.observe_cnt_); |
178 EXPECT_EQ("world", *(test_obj.str_)); | 181 EXPECT_EQ("world", *(test_obj.str_)); |
179 | 182 |
180 // Not changing the value should not fire the observer. | 183 // Not changing the value should not fire the observer. |
181 prefs.SetString(kStringPref, "world"); | 184 prefs->SetString(kStringPref, "world"); |
182 EXPECT_EQ(1, test_obj.observe_cnt_); | 185 EXPECT_EQ(1, test_obj.observe_cnt_); |
183 EXPECT_EQ("world", *(test_obj.str_)); | 186 EXPECT_EQ("world", *(test_obj.str_)); |
184 | 187 |
185 prefs.SetString(kStringPref, "hello"); | 188 prefs->SetString(kStringPref, "hello"); |
186 EXPECT_EQ(2, test_obj.observe_cnt_); | 189 EXPECT_EQ(2, test_obj.observe_cnt_); |
187 EXPECT_EQ("hello", prefs.GetString(kStringPref)); | 190 EXPECT_EQ("hello", prefs->GetString(kStringPref)); |
188 } | 191 } |
189 | 192 |
190 TEST(PrefMemberTest, NoInit) { | 193 TEST(PrefMemberTest, NoInit) { |
191 // Make sure not calling Init on a PrefMember doesn't cause problems. | 194 // Make sure not calling Init on a PrefMember doesn't cause problems. |
192 IntegerPrefMember pref; | 195 IntegerPrefMember pref; |
193 } | 196 } |
OLD | NEW |