Index: base/values_unittest.cc |
diff --git a/base/values_unittest.cc b/base/values_unittest.cc |
index bb07026a9162998499fb8208f4e78737ae8699b0..c8a6cbf9a7735ba3b501c981720d69107c3ddf5b 100644 |
--- a/base/values_unittest.cc |
+++ b/base/values_unittest.cc |
@@ -809,4 +809,289 @@ TEST(ValuesTest, DictionaryIterator) { |
EXPECT_TRUE(seen2); |
} |
+// DictionaryValue/ListValue's Get*() methods should accept NULL as an out-value |
+// and still return true/false based on success. |
+TEST(ValuesTest, GetWithNullOutValue) { |
+ DictionaryValue main_dict; |
+ ListValue main_list; |
+ |
+ FundamentalValue bool_value(false); |
+ FundamentalValue int_value(1234); |
+ FundamentalValue double_value(12.34567); |
+ StringValue string_value("foo"); |
+ BinaryValue binary_value; |
+ DictionaryValue dict_value; |
+ ListValue list_value; |
+ |
+ main_dict.Set("bool", bool_value.DeepCopy()); |
+ main_dict.Set("int", int_value.DeepCopy()); |
+ main_dict.Set("double", double_value.DeepCopy()); |
+ main_dict.Set("string", string_value.DeepCopy()); |
+ main_dict.Set("binary", binary_value.DeepCopy()); |
+ main_dict.Set("dict", dict_value.DeepCopy()); |
+ main_dict.Set("list", list_value.DeepCopy()); |
+ |
+ main_list.Append(bool_value.DeepCopy()); |
+ main_list.Append(int_value.DeepCopy()); |
+ main_list.Append(double_value.DeepCopy()); |
+ main_list.Append(string_value.DeepCopy()); |
+ main_list.Append(binary_value.DeepCopy()); |
+ main_list.Append(dict_value.DeepCopy()); |
+ main_list.Append(list_value.DeepCopy()); |
+ |
+ EXPECT_TRUE(main_dict.Get("bool", NULL)); |
+ EXPECT_TRUE(main_dict.Get("int", NULL)); |
+ EXPECT_TRUE(main_dict.Get("double", NULL)); |
+ EXPECT_TRUE(main_dict.Get("string", NULL)); |
+ EXPECT_TRUE(main_dict.Get("binary", NULL)); |
+ EXPECT_TRUE(main_dict.Get("dict", NULL)); |
+ EXPECT_TRUE(main_dict.Get("list", NULL)); |
+ EXPECT_FALSE(main_dict.Get("DNE", NULL)); |
+ |
+ EXPECT_TRUE(main_dict.GetBoolean("bool", NULL)); |
+ EXPECT_FALSE(main_dict.GetBoolean("int", NULL)); |
+ EXPECT_FALSE(main_dict.GetBoolean("double", NULL)); |
+ EXPECT_FALSE(main_dict.GetBoolean("string", NULL)); |
+ EXPECT_FALSE(main_dict.GetBoolean("binary", NULL)); |
+ EXPECT_FALSE(main_dict.GetBoolean("dict", NULL)); |
+ EXPECT_FALSE(main_dict.GetBoolean("list", NULL)); |
+ EXPECT_FALSE(main_dict.GetBoolean("DNE", NULL)); |
+ |
+ EXPECT_FALSE(main_dict.GetInteger("bool", NULL)); |
+ EXPECT_TRUE(main_dict.GetInteger("int", NULL)); |
+ EXPECT_FALSE(main_dict.GetInteger("double", NULL)); |
+ EXPECT_FALSE(main_dict.GetInteger("string", NULL)); |
+ EXPECT_FALSE(main_dict.GetInteger("binary", NULL)); |
+ EXPECT_FALSE(main_dict.GetInteger("dict", NULL)); |
+ EXPECT_FALSE(main_dict.GetInteger("list", NULL)); |
+ EXPECT_FALSE(main_dict.GetInteger("DNE", NULL)); |
+ |
+ // Both int and double values can be obtained from GetDouble. |
+ EXPECT_FALSE(main_dict.GetDouble("bool", NULL)); |
+ EXPECT_TRUE(main_dict.GetDouble("int", NULL)); |
+ EXPECT_TRUE(main_dict.GetDouble("double", NULL)); |
+ EXPECT_FALSE(main_dict.GetDouble("string", NULL)); |
+ EXPECT_FALSE(main_dict.GetDouble("binary", NULL)); |
+ EXPECT_FALSE(main_dict.GetDouble("dict", NULL)); |
+ EXPECT_FALSE(main_dict.GetDouble("list", NULL)); |
+ EXPECT_FALSE(main_dict.GetDouble("DNE", NULL)); |
+ |
+ EXPECT_FALSE(main_dict.GetString("bool", static_cast<std::string*>(NULL))); |
+ EXPECT_FALSE(main_dict.GetString("int", static_cast<std::string*>(NULL))); |
+ EXPECT_FALSE(main_dict.GetString("double", static_cast<std::string*>(NULL))); |
+ EXPECT_TRUE(main_dict.GetString("string", static_cast<std::string*>(NULL))); |
+ EXPECT_FALSE(main_dict.GetString("binary", static_cast<std::string*>(NULL))); |
+ EXPECT_FALSE(main_dict.GetString("dict", static_cast<std::string*>(NULL))); |
+ EXPECT_FALSE(main_dict.GetString("list", static_cast<std::string*>(NULL))); |
+ EXPECT_FALSE(main_dict.GetString("DNE", static_cast<std::string*>(NULL))); |
+ |
+ EXPECT_FALSE(main_dict.GetString("bool", static_cast<string16*>(NULL))); |
+ EXPECT_FALSE(main_dict.GetString("int", static_cast<string16*>(NULL))); |
+ EXPECT_FALSE(main_dict.GetString("double", static_cast<string16*>(NULL))); |
+ EXPECT_TRUE(main_dict.GetString("string", static_cast<string16*>(NULL))); |
+ EXPECT_FALSE(main_dict.GetString("binary", static_cast<string16*>(NULL))); |
+ EXPECT_FALSE(main_dict.GetString("dict", static_cast<string16*>(NULL))); |
+ EXPECT_FALSE(main_dict.GetString("list", static_cast<string16*>(NULL))); |
+ EXPECT_FALSE(main_dict.GetString("DNE", static_cast<string16*>(NULL))); |
+ |
+ EXPECT_FALSE(main_dict.GetBinary("bool", NULL)); |
+ EXPECT_FALSE(main_dict.GetBinary("int", NULL)); |
+ EXPECT_FALSE(main_dict.GetBinary("double", NULL)); |
+ EXPECT_FALSE(main_dict.GetBinary("string", NULL)); |
+ EXPECT_TRUE(main_dict.GetBinary("binary", NULL)); |
+ EXPECT_FALSE(main_dict.GetBinary("dict", NULL)); |
+ EXPECT_FALSE(main_dict.GetBinary("list", NULL)); |
+ EXPECT_FALSE(main_dict.GetBinary("DNE", NULL)); |
+ |
+ EXPECT_FALSE(main_dict.GetDictionary("bool", NULL)); |
+ EXPECT_FALSE(main_dict.GetDictionary("int", NULL)); |
+ EXPECT_FALSE(main_dict.GetDictionary("double", NULL)); |
+ EXPECT_FALSE(main_dict.GetDictionary("string", NULL)); |
+ EXPECT_FALSE(main_dict.GetDictionary("binary", NULL)); |
+ EXPECT_TRUE(main_dict.GetDictionary("dict", NULL)); |
+ EXPECT_FALSE(main_dict.GetDictionary("list", NULL)); |
+ EXPECT_FALSE(main_dict.GetDictionary("DNE", NULL)); |
+ |
+ EXPECT_FALSE(main_dict.GetList("bool", NULL)); |
+ EXPECT_FALSE(main_dict.GetList("int", NULL)); |
+ EXPECT_FALSE(main_dict.GetList("double", NULL)); |
+ EXPECT_FALSE(main_dict.GetList("string", NULL)); |
+ EXPECT_FALSE(main_dict.GetList("binary", NULL)); |
+ EXPECT_FALSE(main_dict.GetList("dict", NULL)); |
+ EXPECT_TRUE(main_dict.GetList("list", NULL)); |
+ EXPECT_FALSE(main_dict.GetList("DNE", NULL)); |
+ |
+ EXPECT_TRUE(main_dict.GetWithoutPathExpansion("bool", NULL)); |
+ EXPECT_TRUE(main_dict.GetWithoutPathExpansion("int", NULL)); |
+ EXPECT_TRUE(main_dict.GetWithoutPathExpansion("double", NULL)); |
+ EXPECT_TRUE(main_dict.GetWithoutPathExpansion("string", NULL)); |
+ EXPECT_TRUE(main_dict.GetWithoutPathExpansion("binary", NULL)); |
+ EXPECT_TRUE(main_dict.GetWithoutPathExpansion("dict", NULL)); |
+ EXPECT_TRUE(main_dict.GetWithoutPathExpansion("list", NULL)); |
+ EXPECT_FALSE(main_dict.GetWithoutPathExpansion("DNE", NULL)); |
+ |
+ EXPECT_TRUE(main_dict.GetBooleanWithoutPathExpansion("bool", NULL)); |
+ EXPECT_FALSE(main_dict.GetBooleanWithoutPathExpansion("int", NULL)); |
+ EXPECT_FALSE(main_dict.GetBooleanWithoutPathExpansion("double", NULL)); |
+ EXPECT_FALSE(main_dict.GetBooleanWithoutPathExpansion("string", NULL)); |
+ EXPECT_FALSE(main_dict.GetBooleanWithoutPathExpansion("binary", NULL)); |
+ EXPECT_FALSE(main_dict.GetBooleanWithoutPathExpansion("dict", NULL)); |
+ EXPECT_FALSE(main_dict.GetBooleanWithoutPathExpansion("list", NULL)); |
+ EXPECT_FALSE(main_dict.GetBooleanWithoutPathExpansion("DNE", NULL)); |
+ |
+ EXPECT_FALSE(main_dict.GetIntegerWithoutPathExpansion("bool", NULL)); |
+ EXPECT_TRUE(main_dict.GetIntegerWithoutPathExpansion("int", NULL)); |
+ EXPECT_FALSE(main_dict.GetIntegerWithoutPathExpansion("double", NULL)); |
+ EXPECT_FALSE(main_dict.GetIntegerWithoutPathExpansion("string", NULL)); |
+ EXPECT_FALSE(main_dict.GetIntegerWithoutPathExpansion("binary", NULL)); |
+ EXPECT_FALSE(main_dict.GetIntegerWithoutPathExpansion("dict", NULL)); |
+ EXPECT_FALSE(main_dict.GetIntegerWithoutPathExpansion("list", NULL)); |
+ EXPECT_FALSE(main_dict.GetIntegerWithoutPathExpansion("DNE", NULL)); |
+ |
+ EXPECT_FALSE(main_dict.GetDoubleWithoutPathExpansion("bool", NULL)); |
+ EXPECT_TRUE(main_dict.GetDoubleWithoutPathExpansion("int", NULL)); |
+ EXPECT_TRUE(main_dict.GetDoubleWithoutPathExpansion("double", NULL)); |
+ EXPECT_FALSE(main_dict.GetDoubleWithoutPathExpansion("string", NULL)); |
+ EXPECT_FALSE(main_dict.GetDoubleWithoutPathExpansion("binary", NULL)); |
+ EXPECT_FALSE(main_dict.GetDoubleWithoutPathExpansion("dict", NULL)); |
+ EXPECT_FALSE(main_dict.GetDoubleWithoutPathExpansion("list", NULL)); |
+ EXPECT_FALSE(main_dict.GetDoubleWithoutPathExpansion("DNE", NULL)); |
+ |
+ EXPECT_FALSE(main_dict.GetStringWithoutPathExpansion( |
+ "bool", static_cast<std::string*>(NULL))); |
+ EXPECT_FALSE(main_dict.GetStringWithoutPathExpansion( |
+ "int", static_cast<std::string*>(NULL))); |
+ EXPECT_FALSE(main_dict.GetStringWithoutPathExpansion( |
+ "double", static_cast<std::string*>(NULL))); |
+ EXPECT_TRUE(main_dict.GetStringWithoutPathExpansion( |
+ "string", static_cast<std::string*>(NULL))); |
+ EXPECT_FALSE(main_dict.GetStringWithoutPathExpansion( |
+ "binary", static_cast<std::string*>(NULL))); |
+ EXPECT_FALSE(main_dict.GetStringWithoutPathExpansion( |
+ "dict", static_cast<std::string*>(NULL))); |
+ EXPECT_FALSE(main_dict.GetStringWithoutPathExpansion( |
+ "list", static_cast<std::string*>(NULL))); |
+ EXPECT_FALSE(main_dict.GetStringWithoutPathExpansion( |
+ "DNE", static_cast<std::string*>(NULL))); |
+ |
+ EXPECT_FALSE(main_dict.GetStringWithoutPathExpansion( |
+ "bool", static_cast<string16*>(NULL))); |
+ EXPECT_FALSE(main_dict.GetStringWithoutPathExpansion( |
+ "int", static_cast<string16*>(NULL))); |
+ EXPECT_FALSE(main_dict.GetStringWithoutPathExpansion( |
+ "double", static_cast<string16*>(NULL))); |
+ EXPECT_TRUE(main_dict.GetStringWithoutPathExpansion( |
+ "string", static_cast<string16*>(NULL))); |
+ EXPECT_FALSE(main_dict.GetStringWithoutPathExpansion( |
+ "binary", static_cast<string16*>(NULL))); |
+ EXPECT_FALSE(main_dict.GetStringWithoutPathExpansion( |
+ "dict", static_cast<string16*>(NULL))); |
+ EXPECT_FALSE(main_dict.GetStringWithoutPathExpansion( |
+ "list", static_cast<string16*>(NULL))); |
+ EXPECT_FALSE(main_dict.GetStringWithoutPathExpansion( |
+ "DNE", static_cast<string16*>(NULL))); |
+ |
+ // There is no GetBinaryWithoutPathExpansion for some reason, but if there |
+ // were it should be tested here... |
+ |
+ EXPECT_FALSE(main_dict.GetDictionaryWithoutPathExpansion("bool", NULL)); |
+ EXPECT_FALSE(main_dict.GetDictionaryWithoutPathExpansion("int", NULL)); |
+ EXPECT_FALSE(main_dict.GetDictionaryWithoutPathExpansion("double", NULL)); |
+ EXPECT_FALSE(main_dict.GetDictionaryWithoutPathExpansion("string", NULL)); |
+ EXPECT_FALSE(main_dict.GetDictionaryWithoutPathExpansion("binary", NULL)); |
+ EXPECT_TRUE(main_dict.GetDictionaryWithoutPathExpansion("dict", NULL)); |
+ EXPECT_FALSE(main_dict.GetDictionaryWithoutPathExpansion("list", NULL)); |
+ EXPECT_FALSE(main_dict.GetDictionaryWithoutPathExpansion("DNE", NULL)); |
+ |
+ EXPECT_FALSE(main_dict.GetListWithoutPathExpansion("bool", NULL)); |
+ EXPECT_FALSE(main_dict.GetListWithoutPathExpansion("int", NULL)); |
+ EXPECT_FALSE(main_dict.GetListWithoutPathExpansion("double", NULL)); |
+ EXPECT_FALSE(main_dict.GetListWithoutPathExpansion("string", NULL)); |
+ EXPECT_FALSE(main_dict.GetListWithoutPathExpansion("binary", NULL)); |
+ EXPECT_FALSE(main_dict.GetListWithoutPathExpansion("dict", NULL)); |
+ EXPECT_TRUE(main_dict.GetListWithoutPathExpansion("list", NULL)); |
+ EXPECT_FALSE(main_dict.GetListWithoutPathExpansion("DNE", NULL)); |
+ |
+ EXPECT_TRUE(main_list.Get(0, NULL)); |
+ EXPECT_TRUE(main_list.Get(1, NULL)); |
+ EXPECT_TRUE(main_list.Get(2, NULL)); |
+ EXPECT_TRUE(main_list.Get(3, NULL)); |
+ EXPECT_TRUE(main_list.Get(4, NULL)); |
+ EXPECT_TRUE(main_list.Get(5, NULL)); |
+ EXPECT_TRUE(main_list.Get(6, NULL)); |
+ EXPECT_FALSE(main_list.Get(7, NULL)); |
+ |
+ EXPECT_TRUE(main_list.GetBoolean(0, NULL)); |
+ EXPECT_FALSE(main_list.GetBoolean(1, NULL)); |
+ EXPECT_FALSE(main_list.GetBoolean(2, NULL)); |
+ EXPECT_FALSE(main_list.GetBoolean(3, NULL)); |
+ EXPECT_FALSE(main_list.GetBoolean(4, NULL)); |
+ EXPECT_FALSE(main_list.GetBoolean(5, NULL)); |
+ EXPECT_FALSE(main_list.GetBoolean(6, NULL)); |
+ EXPECT_FALSE(main_list.GetBoolean(7, NULL)); |
+ |
+ EXPECT_FALSE(main_list.GetInteger(0, NULL)); |
+ EXPECT_TRUE(main_list.GetInteger(1, NULL)); |
+ EXPECT_FALSE(main_list.GetInteger(2, NULL)); |
+ EXPECT_FALSE(main_list.GetInteger(3, NULL)); |
+ EXPECT_FALSE(main_list.GetInteger(4, NULL)); |
+ EXPECT_FALSE(main_list.GetInteger(5, NULL)); |
+ EXPECT_FALSE(main_list.GetInteger(6, NULL)); |
+ EXPECT_FALSE(main_list.GetInteger(7, NULL)); |
+ |
+ EXPECT_FALSE(main_list.GetDouble(0, NULL)); |
+ EXPECT_TRUE(main_list.GetDouble(1, NULL)); |
+ EXPECT_TRUE(main_list.GetDouble(2, NULL)); |
+ EXPECT_FALSE(main_list.GetDouble(3, NULL)); |
+ EXPECT_FALSE(main_list.GetDouble(4, NULL)); |
+ EXPECT_FALSE(main_list.GetDouble(5, NULL)); |
+ EXPECT_FALSE(main_list.GetDouble(6, NULL)); |
+ EXPECT_FALSE(main_list.GetDouble(7, NULL)); |
+ |
+ EXPECT_FALSE(main_list.GetString(0, static_cast<std::string*>(NULL))); |
+ EXPECT_FALSE(main_list.GetString(1, static_cast<std::string*>(NULL))); |
+ EXPECT_FALSE(main_list.GetString(2, static_cast<std::string*>(NULL))); |
+ EXPECT_TRUE(main_list.GetString(3, static_cast<std::string*>(NULL))); |
+ EXPECT_FALSE(main_list.GetString(4, static_cast<std::string*>(NULL))); |
+ EXPECT_FALSE(main_list.GetString(5, static_cast<std::string*>(NULL))); |
+ EXPECT_FALSE(main_list.GetString(6, static_cast<std::string*>(NULL))); |
+ EXPECT_FALSE(main_list.GetString(7, static_cast<std::string*>(NULL))); |
+ |
+ EXPECT_FALSE(main_list.GetString(0, static_cast<string16*>(NULL))); |
+ EXPECT_FALSE(main_list.GetString(1, static_cast<string16*>(NULL))); |
+ EXPECT_FALSE(main_list.GetString(2, static_cast<string16*>(NULL))); |
+ EXPECT_TRUE(main_list.GetString(3, static_cast<string16*>(NULL))); |
+ EXPECT_FALSE(main_list.GetString(4, static_cast<string16*>(NULL))); |
+ EXPECT_FALSE(main_list.GetString(5, static_cast<string16*>(NULL))); |
+ EXPECT_FALSE(main_list.GetString(6, static_cast<string16*>(NULL))); |
+ EXPECT_FALSE(main_list.GetString(7, static_cast<string16*>(NULL))); |
+ |
+ EXPECT_FALSE(main_list.GetBinary(0, NULL)); |
+ EXPECT_FALSE(main_list.GetBinary(1, NULL)); |
+ EXPECT_FALSE(main_list.GetBinary(2, NULL)); |
+ EXPECT_FALSE(main_list.GetBinary(3, NULL)); |
+ EXPECT_TRUE(main_list.GetBinary(4, NULL)); |
+ EXPECT_FALSE(main_list.GetBinary(5, NULL)); |
+ EXPECT_FALSE(main_list.GetBinary(6, NULL)); |
+ EXPECT_FALSE(main_list.GetBinary(7, NULL)); |
+ |
+ EXPECT_FALSE(main_list.GetDictionary(0, NULL)); |
+ EXPECT_FALSE(main_list.GetDictionary(1, NULL)); |
+ EXPECT_FALSE(main_list.GetDictionary(2, NULL)); |
+ EXPECT_FALSE(main_list.GetDictionary(3, NULL)); |
+ EXPECT_FALSE(main_list.GetDictionary(4, NULL)); |
+ EXPECT_TRUE(main_list.GetDictionary(5, NULL)); |
+ EXPECT_FALSE(main_list.GetDictionary(6, NULL)); |
+ EXPECT_FALSE(main_list.GetDictionary(7, NULL)); |
+ |
+ EXPECT_FALSE(main_list.GetList(0, NULL)); |
+ EXPECT_FALSE(main_list.GetList(1, NULL)); |
+ EXPECT_FALSE(main_list.GetList(2, NULL)); |
+ EXPECT_FALSE(main_list.GetList(3, NULL)); |
+ EXPECT_FALSE(main_list.GetList(4, NULL)); |
+ EXPECT_FALSE(main_list.GetList(5, NULL)); |
+ EXPECT_TRUE(main_list.GetList(6, NULL)); |
+ EXPECT_FALSE(main_list.GetList(7, NULL)); |
+} |
+ |
} // namespace base |