Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(266)

Unified Diff: dbus/values_util_unittest.cc

Issue 9732029: Fix dbus::PopDataAsValue's behavior when a dictionary's keys including dots (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: _ Created 8 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« dbus/values_util.cc ('K') | « dbus/values_util.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: dbus/values_util_unittest.cc
diff --git a/dbus/values_util_unittest.cc b/dbus/values_util_unittest.cc
index 1f97cdc1df1e25559b0f47dcd486f1aaa89ecd0c..f97c55a77c8aaf80f32f7b2191481ca411a12091 100644
--- a/dbus/values_util_unittest.cc
+++ b/dbus/values_util_unittest.cc
@@ -282,6 +282,49 @@ TEST(ValuesUtilTest, PopStringToVariantDictionary) {
EXPECT_TRUE(value->Equals(&dictionary_value));
}
+TEST(ValuesUtilTest, PopDictionaryWithDottedStringKey) {
+ scoped_ptr<dbus::Response> response(dbus::Response::CreateEmpty());
+ // Append a dictionary.
+ dbus::MessageWriter writer(response.get());
+ dbus::MessageWriter sub_writer(NULL);
+ dbus::MessageWriter entry_writer(NULL);
+ writer.OpenArray("{sv}", &sub_writer);
+ sub_writer.OpenDictEntry(&entry_writer);
+ const std::string kKey1 = "www.example.com"; // String including dots.
+ entry_writer.AppendString(kKey1);
+ const bool kBoolValue = true;
+ entry_writer.AppendVariantOfBool(kBoolValue);
+ sub_writer.CloseContainer(&entry_writer);
+ sub_writer.OpenDictEntry(&entry_writer);
+ const std::string kKey2 = ".example"; // String starting with a dot.
+ entry_writer.AppendString(kKey2);
+ const int32 kInt32Value = -45;
+ entry_writer.AppendVariantOfInt32(kInt32Value);
+ sub_writer.CloseContainer(&entry_writer);
+ sub_writer.OpenDictEntry(&entry_writer);
+ const std::string kKey3 = "example."; // String ending with a dot.
+ entry_writer.AppendString(kKey3);
+ const double kDoubleValue = 4.9;
+ entry_writer.AppendVariantOfDouble(kDoubleValue);
+ sub_writer.CloseContainer(&entry_writer);
+ writer.CloseContainer(&sub_writer);
+
+ // Create the expected value.
+ DictionaryValue dictionary_value;
+ dictionary_value.SetWithoutPathExpansion(
+ kKey1, Value::CreateBooleanValue(kBoolValue));
+ dictionary_value.SetWithoutPathExpansion(
+ kKey2, Value::CreateIntegerValue(kInt32Value));
+ dictionary_value.SetWithoutPathExpansion(
+ kKey3, Value::CreateDoubleValue(kDoubleValue));
+
+ // Pop a dictinoary.
+ dbus::MessageReader reader(response.get());
+ scoped_ptr<Value> value(dbus::PopDataAsValue(&reader));
+ EXPECT_TRUE(value.get() != NULL);
+ EXPECT_TRUE(value->Equals(&dictionary_value));
+}
+
TEST(ValuesUtilTest, PopDoubleToIntDictionary) {
// Create test data.
const int32 kValues[] = {0, 1, 1, 2, 3, 5, 8, 13, 21};
@@ -310,7 +353,8 @@ TEST(ValuesUtilTest, PopDoubleToIntDictionary) {
scoped_ptr<Value> key_value(Value::CreateDoubleValue(keys[i]));
std::string key_string;
base::JSONWriter::Write(key_value.get(), &key_string);
- dictionary_value.SetInteger(key_string, values[i]);
+ dictionary_value.SetWithoutPathExpansion(
+ key_string, Value::CreateIntegerValue(values[i]));
}
// Pop a dictionary.
« dbus/values_util.cc ('K') | « dbus/values_util.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698