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