| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 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 | 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/extensions/extension_settings_storage_unittest.h" | 5 #include "chrome/browser/extensions/extension_settings_storage_unittest.h" |
| 6 | 6 |
| 7 #include "base/json/json_writer.h" | 7 #include "base/json/json_writer.h" |
| 8 #include "base/file_util.h" | 8 #include "base/file_util.h" |
| 9 #include "base/values.h" | 9 #include "base/values.h" |
| 10 | 10 |
| (...skipping 15 matching lines...) Expand all Loading... |
| 26 string.append(", "); | 26 string.append(", "); |
| 27 } | 27 } |
| 28 string.append(*it); | 28 string.append(*it); |
| 29 } | 29 } |
| 30 string.append("}"); | 30 string.append("}"); |
| 31 return string; | 31 return string; |
| 32 } | 32 } |
| 33 | 33 |
| 34 } // namespace | 34 } // namespace |
| 35 | 35 |
| 36 // Compares two possibly NULL values for equality, filling |error| with an |
| 37 // appropriate error message if they're different. |
| 38 bool ValuesEqual( |
| 39 const Value* expected, const Value* actual, std::string* error) { |
| 40 if (expected == actual) { |
| 41 return true; |
| 42 } |
| 43 if (expected && !actual) { |
| 44 *error = "Expected: " + GetJSON(*expected) + ", actual: NULL"; |
| 45 return false; |
| 46 } |
| 47 if (actual && !expected) { |
| 48 *error = "Expected: NULL, actual: " + GetJSON(*actual); |
| 49 return false; |
| 50 } |
| 51 if (!expected->Equals(actual)) { |
| 52 *error = |
| 53 "Expected: " + GetJSON(*expected) + ", actual: " + GetJSON(*actual); |
| 54 return false; |
| 55 } |
| 56 return true; |
| 57 } |
| 58 |
| 36 // Returns whether the result of a storage operation has the expected settings | 59 // Returns whether the result of a storage operation has the expected settings |
| 37 // and changed keys. | 60 // and changed keys. |
| 38 testing::AssertionResult SettingsEq( | 61 testing::AssertionResult SettingsEq( |
| 39 const char* _1, const char* _2, const char* _3, | 62 const char* _1, const char* _2, const char* _3, const char* _4, |
| 40 DictionaryValue* expected_settings, | 63 DictionaryValue* expected_settings, |
| 64 DictionaryValue* expected_old_settings, |
| 41 std::set<std::string>* expected_changed_keys, | 65 std::set<std::string>* expected_changed_keys, |
| 42 ExtensionSettingsStorage::Result actual) { | 66 ExtensionSettingsStorage::Result actual) { |
| 67 std::string error; |
| 68 |
| 43 if (actual.HasError()) { | 69 if (actual.HasError()) { |
| 44 return testing::AssertionFailure() << | 70 return testing::AssertionFailure() << |
| 45 "Expected: " << GetJSON(*expected_settings) << | 71 "Expected: " << GetJSON(*expected_settings) << |
| 46 ", " << ToString(*expected_changed_keys) << "\n" << | 72 ", " << ToString(*expected_changed_keys) << "\n" << |
| 47 ", actual has error: " << actual.GetError(); | 73 ", actual has error: " << actual.GetError(); |
| 48 } | 74 } |
| 49 if (expected_settings == NULL && actual.GetSettings() != NULL) { | 75 |
| 50 return testing::AssertionFailure() << | 76 if (!ValuesEqual(expected_settings, actual.GetSettings(), &error)) { |
| 51 "Expected NULL settings, actual: " << GetJSON(*actual.GetSettings()); | 77 return testing::AssertionFailure() << "For settings, " << error; |
| 52 } | 78 } |
| 53 if (expected_changed_keys == NULL && actual.GetChangedKeys() != NULL) { | 79 |
| 80 if (!expected_changed_keys && actual.GetChangedKeys()) { |
| 54 return testing::AssertionFailure() << | 81 return testing::AssertionFailure() << |
| 55 "Expected NULL changed keys, actual: " << | 82 "Expected NULL changed keys, actual: " << |
| 56 ToString(*actual.GetChangedKeys()); | 83 ToString(*actual.GetChangedKeys()); |
| 57 } | 84 } |
| 58 if (expected_settings != NULL && actual.GetSettings() == NULL) { | 85 if (expected_changed_keys && !actual.GetChangedKeys()) { |
| 59 return testing::AssertionFailure() << | |
| 60 "Expected: " << GetJSON(*expected_settings) << ", actual NULL"; | |
| 61 } | |
| 62 if (expected_changed_keys != NULL && actual.GetChangedKeys() == NULL) { | |
| 63 return testing::AssertionFailure() << | 86 return testing::AssertionFailure() << |
| 64 "Expected: " << ToString(*expected_changed_keys) << ", actual NULL"; | 87 "Expected: " << ToString(*expected_changed_keys) << ", actual NULL"; |
| 65 } | 88 } |
| 66 if (expected_settings != actual.GetSettings() && | |
| 67 !expected_settings->Equals(actual.GetSettings())) { | |
| 68 return testing::AssertionFailure() << | |
| 69 "Expected: " << GetJSON(*expected_settings) << | |
| 70 ", actual: " << GetJSON(*actual.GetSettings()); | |
| 71 } | |
| 72 if (expected_changed_keys != actual.GetChangedKeys() && | 89 if (expected_changed_keys != actual.GetChangedKeys() && |
| 73 *expected_changed_keys != *actual.GetChangedKeys()) { | 90 *expected_changed_keys != *actual.GetChangedKeys()) { |
| 74 return testing::AssertionFailure() << | 91 return testing::AssertionFailure() << |
| 75 "Expected: " << ToString(*expected_changed_keys) << | 92 "Expected: " << ToString(*expected_changed_keys) << |
| 76 ", actual: " << ToString(*actual.GetChangedKeys()); | 93 ", actual: " << ToString(*actual.GetChangedKeys()); |
| 77 } | 94 } |
| 95 |
| 96 const std::set<std::string>* changed_keys = actual.GetChangedKeys(); |
| 97 if (changed_keys) { |
| 98 for (std::set<std::string>::iterator it = changed_keys->begin(); |
| 99 it != changed_keys->end(); ++it) { |
| 100 Value *expected_old_value = NULL; |
| 101 expected_old_settings->GetWithoutPathExpansion(*it, &expected_old_value); |
| 102 if (!ValuesEqual(expected_old_value, actual.GetOldValue(*it), &error)) { |
| 103 return testing::AssertionFailure() << "Old values not equal: " << error; |
| 104 } |
| 105 |
| 106 Value *expected_new_value = NULL; |
| 107 if (expected_settings) { |
| 108 expected_settings->GetWithoutPathExpansion(*it, &expected_new_value); |
| 109 } |
| 110 if (!ValuesEqual(expected_new_value, actual.GetNewValue(*it), &error)) { |
| 111 return testing::AssertionFailure() << "New values not equal: " << error; |
| 112 } |
| 113 } |
| 114 } |
| 115 |
| 78 return testing::AssertionSuccess(); | 116 return testing::AssertionSuccess(); |
| 79 } | 117 } |
| 80 | 118 |
| 81 ExtensionSettingsStorageTest::ExtensionSettingsStorageTest() | 119 ExtensionSettingsStorageTest::ExtensionSettingsStorageTest() |
| 82 : key1_("foo"), | 120 : key1_("foo"), |
| 83 key2_("bar"), | 121 key2_("bar"), |
| 84 key3_("baz"), | 122 key3_("baz"), |
| 85 empty_dict_(new DictionaryValue), | 123 empty_dict_(new DictionaryValue()), |
| 86 dict1_(new DictionaryValue), | 124 dict1_(new DictionaryValue()), |
| 87 dict12_(new DictionaryValue), | 125 dict3_(new DictionaryValue()), |
| 88 dict123_(new DictionaryValue), | 126 dict12_(new DictionaryValue()), |
| 127 dict123_(new DictionaryValue()), |
| 89 ui_thread_(BrowserThread::UI, MessageLoop::current()), | 128 ui_thread_(BrowserThread::UI, MessageLoop::current()), |
| 90 file_thread_(BrowserThread::FILE, MessageLoop::current()) { | 129 file_thread_(BrowserThread::FILE, MessageLoop::current()) { |
| 91 val1_.reset(Value::CreateStringValue(key1_ + "Value")); | 130 val1_.reset(Value::CreateStringValue(key1_ + "Value")); |
| 92 val2_.reset(Value::CreateStringValue(key2_ + "Value")); | 131 val2_.reset(Value::CreateStringValue(key2_ + "Value")); |
| 93 val3_.reset(Value::CreateStringValue(key3_ + "Value")); | 132 val3_.reset(Value::CreateStringValue(key3_ + "Value")); |
| 94 | 133 |
| 95 list1_.push_back(key1_); | 134 list1_.push_back(key1_); |
| 96 list2_.push_back(key2_); | 135 list2_.push_back(key2_); |
| 97 list3_.push_back(key3_); | 136 list3_.push_back(key3_); |
| 98 list12_.push_back(key1_); | 137 list12_.push_back(key1_); |
| 99 list12_.push_back(key2_); | 138 list12_.push_back(key2_); |
| 100 list13_.push_back(key1_); | 139 list13_.push_back(key1_); |
| 101 list13_.push_back(key3_); | 140 list13_.push_back(key3_); |
| 102 list123_.push_back(key1_); | 141 list123_.push_back(key1_); |
| 103 list123_.push_back(key2_); | 142 list123_.push_back(key2_); |
| 104 list123_.push_back(key3_); | 143 list123_.push_back(key3_); |
| 105 | 144 |
| 106 set1_.insert(list1_.begin(), list1_.end()); | 145 set1_.insert(list1_.begin(), list1_.end()); |
| 107 set2_.insert(list2_.begin(), list2_.end()); | 146 set2_.insert(list2_.begin(), list2_.end()); |
| 108 set3_.insert(list3_.begin(), list3_.end()); | 147 set3_.insert(list3_.begin(), list3_.end()); |
| 109 set12_.insert(list12_.begin(), list12_.end()); | 148 set12_.insert(list12_.begin(), list12_.end()); |
| 110 set13_.insert(list13_.begin(), list13_.end()); | 149 set13_.insert(list13_.begin(), list13_.end()); |
| 111 set123_.insert(list123_.begin(), list123_.end()); | 150 set123_.insert(list123_.begin(), list123_.end()); |
| 112 | 151 |
| 113 dict1_->Set(key1_, val1_->DeepCopy()); | 152 dict1_->Set(key1_, val1_->DeepCopy()); |
| 153 dict3_->Set(key3_, val3_->DeepCopy()); |
| 114 dict12_->Set(key1_, val1_->DeepCopy()); | 154 dict12_->Set(key1_, val1_->DeepCopy()); |
| 115 dict12_->Set(key2_, val2_->DeepCopy()); | 155 dict12_->Set(key2_, val2_->DeepCopy()); |
| 116 dict123_->Set(key1_, val1_->DeepCopy()); | 156 dict123_->Set(key1_, val1_->DeepCopy()); |
| 117 dict123_->Set(key2_, val2_->DeepCopy()); | 157 dict123_->Set(key2_, val2_->DeepCopy()); |
| 118 dict123_->Set(key3_, val3_->DeepCopy()); | 158 dict123_->Set(key3_, val3_->DeepCopy()); |
| 119 } | 159 } |
| 120 | 160 |
| 121 ExtensionSettingsStorageTest::~ExtensionSettingsStorageTest() {} | 161 ExtensionSettingsStorageTest::~ExtensionSettingsStorageTest() {} |
| 122 | 162 |
| 123 void ExtensionSettingsStorageTest::SetUp() { | 163 void ExtensionSettingsStorageTest::SetUp() { |
| 124 ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); | 164 ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); |
| 125 storage_.reset((GetParam())(temp_dir_.path(), "fakeExtension")); | 165 storage_.reset((GetParam())(temp_dir_.path(), "fakeExtension")); |
| 126 ASSERT_TRUE(storage_.get()); | 166 ASSERT_TRUE(storage_.get()); |
| 127 } | 167 } |
| 128 | 168 |
| 129 void ExtensionSettingsStorageTest::TearDown() { | 169 void ExtensionSettingsStorageTest::TearDown() { |
| 130 storage_.reset(); | 170 storage_.reset(); |
| 131 } | 171 } |
| 132 | 172 |
| 133 TEST_P(ExtensionSettingsStorageTest, GetWhenEmpty) { | 173 TEST_P(ExtensionSettingsStorageTest, GetWhenEmpty) { |
| 134 EXPECT_PRED_FORMAT3(SettingsEq, | 174 EXPECT_PRED_FORMAT4(SettingsEq, |
| 135 empty_dict_.get(), NULL, storage_->Get(key1_)); | 175 empty_dict_.get(), NULL, NULL, storage_->Get(key1_)); |
| 136 EXPECT_PRED_FORMAT3(SettingsEq, | 176 EXPECT_PRED_FORMAT4(SettingsEq, |
| 137 empty_dict_.get(), NULL, storage_->Get(empty_list_)); | 177 empty_dict_.get(), NULL, NULL, storage_->Get(empty_list_)); |
| 138 EXPECT_PRED_FORMAT3(SettingsEq, | 178 EXPECT_PRED_FORMAT4(SettingsEq, |
| 139 empty_dict_.get(), NULL, storage_->Get(list123_)); | 179 empty_dict_.get(), NULL, NULL, storage_->Get(list123_)); |
| 140 EXPECT_PRED_FORMAT3(SettingsEq, | 180 EXPECT_PRED_FORMAT4(SettingsEq, |
| 141 empty_dict_.get(), NULL, storage_->Get()); | 181 empty_dict_.get(), NULL, NULL, storage_->Get()); |
| 142 } | 182 } |
| 143 | 183 |
| 144 TEST_P(ExtensionSettingsStorageTest, GetWithSingleValue) { | 184 TEST_P(ExtensionSettingsStorageTest, GetWithSingleValue) { |
| 145 EXPECT_PRED_FORMAT3(SettingsEq, | 185 EXPECT_PRED_FORMAT4(SettingsEq, |
| 146 dict1_.get(), &set1_, storage_->Set(key1_, *val1_)); | 186 dict1_.get(), empty_dict_.get(), &set1_, storage_->Set(key1_, *val1_)); |
| 147 | 187 |
| 148 EXPECT_PRED_FORMAT3(SettingsEq, | 188 EXPECT_PRED_FORMAT4(SettingsEq, |
| 149 dict1_.get(), NULL, storage_->Get(key1_)); | 189 dict1_.get(), NULL, NULL, storage_->Get(key1_)); |
| 150 EXPECT_PRED_FORMAT3(SettingsEq, | 190 EXPECT_PRED_FORMAT4(SettingsEq, |
| 151 empty_dict_.get(), NULL, storage_->Get(key2_)); | 191 empty_dict_.get(), NULL, NULL, storage_->Get(key2_)); |
| 152 EXPECT_PRED_FORMAT3(SettingsEq, | 192 EXPECT_PRED_FORMAT4(SettingsEq, |
| 153 empty_dict_.get(), NULL, storage_->Get(key3_)); | 193 empty_dict_.get(), NULL, NULL, storage_->Get(key3_)); |
| 154 EXPECT_PRED_FORMAT3(SettingsEq, | 194 EXPECT_PRED_FORMAT4(SettingsEq, |
| 155 empty_dict_.get(), NULL, storage_->Get(empty_list_)); | 195 empty_dict_.get(), NULL, NULL, storage_->Get(empty_list_)); |
| 156 EXPECT_PRED_FORMAT3(SettingsEq, | 196 EXPECT_PRED_FORMAT4(SettingsEq, |
| 157 dict1_.get(), NULL, storage_->Get(list123_)); | 197 dict1_.get(), NULL, NULL, storage_->Get(list123_)); |
| 158 EXPECT_PRED_FORMAT3(SettingsEq, | 198 EXPECT_PRED_FORMAT4(SettingsEq, |
| 159 dict1_.get(), NULL, storage_->Get()); | 199 dict1_.get(), NULL, NULL, storage_->Get()); |
| 160 } | 200 } |
| 161 | 201 |
| 162 TEST_P(ExtensionSettingsStorageTest, GetWithMultipleValues) { | 202 TEST_P(ExtensionSettingsStorageTest, GetWithMultipleValues) { |
| 163 EXPECT_PRED_FORMAT3(SettingsEq, | 203 EXPECT_PRED_FORMAT4(SettingsEq, |
| 164 dict12_.get(), &set12_, storage_->Set(*dict12_)); | 204 dict12_.get(), empty_dict_.get(), &set12_, storage_->Set(*dict12_)); |
| 165 | 205 |
| 166 EXPECT_PRED_FORMAT3(SettingsEq, | 206 EXPECT_PRED_FORMAT4(SettingsEq, |
| 167 dict1_.get(), NULL, storage_->Get(key1_)); | 207 dict1_.get(), NULL, NULL, storage_->Get(key1_)); |
| 168 EXPECT_PRED_FORMAT3(SettingsEq, | 208 EXPECT_PRED_FORMAT4(SettingsEq, |
| 169 empty_dict_.get(), NULL, storage_->Get(key3_)); | 209 empty_dict_.get(), NULL, NULL, storage_->Get(key3_)); |
| 170 EXPECT_PRED_FORMAT3(SettingsEq, | 210 EXPECT_PRED_FORMAT4(SettingsEq, |
| 171 empty_dict_.get(), NULL, storage_->Get(empty_list_)); | 211 empty_dict_.get(), NULL, NULL, storage_->Get(empty_list_)); |
| 172 EXPECT_PRED_FORMAT3(SettingsEq, | 212 EXPECT_PRED_FORMAT4(SettingsEq, |
| 173 dict12_.get(), NULL, storage_->Get(list123_)); | 213 dict12_.get(), NULL, NULL, storage_->Get(list123_)); |
| 174 EXPECT_PRED_FORMAT3(SettingsEq, | 214 EXPECT_PRED_FORMAT4(SettingsEq, |
| 175 dict12_.get(), NULL, storage_->Get()); | 215 dict12_.get(), NULL, NULL, storage_->Get()); |
| 176 } | 216 } |
| 177 | 217 |
| 178 TEST_P(ExtensionSettingsStorageTest, RemoveWhenEmpty) { | 218 TEST_P(ExtensionSettingsStorageTest, RemoveWhenEmpty) { |
| 179 EXPECT_PRED_FORMAT3(SettingsEq, | 219 EXPECT_PRED_FORMAT4(SettingsEq, |
| 180 NULL, &empty_set_, storage_->Remove(key1_)); | 220 NULL, empty_dict_.get(), &empty_set_, storage_->Remove(key1_)); |
| 181 | 221 |
| 182 EXPECT_PRED_FORMAT3(SettingsEq, | 222 EXPECT_PRED_FORMAT4(SettingsEq, |
| 183 empty_dict_.get(), NULL, storage_->Get(key1_)); | 223 empty_dict_.get(), NULL, NULL, storage_->Get(key1_)); |
| 184 EXPECT_PRED_FORMAT3(SettingsEq, | 224 EXPECT_PRED_FORMAT4(SettingsEq, |
| 185 empty_dict_.get(), NULL, storage_->Get(list1_)); | 225 empty_dict_.get(), NULL, NULL, storage_->Get(list1_)); |
| 186 EXPECT_PRED_FORMAT3(SettingsEq, | 226 EXPECT_PRED_FORMAT4(SettingsEq, |
| 187 empty_dict_.get(), NULL, storage_->Get()); | 227 empty_dict_.get(), NULL, NULL, storage_->Get()); |
| 188 } | 228 } |
| 189 | 229 |
| 190 TEST_P(ExtensionSettingsStorageTest, RemoveWithSingleValue) { | 230 TEST_P(ExtensionSettingsStorageTest, RemoveWithSingleValue) { |
| 191 EXPECT_PRED_FORMAT3(SettingsEq, | 231 EXPECT_PRED_FORMAT4(SettingsEq, |
| 192 dict1_.get(), &set1_, storage_->Set(*dict1_)); | 232 dict1_.get(), empty_dict_.get(), &set1_, storage_->Set(*dict1_)); |
| 193 EXPECT_PRED_FORMAT3(SettingsEq, | 233 EXPECT_PRED_FORMAT4(SettingsEq, |
| 194 NULL, &set1_, storage_->Remove(key1_)); | 234 NULL, dict1_.get(), &set1_, storage_->Remove(key1_)); |
| 195 | 235 |
| 196 EXPECT_PRED_FORMAT3(SettingsEq, | 236 EXPECT_PRED_FORMAT4(SettingsEq, |
| 197 empty_dict_.get(), NULL, storage_->Get(key1_)); | 237 empty_dict_.get(), NULL, NULL, storage_->Get(key1_)); |
| 198 EXPECT_PRED_FORMAT3(SettingsEq, | 238 EXPECT_PRED_FORMAT4(SettingsEq, |
| 199 empty_dict_.get(), NULL, storage_->Get(key2_)); | 239 empty_dict_.get(), NULL, NULL, storage_->Get(key2_)); |
| 200 EXPECT_PRED_FORMAT3(SettingsEq, | 240 EXPECT_PRED_FORMAT4(SettingsEq, |
| 201 empty_dict_.get(), NULL, storage_->Get(list1_)); | 241 empty_dict_.get(), NULL, NULL, storage_->Get(list1_)); |
| 202 EXPECT_PRED_FORMAT3(SettingsEq, | 242 EXPECT_PRED_FORMAT4(SettingsEq, |
| 203 empty_dict_.get(), NULL, storage_->Get(list12_)); | 243 empty_dict_.get(), NULL, NULL, storage_->Get(list12_)); |
| 204 EXPECT_PRED_FORMAT3(SettingsEq, | 244 EXPECT_PRED_FORMAT4(SettingsEq, |
| 205 empty_dict_.get(), NULL, storage_->Get()); | 245 empty_dict_.get(), NULL, NULL, storage_->Get()); |
| 206 } | 246 } |
| 207 | 247 |
| 208 TEST_P(ExtensionSettingsStorageTest, RemoveWithMultipleValues) { | 248 TEST_P(ExtensionSettingsStorageTest, RemoveWithMultipleValues) { |
| 209 EXPECT_PRED_FORMAT3(SettingsEq, | 249 EXPECT_PRED_FORMAT4(SettingsEq, |
| 210 dict123_.get(), &set123_, storage_->Set(*dict123_)); | 250 dict123_.get(), empty_dict_.get(), &set123_, storage_->Set(*dict123_)); |
| 211 EXPECT_PRED_FORMAT3(SettingsEq, | 251 EXPECT_PRED_FORMAT4(SettingsEq, |
| 212 NULL, &set3_, storage_->Remove(key3_)); | 252 NULL, dict3_.get(), &set3_, storage_->Remove(key3_)); |
| 213 | 253 |
| 214 EXPECT_PRED_FORMAT3(SettingsEq, | 254 EXPECT_PRED_FORMAT4(SettingsEq, |
| 215 dict1_.get(), NULL, storage_->Get(key1_)); | 255 dict1_.get(), NULL, NULL, storage_->Get(key1_)); |
| 216 EXPECT_PRED_FORMAT3(SettingsEq, | 256 EXPECT_PRED_FORMAT4(SettingsEq, |
| 217 empty_dict_.get(), NULL, storage_->Get(key3_)); | 257 empty_dict_.get(), NULL, NULL, storage_->Get(key3_)); |
| 218 EXPECT_PRED_FORMAT3(SettingsEq, | 258 EXPECT_PRED_FORMAT4(SettingsEq, |
| 219 empty_dict_.get(), NULL, storage_->Get(empty_list_)); | 259 empty_dict_.get(), NULL, NULL, storage_->Get(empty_list_)); |
| 220 EXPECT_PRED_FORMAT3(SettingsEq, | 260 EXPECT_PRED_FORMAT4(SettingsEq, |
| 221 dict1_.get(), NULL, storage_->Get(list1_)); | 261 dict1_.get(), NULL, NULL, storage_->Get(list1_)); |
| 222 EXPECT_PRED_FORMAT3(SettingsEq, | 262 EXPECT_PRED_FORMAT4(SettingsEq, |
| 223 dict12_.get(), NULL, storage_->Get(list12_)); | 263 dict12_.get(), NULL, NULL, storage_->Get(list12_)); |
| 224 EXPECT_PRED_FORMAT3(SettingsEq, | 264 EXPECT_PRED_FORMAT4(SettingsEq, |
| 225 dict1_.get(), NULL, storage_->Get(list13_)); | 265 dict1_.get(), NULL, NULL, storage_->Get(list13_)); |
| 226 EXPECT_PRED_FORMAT3(SettingsEq, | 266 EXPECT_PRED_FORMAT4(SettingsEq, |
| 227 dict12_.get(), NULL, storage_->Get(list123_)); | 267 dict12_.get(), NULL, NULL, storage_->Get(list123_)); |
| 228 EXPECT_PRED_FORMAT3(SettingsEq, | 268 EXPECT_PRED_FORMAT4(SettingsEq, |
| 229 dict12_.get(), NULL, storage_->Get()); | 269 dict12_.get(), NULL, NULL, storage_->Get()); |
| 230 | 270 |
| 231 EXPECT_PRED_FORMAT3(SettingsEq, | 271 EXPECT_PRED_FORMAT4(SettingsEq, |
| 232 NULL, &set12_, storage_->Remove(list12_)); | 272 NULL, dict12_.get(), &set12_, storage_->Remove(list12_)); |
| 233 | 273 |
| 234 EXPECT_PRED_FORMAT3(SettingsEq, | 274 EXPECT_PRED_FORMAT4(SettingsEq, |
| 235 empty_dict_.get(), NULL, storage_->Get(key1_)); | 275 empty_dict_.get(), NULL, NULL, storage_->Get(key1_)); |
| 236 EXPECT_PRED_FORMAT3(SettingsEq, | 276 EXPECT_PRED_FORMAT4(SettingsEq, |
| 237 empty_dict_.get(), NULL, storage_->Get(key3_)); | 277 empty_dict_.get(), NULL, NULL, storage_->Get(key3_)); |
| 238 EXPECT_PRED_FORMAT3(SettingsEq, | 278 EXPECT_PRED_FORMAT4(SettingsEq, |
| 239 empty_dict_.get(), NULL, storage_->Get(empty_list_)); | 279 empty_dict_.get(), NULL, NULL, storage_->Get(empty_list_)); |
| 240 EXPECT_PRED_FORMAT3(SettingsEq, | 280 EXPECT_PRED_FORMAT4(SettingsEq, |
| 241 empty_dict_.get(), NULL, storage_->Get(list1_)); | 281 empty_dict_.get(), NULL, NULL, storage_->Get(list1_)); |
| 242 EXPECT_PRED_FORMAT3(SettingsEq, | 282 EXPECT_PRED_FORMAT4(SettingsEq, |
| 243 empty_dict_.get(), NULL, storage_->Get(list12_)); | 283 empty_dict_.get(), NULL, NULL, storage_->Get(list12_)); |
| 244 EXPECT_PRED_FORMAT3(SettingsEq, | 284 EXPECT_PRED_FORMAT4(SettingsEq, |
| 245 empty_dict_.get(), NULL, storage_->Get(list13_)); | 285 empty_dict_.get(), NULL, NULL, storage_->Get(list13_)); |
| 246 EXPECT_PRED_FORMAT3(SettingsEq, | 286 EXPECT_PRED_FORMAT4(SettingsEq, |
| 247 empty_dict_.get(), NULL, storage_->Get(list123_)); | 287 empty_dict_.get(), NULL, NULL, storage_->Get(list123_)); |
| 248 EXPECT_PRED_FORMAT3(SettingsEq, | 288 EXPECT_PRED_FORMAT4(SettingsEq, |
| 249 empty_dict_.get(), NULL, storage_->Get()); | 289 empty_dict_.get(), NULL, NULL, storage_->Get()); |
| 250 } | 290 } |
| 251 | 291 |
| 252 TEST_P(ExtensionSettingsStorageTest, SetWhenOverwriting) { | 292 TEST_P(ExtensionSettingsStorageTest, SetWhenOverwriting) { |
| 253 DictionaryValue key1_val2; | 293 DictionaryValue key1_val2; |
| 254 key1_val2.Set(key1_, val2_->DeepCopy()); | 294 key1_val2.Set(key1_, val2_->DeepCopy()); |
| 255 | 295 |
| 256 EXPECT_PRED_FORMAT3(SettingsEq, | 296 EXPECT_PRED_FORMAT4(SettingsEq, |
| 257 &key1_val2, &set1_, storage_->Set(key1_, *val2_)); | 297 &key1_val2, empty_dict_.get(), &set1_, storage_->Set(key1_, *val2_)); |
| 258 EXPECT_PRED_FORMAT3(SettingsEq, | 298 EXPECT_PRED_FORMAT4(SettingsEq, |
| 259 dict12_.get(), &set12_, storage_->Set(*dict12_)); | 299 dict12_.get(), &key1_val2, &set12_, storage_->Set(*dict12_)); |
| 260 | 300 |
| 261 EXPECT_PRED_FORMAT3(SettingsEq, | 301 EXPECT_PRED_FORMAT4(SettingsEq, |
| 262 dict1_.get(), NULL, storage_->Get(key1_)); | 302 dict1_.get(), NULL, NULL, storage_->Get(key1_)); |
| 263 EXPECT_PRED_FORMAT3(SettingsEq, | 303 EXPECT_PRED_FORMAT4(SettingsEq, |
| 264 empty_dict_.get(), NULL, storage_->Get(key3_)); | 304 empty_dict_.get(), NULL, NULL, storage_->Get(key3_)); |
| 265 EXPECT_PRED_FORMAT3(SettingsEq, | 305 EXPECT_PRED_FORMAT4(SettingsEq, |
| 266 empty_dict_.get(), NULL, storage_->Get(empty_list_)); | 306 empty_dict_.get(), NULL, NULL, storage_->Get(empty_list_)); |
| 267 EXPECT_PRED_FORMAT3(SettingsEq, | 307 EXPECT_PRED_FORMAT4(SettingsEq, |
| 268 dict1_.get(), NULL, storage_->Get(list1_)); | 308 dict1_.get(), NULL, NULL, storage_->Get(list1_)); |
| 269 EXPECT_PRED_FORMAT3(SettingsEq, | 309 EXPECT_PRED_FORMAT4(SettingsEq, |
| 270 dict12_.get(), NULL, storage_->Get(list12_)); | 310 dict12_.get(), NULL, NULL, storage_->Get(list12_)); |
| 271 EXPECT_PRED_FORMAT3(SettingsEq, | 311 EXPECT_PRED_FORMAT4(SettingsEq, |
| 272 dict1_.get(), NULL, storage_->Get(list13_)); | 312 dict1_.get(), NULL, NULL, storage_->Get(list13_)); |
| 273 EXPECT_PRED_FORMAT3(SettingsEq, | 313 EXPECT_PRED_FORMAT4(SettingsEq, |
| 274 dict12_.get(), NULL, storage_->Get(list123_)); | 314 dict12_.get(), NULL, NULL, storage_->Get(list123_)); |
| 275 EXPECT_PRED_FORMAT3(SettingsEq, | 315 EXPECT_PRED_FORMAT4(SettingsEq, |
| 276 dict12_.get(), NULL, storage_->Get()); | 316 dict12_.get(), NULL, NULL, storage_->Get()); |
| 277 } | 317 } |
| 278 | 318 |
| 279 TEST_P(ExtensionSettingsStorageTest, ClearWhenEmpty) { | 319 TEST_P(ExtensionSettingsStorageTest, ClearWhenEmpty) { |
| 280 EXPECT_PRED_FORMAT3(SettingsEq, | 320 EXPECT_PRED_FORMAT4(SettingsEq, |
| 281 NULL, &empty_set_, storage_->Clear()); | 321 NULL, empty_dict_.get(), &empty_set_, storage_->Clear()); |
| 282 | 322 |
| 283 EXPECT_PRED_FORMAT3(SettingsEq, | 323 EXPECT_PRED_FORMAT4(SettingsEq, |
| 284 empty_dict_.get(), NULL, storage_->Get(key1_)); | 324 empty_dict_.get(), NULL, NULL, storage_->Get(key1_)); |
| 285 EXPECT_PRED_FORMAT3(SettingsEq, | 325 EXPECT_PRED_FORMAT4(SettingsEq, |
| 286 empty_dict_.get(), NULL, storage_->Get(empty_list_)); | 326 empty_dict_.get(), NULL, NULL, storage_->Get(empty_list_)); |
| 287 EXPECT_PRED_FORMAT3(SettingsEq, | 327 EXPECT_PRED_FORMAT4(SettingsEq, |
| 288 empty_dict_.get(), NULL, storage_->Get(list123_)); | 328 empty_dict_.get(), NULL, NULL, storage_->Get(list123_)); |
| 289 EXPECT_PRED_FORMAT3(SettingsEq, | 329 EXPECT_PRED_FORMAT4(SettingsEq, |
| 290 empty_dict_.get(), NULL, storage_->Get()); | 330 empty_dict_.get(), NULL, NULL, storage_->Get()); |
| 291 } | 331 } |
| 292 | 332 |
| 293 TEST_P(ExtensionSettingsStorageTest, ClearWhenNotEmpty) { | 333 TEST_P(ExtensionSettingsStorageTest, ClearWhenNotEmpty) { |
| 294 EXPECT_PRED_FORMAT3(SettingsEq, | 334 EXPECT_PRED_FORMAT4(SettingsEq, |
| 295 dict12_.get(), &set12_, storage_->Set(*dict12_)); | 335 dict12_.get(), empty_dict_.get(), &set12_, storage_->Set(*dict12_)); |
| 296 EXPECT_PRED_FORMAT3(SettingsEq, | 336 EXPECT_PRED_FORMAT4(SettingsEq, |
| 297 NULL, &set12_, storage_->Clear()); | 337 NULL, dict12_.get(), &set12_, storage_->Clear()); |
| 298 | 338 |
| 299 EXPECT_PRED_FORMAT3(SettingsEq, | 339 EXPECT_PRED_FORMAT4(SettingsEq, |
| 300 empty_dict_.get(), NULL, storage_->Get(key1_)); | 340 empty_dict_.get(), NULL, NULL, storage_->Get(key1_)); |
| 301 EXPECT_PRED_FORMAT3(SettingsEq, | 341 EXPECT_PRED_FORMAT4(SettingsEq, |
| 302 empty_dict_.get(), NULL, storage_->Get(empty_list_)); | 342 empty_dict_.get(), NULL, NULL, storage_->Get(empty_list_)); |
| 303 EXPECT_PRED_FORMAT3(SettingsEq, | 343 EXPECT_PRED_FORMAT4(SettingsEq, |
| 304 empty_dict_.get(), NULL, storage_->Get(list123_)); | 344 empty_dict_.get(), NULL, NULL, storage_->Get(list123_)); |
| 305 EXPECT_PRED_FORMAT3(SettingsEq, | 345 EXPECT_PRED_FORMAT4(SettingsEq, |
| 306 empty_dict_.get(), NULL, storage_->Get()); | 346 empty_dict_.get(), NULL, NULL, storage_->Get()); |
| 307 } | 347 } |
| 308 | 348 |
| 309 // Dots should be allowed in key names; they shouldn't be interpreted as | 349 // Dots should be allowed in key names; they shouldn't be interpreted as |
| 310 // indexing into a dictionary. | 350 // indexing into a dictionary. |
| 311 TEST_P(ExtensionSettingsStorageTest, DotsInKeyNames) { | 351 TEST_P(ExtensionSettingsStorageTest, DotsInKeyNames) { |
| 312 std::string dot_key("foo.bar"); | 352 std::string dot_key("foo.bar"); |
| 313 StringValue dot_value("baz.qux"); | 353 StringValue dot_value("baz.qux"); |
| 314 std::vector<std::string> dot_list; | 354 std::vector<std::string> dot_list; |
| 315 dot_list.push_back(dot_key); | 355 dot_list.push_back(dot_key); |
| 316 std::set<std::string> dot_set; | 356 std::set<std::string> dot_set; |
| 317 dot_set.insert(dot_key); | 357 dot_set.insert(dot_key); |
| 318 DictionaryValue dot_dict; | 358 DictionaryValue dot_dict; |
| 319 dot_dict.SetWithoutPathExpansion(dot_key, dot_value.DeepCopy()); | 359 dot_dict.SetWithoutPathExpansion(dot_key, dot_value.DeepCopy()); |
| 320 | 360 |
| 321 EXPECT_PRED_FORMAT3(SettingsEq, | 361 EXPECT_PRED_FORMAT4(SettingsEq, |
| 322 empty_dict_.get(), NULL, storage_->Get(dot_key)); | 362 empty_dict_.get(), NULL, NULL, storage_->Get(dot_key)); |
| 323 | 363 |
| 324 EXPECT_PRED_FORMAT3(SettingsEq, | 364 EXPECT_PRED_FORMAT4(SettingsEq, |
| 325 &dot_dict, &dot_set, storage_->Set(dot_key, dot_value)); | 365 &dot_dict, empty_dict_.get(), &dot_set, |
| 326 EXPECT_PRED_FORMAT3(SettingsEq, | 366 storage_->Set(dot_key, dot_value)); |
| 327 &dot_dict, &empty_set_, storage_->Set(dot_key, dot_value)); | 367 EXPECT_PRED_FORMAT4(SettingsEq, |
| 328 EXPECT_PRED_FORMAT3(SettingsEq, | 368 &dot_dict, &dot_dict, &empty_set_, |
| 329 &dot_dict, NULL, storage_->Get(dot_key)); | 369 storage_->Set(dot_key, dot_value)); |
| 370 EXPECT_PRED_FORMAT4(SettingsEq, |
| 371 &dot_dict, NULL, NULL, storage_->Get(dot_key)); |
| 330 | 372 |
| 331 EXPECT_PRED_FORMAT3(SettingsEq, | 373 EXPECT_PRED_FORMAT4(SettingsEq, |
| 332 NULL, &dot_set, storage_->Remove(dot_key)); | 374 NULL, &dot_dict, &dot_set, storage_->Remove(dot_key)); |
| 333 EXPECT_PRED_FORMAT3(SettingsEq, | 375 EXPECT_PRED_FORMAT4(SettingsEq, |
| 334 NULL, &empty_set_, storage_->Remove(dot_key)); | 376 NULL, empty_dict_.get(), &empty_set_, storage_->Remove(dot_key)); |
| 335 EXPECT_PRED_FORMAT3(SettingsEq, | 377 EXPECT_PRED_FORMAT4(SettingsEq, |
| 336 &dot_dict, &dot_set, storage_->Set(dot_dict)); | 378 &dot_dict, empty_dict_.get(), &dot_set, storage_->Set(dot_dict)); |
| 337 EXPECT_PRED_FORMAT3(SettingsEq, | 379 EXPECT_PRED_FORMAT4(SettingsEq, |
| 338 &dot_dict, NULL, storage_->Get(dot_list)); | 380 &dot_dict, NULL, NULL, storage_->Get(dot_list)); |
| 339 EXPECT_PRED_FORMAT3(SettingsEq, | 381 EXPECT_PRED_FORMAT4(SettingsEq, |
| 340 &dot_dict, NULL, storage_->Get()); | 382 &dot_dict, NULL, NULL, storage_->Get()); |
| 341 | 383 |
| 342 EXPECT_PRED_FORMAT3(SettingsEq, | 384 EXPECT_PRED_FORMAT4(SettingsEq, |
| 343 NULL, &dot_set, storage_->Remove(dot_list)); | 385 NULL, &dot_dict, &dot_set, storage_->Remove(dot_list)); |
| 344 EXPECT_PRED_FORMAT3(SettingsEq, | 386 EXPECT_PRED_FORMAT4(SettingsEq, |
| 345 empty_dict_.get(), NULL, storage_->Get(dot_key)); | 387 empty_dict_.get(), NULL, NULL, storage_->Get(dot_key)); |
| 346 EXPECT_PRED_FORMAT3(SettingsEq, | 388 EXPECT_PRED_FORMAT4(SettingsEq, |
| 347 empty_dict_.get(), NULL, storage_->Get()); | 389 empty_dict_.get(), NULL, NULL, storage_->Get()); |
| 348 } | 390 } |
| 349 | 391 |
| 350 TEST_P(ExtensionSettingsStorageTest, DotsInKeyNamesWithDicts) { | 392 TEST_P(ExtensionSettingsStorageTest, DotsInKeyNamesWithDicts) { |
| 351 DictionaryValue outer_dict; | 393 DictionaryValue outer_dict; |
| 352 DictionaryValue* inner_dict = new DictionaryValue(); | 394 DictionaryValue* inner_dict = new DictionaryValue(); |
| 353 outer_dict.Set("foo", inner_dict); | 395 outer_dict.Set("foo", inner_dict); |
| 354 inner_dict->Set("bar", Value::CreateStringValue("baz")); | 396 inner_dict->Set("bar", Value::CreateStringValue("baz")); |
| 355 std::set<std::string> changed_keys; | 397 std::set<std::string> changed_keys; |
| 356 changed_keys.insert("foo"); | 398 changed_keys.insert("foo"); |
| 357 | 399 |
| 358 EXPECT_PRED_FORMAT3(SettingsEq, | 400 EXPECT_PRED_FORMAT4(SettingsEq, |
| 359 &outer_dict, &changed_keys, storage_->Set(outer_dict)); | 401 &outer_dict, empty_dict_.get(), &changed_keys, storage_->Set(outer_dict)); |
| 360 EXPECT_PRED_FORMAT3(SettingsEq, | 402 EXPECT_PRED_FORMAT4(SettingsEq, |
| 361 &outer_dict, NULL, storage_->Get("foo")); | 403 &outer_dict, NULL, NULL, storage_->Get("foo")); |
| 362 EXPECT_PRED_FORMAT3(SettingsEq, | 404 EXPECT_PRED_FORMAT4(SettingsEq, |
| 363 empty_dict_.get(), NULL, storage_->Get("foo.bar")); | 405 empty_dict_.get(), NULL, NULL, storage_->Get("foo.bar")); |
| 364 } | 406 } |
| 365 | 407 |
| 366 TEST_P(ExtensionSettingsStorageTest, ComplexChangedKeysScenarios) { | 408 TEST_P(ExtensionSettingsStorageTest, ComplexChangedKeysScenarios) { |
| 367 // Test: | 409 // Test: |
| 368 // - Setting over missing/changed/same keys, combinations. | 410 // - Setting over missing/changed/same keys, combinations. |
| 369 // - Removing over missing and present keys, combinations. | 411 // - Removing over missing and present keys, combinations. |
| 370 // - Clearing. | 412 // - Clearing. |
| 371 std::vector<std::string> complex_list; | 413 std::vector<std::string> complex_list; |
| 372 std::set<std::string> complex_set; | 414 std::set<std::string> complex_set; |
| 373 DictionaryValue complex_dict; | 415 DictionaryValue complex_dict; |
| 416 DictionaryValue complex_changed_dict; |
| 374 | 417 |
| 375 EXPECT_PRED_FORMAT3(SettingsEq, | 418 EXPECT_PRED_FORMAT4(SettingsEq, |
| 376 dict1_.get(), &set1_, storage_->Set(key1_, *val1_)); | 419 dict1_.get(), empty_dict_.get(), &set1_, storage_->Set(key1_, *val1_)); |
| 377 EXPECT_PRED_FORMAT3(SettingsEq, | 420 EXPECT_PRED_FORMAT4(SettingsEq, |
| 378 dict1_.get(), &empty_set_, storage_->Set(key1_, *val1_)); | 421 dict1_.get(), dict1_.get(), &empty_set_, storage_->Set(key1_, *val1_)); |
| 379 | 422 |
| 380 complex_dict.Clear(); | 423 complex_dict.Clear(); |
| 381 complex_dict.Set(key1_, val2_->DeepCopy()); | 424 complex_dict.Set(key1_, val2_->DeepCopy()); |
| 382 EXPECT_PRED_FORMAT3(SettingsEq, | 425 EXPECT_PRED_FORMAT4(SettingsEq, |
| 383 &complex_dict, &set1_, storage_->Set(key1_, *val2_)); | 426 &complex_dict, dict1_.get(), &set1_, storage_->Set(key1_, *val2_)); |
| 384 | 427 |
| 385 EXPECT_PRED_FORMAT3(SettingsEq, | 428 EXPECT_PRED_FORMAT4(SettingsEq, |
| 386 NULL, &set1_, storage_->Remove(key1_)); | 429 NULL, &complex_dict, &set1_, storage_->Remove(key1_)); |
| 387 EXPECT_PRED_FORMAT3(SettingsEq, | 430 EXPECT_PRED_FORMAT4(SettingsEq, |
| 388 NULL, &empty_set_, storage_->Remove(key1_)); | 431 NULL, empty_dict_.get(), &empty_set_, storage_->Remove(key1_)); |
| 389 | 432 |
| 390 EXPECT_PRED_FORMAT3(SettingsEq, | 433 EXPECT_PRED_FORMAT4(SettingsEq, |
| 391 dict1_.get(), &set1_, storage_->Set(key1_, *val1_)); | 434 dict1_.get(), empty_dict_.get(), &set1_, storage_->Set(key1_, *val1_)); |
| 392 EXPECT_PRED_FORMAT3(SettingsEq, | 435 EXPECT_PRED_FORMAT4(SettingsEq, |
| 393 NULL, &set1_, storage_->Clear()); | 436 NULL, dict1_.get(), &set1_, storage_->Clear()); |
| 394 EXPECT_PRED_FORMAT3(SettingsEq, | 437 EXPECT_PRED_FORMAT4(SettingsEq, |
| 395 NULL, &empty_set_, storage_->Clear()); | 438 NULL, empty_dict_.get(), &empty_set_, storage_->Clear()); |
| 396 | 439 |
| 397 EXPECT_PRED_FORMAT3(SettingsEq, | 440 EXPECT_PRED_FORMAT4(SettingsEq, |
| 398 dict12_.get(), &set12_, storage_->Set(*dict12_)); | 441 dict12_.get(), empty_dict_.get(), &set12_, storage_->Set(*dict12_)); |
| 399 EXPECT_PRED_FORMAT3(SettingsEq, | 442 EXPECT_PRED_FORMAT4(SettingsEq, |
| 400 dict12_.get(), &empty_set_, storage_->Set(*dict12_)); | 443 dict12_.get(), dict12_.get(), &empty_set_, storage_->Set(*dict12_)); |
| 401 EXPECT_PRED_FORMAT3(SettingsEq, | 444 EXPECT_PRED_FORMAT4(SettingsEq, |
| 402 dict123_.get(), &set3_, storage_->Set(*dict123_)); | 445 dict123_.get(), dict12_.get(), &set3_, storage_->Set(*dict123_)); |
| 403 | 446 |
| 404 complex_dict.Clear(); | 447 complex_dict.Clear(); |
| 405 complex_dict.Set(key1_, val2_->DeepCopy()); | 448 complex_dict.Set(key1_, val2_->DeepCopy()); |
| 406 complex_dict.Set(key2_, val2_->DeepCopy()); | 449 complex_dict.Set(key2_, val2_->DeepCopy()); |
| 407 complex_dict.Set("asdf", val1_->DeepCopy()); | 450 complex_dict.Set("asdf", val1_->DeepCopy()); |
| 408 complex_dict.Set("qwerty", val3_->DeepCopy()); | 451 complex_dict.Set("qwerty", val3_->DeepCopy()); |
| 452 complex_changed_dict.Clear(); |
| 453 complex_changed_dict.Set(key1_, val1_->DeepCopy()); |
| 454 complex_changed_dict.Set(key2_, val2_->DeepCopy()); |
| 409 complex_set.clear(); | 455 complex_set.clear(); |
| 410 complex_set.insert(key1_); | 456 complex_set.insert(key1_); |
| 411 complex_set.insert("asdf"); | 457 complex_set.insert("asdf"); |
| 412 complex_set.insert("qwerty"); | 458 complex_set.insert("qwerty"); |
| 413 EXPECT_PRED_FORMAT3(SettingsEq, | 459 EXPECT_PRED_FORMAT4(SettingsEq, |
| 414 &complex_dict, &complex_set, storage_->Set(complex_dict)); | 460 &complex_dict, &complex_changed_dict, &complex_set, |
| 461 storage_->Set(complex_dict)); |
| 415 | 462 |
| 416 EXPECT_PRED_FORMAT3(SettingsEq, | 463 complex_changed_dict.Clear(); |
| 417 NULL, &set12_, storage_->Remove(list12_)); | 464 complex_changed_dict.Set(key1_, val2_->DeepCopy()); |
| 418 EXPECT_PRED_FORMAT3(SettingsEq, | 465 complex_changed_dict.Set(key2_, val2_->DeepCopy()); |
| 419 NULL, &empty_set_, storage_->Remove(list12_)); | 466 EXPECT_PRED_FORMAT4(SettingsEq, |
| 467 NULL, &complex_changed_dict, &set12_, storage_->Remove(list12_)); |
| 468 EXPECT_PRED_FORMAT4(SettingsEq, |
| 469 NULL, empty_dict_.get(), &empty_set_, storage_->Remove(list12_)); |
| 420 | 470 |
| 421 complex_list.clear(); | 471 complex_list.clear(); |
| 422 complex_list.push_back(key1_); | 472 complex_list.push_back(key1_); |
| 423 complex_list.push_back("asdf"); | 473 complex_list.push_back("asdf"); |
| 474 complex_changed_dict.Clear(); |
| 475 complex_changed_dict.Set("asdf", val1_->DeepCopy()); |
| 424 complex_set.clear(); | 476 complex_set.clear(); |
| 425 complex_set.insert("asdf"); | 477 complex_set.insert("asdf"); |
| 426 EXPECT_PRED_FORMAT3(SettingsEq, | 478 EXPECT_PRED_FORMAT4(SettingsEq, |
| 427 NULL, &complex_set, storage_->Remove(complex_list)); | 479 NULL, |
| 480 &complex_changed_dict, |
| 481 &complex_set, |
| 482 storage_->Remove(complex_list)); |
| 428 | 483 |
| 484 complex_changed_dict.Clear(); |
| 485 complex_changed_dict.Set(key3_, val3_->DeepCopy()); |
| 486 complex_changed_dict.Set("qwerty", val3_->DeepCopy()); |
| 429 complex_set.clear(); | 487 complex_set.clear(); |
| 430 complex_set.insert(key3_); | 488 complex_set.insert(key3_); |
| 431 complex_set.insert("qwerty"); | 489 complex_set.insert("qwerty"); |
| 432 EXPECT_PRED_FORMAT3(SettingsEq, | 490 EXPECT_PRED_FORMAT4(SettingsEq, |
| 433 NULL, &complex_set, storage_->Clear()); | 491 NULL, &complex_changed_dict, &complex_set, storage_->Clear()); |
| 434 EXPECT_PRED_FORMAT3(SettingsEq, | 492 EXPECT_PRED_FORMAT4(SettingsEq, |
| 435 NULL, &empty_set_, storage_->Clear()); | 493 NULL, empty_dict_.get(), &empty_set_, storage_->Clear()); |
| 436 } | 494 } |
| OLD | NEW |