| 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 |