| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 <limits> | 5 #include <limits> |
| 6 | 6 |
| 7 #include "base/memory/scoped_ptr.h" | 7 #include "base/memory/scoped_ptr.h" |
| 8 #include "base/string16.h" | 8 #include "base/string16.h" |
| 9 #include "base/utf_string_conversions.h" | 9 #include "base/utf_string_conversions.h" |
| 10 #include "base/values.h" | 10 #include "base/values.h" |
| 11 #include "testing/gtest/include/gtest/gtest.h" | 11 #include "testing/gtest/include/gtest/gtest.h" |
| 12 | 12 |
| 13 namespace base { | 13 namespace base { |
| 14 | 14 |
| 15 TEST(ValuesTest, Basic) { | 15 TEST(ValuesTest, Basic) { |
| 16 // Test basic dictionary getting/setting | 16 // Test basic dictionary getting/setting |
| 17 DictionaryValue settings; | 17 DictionaryValue settings; |
| 18 std::string homepage = "http://google.com"; | 18 std::string homepage = "http://google.com"; |
| 19 ASSERT_FALSE(settings.GetString("global.homepage", &homepage)); | 19 ASSERT_FALSE(settings.GetString("global.homepage", &homepage)); |
| 20 ASSERT_EQ(std::string("http://google.com"), homepage); | 20 ASSERT_EQ(std::string("http://google.com"), homepage); |
| 21 | 21 |
| 22 ASSERT_FALSE(settings.Get("global", NULL)); | 22 ASSERT_FALSE(settings.Get("global", NULL)); |
| 23 settings.Set("global", Value::CreateBooleanValue(true)); | 23 settings.Set("global", new FundamentalValue(true)); |
| 24 ASSERT_TRUE(settings.Get("global", NULL)); | 24 ASSERT_TRUE(settings.Get("global", NULL)); |
| 25 settings.SetString("global.homepage", "http://scurvy.com"); | 25 settings.SetString("global.homepage", "http://scurvy.com"); |
| 26 ASSERT_TRUE(settings.Get("global", NULL)); | 26 ASSERT_TRUE(settings.Get("global", NULL)); |
| 27 homepage = "http://google.com"; | 27 homepage = "http://google.com"; |
| 28 ASSERT_TRUE(settings.GetString("global.homepage", &homepage)); | 28 ASSERT_TRUE(settings.GetString("global.homepage", &homepage)); |
| 29 ASSERT_EQ(std::string("http://scurvy.com"), homepage); | 29 ASSERT_EQ(std::string("http://scurvy.com"), homepage); |
| 30 | 30 |
| 31 // Test storing a dictionary in a list. | 31 // Test storing a dictionary in a list. |
| 32 ListValue* toolbar_bookmarks; | 32 ListValue* toolbar_bookmarks; |
| 33 ASSERT_FALSE( | 33 ASSERT_FALSE( |
| (...skipping 16 matching lines...) Expand all Loading... |
| 50 std::string bookmark_name = "Unnamed"; | 50 std::string bookmark_name = "Unnamed"; |
| 51 ASSERT_TRUE(bookmark->GetString("name", &bookmark_name)); | 51 ASSERT_TRUE(bookmark->GetString("name", &bookmark_name)); |
| 52 ASSERT_EQ(std::string("Froogle"), bookmark_name); | 52 ASSERT_EQ(std::string("Froogle"), bookmark_name); |
| 53 std::string bookmark_url; | 53 std::string bookmark_url; |
| 54 ASSERT_TRUE(bookmark->GetString("url", &bookmark_url)); | 54 ASSERT_TRUE(bookmark->GetString("url", &bookmark_url)); |
| 55 ASSERT_EQ(std::string("http://froogle.com"), bookmark_url); | 55 ASSERT_EQ(std::string("http://froogle.com"), bookmark_url); |
| 56 } | 56 } |
| 57 | 57 |
| 58 TEST(ValuesTest, List) { | 58 TEST(ValuesTest, List) { |
| 59 scoped_ptr<ListValue> mixed_list(new ListValue()); | 59 scoped_ptr<ListValue> mixed_list(new ListValue()); |
| 60 mixed_list->Set(0, Value::CreateBooleanValue(true)); | 60 mixed_list->Set(0, new FundamentalValue(true)); |
| 61 mixed_list->Set(1, Value::CreateIntegerValue(42)); | 61 mixed_list->Set(1, new FundamentalValue(42)); |
| 62 mixed_list->Set(2, Value::CreateDoubleValue(88.8)); | 62 mixed_list->Set(2, new FundamentalValue(88.8)); |
| 63 mixed_list->Set(3, Value::CreateStringValue("foo")); | 63 mixed_list->Set(3, new StringValue("foo")); |
| 64 ASSERT_EQ(4u, mixed_list->GetSize()); | 64 ASSERT_EQ(4u, mixed_list->GetSize()); |
| 65 | 65 |
| 66 Value *value = NULL; | 66 Value *value = NULL; |
| 67 bool bool_value = false; | 67 bool bool_value = false; |
| 68 int int_value = 0; | 68 int int_value = 0; |
| 69 double double_value = 0.0; | 69 double double_value = 0.0; |
| 70 std::string string_value; | 70 std::string string_value; |
| 71 | 71 |
| 72 ASSERT_FALSE(mixed_list->Get(4, &value)); | 72 ASSERT_FALSE(mixed_list->Get(4, &value)); |
| 73 | 73 |
| (...skipping 14 matching lines...) Expand all Loading... |
| 88 ASSERT_EQ(42, int_value); | 88 ASSERT_EQ(42, int_value); |
| 89 // implicit conversion from Integer to Double should be possible. | 89 // implicit conversion from Integer to Double should be possible. |
| 90 ASSERT_TRUE(mixed_list->GetDouble(1, &double_value)); | 90 ASSERT_TRUE(mixed_list->GetDouble(1, &double_value)); |
| 91 ASSERT_EQ(42, double_value); | 91 ASSERT_EQ(42, double_value); |
| 92 ASSERT_TRUE(mixed_list->GetDouble(2, &double_value)); | 92 ASSERT_TRUE(mixed_list->GetDouble(2, &double_value)); |
| 93 ASSERT_EQ(88.8, double_value); | 93 ASSERT_EQ(88.8, double_value); |
| 94 ASSERT_TRUE(mixed_list->GetString(3, &string_value)); | 94 ASSERT_TRUE(mixed_list->GetString(3, &string_value)); |
| 95 ASSERT_EQ("foo", string_value); | 95 ASSERT_EQ("foo", string_value); |
| 96 | 96 |
| 97 // Try searching in the mixed list. | 97 // Try searching in the mixed list. |
| 98 scoped_ptr<Value> sought_value(Value::CreateIntegerValue(42)); | 98 base::FundamentalValue sought_value(42); |
| 99 scoped_ptr<Value> not_found_value(Value::CreateBooleanValue(false)); | 99 base::FundamentalValue not_found_value(false); |
| 100 | 100 |
| 101 ASSERT_NE(mixed_list->end(), mixed_list->Find(*sought_value)); | 101 ASSERT_NE(mixed_list->end(), mixed_list->Find(sought_value)); |
| 102 ASSERT_TRUE((*mixed_list->Find(*sought_value))->GetAsInteger(&int_value)); | 102 ASSERT_TRUE((*mixed_list->Find(sought_value))->GetAsInteger(&int_value)); |
| 103 ASSERT_EQ(42, int_value); | 103 ASSERT_EQ(42, int_value); |
| 104 ASSERT_EQ(mixed_list->end(), mixed_list->Find(*not_found_value)); | 104 ASSERT_EQ(mixed_list->end(), mixed_list->Find(not_found_value)); |
| 105 } | 105 } |
| 106 | 106 |
| 107 TEST(ValuesTest, BinaryValue) { | 107 TEST(ValuesTest, BinaryValue) { |
| 108 char* buffer = NULL; | 108 char* buffer = NULL; |
| 109 // Passing a null buffer pointer doesn't yield a BinaryValue | 109 // Passing a null buffer pointer doesn't yield a BinaryValue |
| 110 scoped_ptr<BinaryValue> binary(BinaryValue::Create(buffer, 0)); | 110 scoped_ptr<BinaryValue> binary(BinaryValue::Create(buffer, 0)); |
| 111 ASSERT_FALSE(binary.get()); | 111 ASSERT_FALSE(binary.get()); |
| 112 | 112 |
| 113 // If you want to represent an empty binary value, use a zero-length buffer. | 113 // If you want to represent an empty binary value, use a zero-length buffer. |
| 114 buffer = new char[1]; | 114 buffer = new char[1]; |
| (...skipping 17 matching lines...) Expand all Loading... |
| 132 binary.reset(BinaryValue::CreateWithCopiedBuffer(stack_buffer, 42)); | 132 binary.reset(BinaryValue::CreateWithCopiedBuffer(stack_buffer, 42)); |
| 133 ASSERT_TRUE(binary.get()); | 133 ASSERT_TRUE(binary.get()); |
| 134 ASSERT_TRUE(binary->GetBuffer()); | 134 ASSERT_TRUE(binary->GetBuffer()); |
| 135 ASSERT_NE(stack_buffer, binary->GetBuffer()); | 135 ASSERT_NE(stack_buffer, binary->GetBuffer()); |
| 136 ASSERT_EQ(42U, binary->GetSize()); | 136 ASSERT_EQ(42U, binary->GetSize()); |
| 137 ASSERT_EQ(0, memcmp(stack_buffer, binary->GetBuffer(), binary->GetSize())); | 137 ASSERT_EQ(0, memcmp(stack_buffer, binary->GetBuffer(), binary->GetSize())); |
| 138 } | 138 } |
| 139 | 139 |
| 140 TEST(ValuesTest, StringValue) { | 140 TEST(ValuesTest, StringValue) { |
| 141 // Test overloaded CreateStringValue. | 141 // Test overloaded CreateStringValue. |
| 142 scoped_ptr<Value> narrow_value(Value::CreateStringValue("narrow")); | 142 scoped_ptr<Value> narrow_value(new StringValue("narrow")); |
| 143 ASSERT_TRUE(narrow_value.get()); | 143 ASSERT_TRUE(narrow_value.get()); |
| 144 ASSERT_TRUE(narrow_value->IsType(Value::TYPE_STRING)); | 144 ASSERT_TRUE(narrow_value->IsType(Value::TYPE_STRING)); |
| 145 scoped_ptr<Value> utf16_value( | 145 scoped_ptr<Value> utf16_value(new StringValue(ASCIIToUTF16("utf16"))); |
| 146 Value::CreateStringValue(ASCIIToUTF16("utf16"))); | |
| 147 ASSERT_TRUE(utf16_value.get()); | 146 ASSERT_TRUE(utf16_value.get()); |
| 148 ASSERT_TRUE(utf16_value->IsType(Value::TYPE_STRING)); | 147 ASSERT_TRUE(utf16_value->IsType(Value::TYPE_STRING)); |
| 149 | 148 |
| 150 // Test overloaded GetString. | 149 // Test overloaded GetString. |
| 151 std::string narrow = "http://google.com"; | 150 std::string narrow = "http://google.com"; |
| 152 string16 utf16 = ASCIIToUTF16("http://google.com"); | 151 string16 utf16 = ASCIIToUTF16("http://google.com"); |
| 153 ASSERT_TRUE(narrow_value->GetAsString(&narrow)); | 152 ASSERT_TRUE(narrow_value->GetAsString(&narrow)); |
| 154 ASSERT_TRUE(narrow_value->GetAsString(&utf16)); | 153 ASSERT_TRUE(narrow_value->GetAsString(&utf16)); |
| 155 ASSERT_EQ(std::string("narrow"), narrow); | 154 ASSERT_EQ(std::string("narrow"), narrow); |
| 156 ASSERT_EQ(ASCIIToUTF16("narrow"), utf16); | 155 ASSERT_EQ(ASCIIToUTF16("narrow"), utf16); |
| (...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 331 EXPECT_FALSE(dict.Get("this.isnt.expanded", &value3)); | 330 EXPECT_FALSE(dict.Get("this.isnt.expanded", &value3)); |
| 332 Value* value4; | 331 Value* value4; |
| 333 ASSERT_TRUE(dict.GetWithoutPathExpansion("this.isnt.expanded", &value4)); | 332 ASSERT_TRUE(dict.GetWithoutPathExpansion("this.isnt.expanded", &value4)); |
| 334 EXPECT_EQ(Value::TYPE_NULL, value4->GetType()); | 333 EXPECT_EQ(Value::TYPE_NULL, value4->GetType()); |
| 335 } | 334 } |
| 336 | 335 |
| 337 TEST(ValuesTest, DeepCopy) { | 336 TEST(ValuesTest, DeepCopy) { |
| 338 DictionaryValue original_dict; | 337 DictionaryValue original_dict; |
| 339 Value* original_null = Value::CreateNullValue(); | 338 Value* original_null = Value::CreateNullValue(); |
| 340 original_dict.Set("null", original_null); | 339 original_dict.Set("null", original_null); |
| 341 FundamentalValue* original_bool = Value::CreateBooleanValue(true); | 340 FundamentalValue* original_bool = new FundamentalValue(true); |
| 342 original_dict.Set("bool", original_bool); | 341 original_dict.Set("bool", original_bool); |
| 343 FundamentalValue* original_int = Value::CreateIntegerValue(42); | 342 FundamentalValue* original_int = new FundamentalValue(42); |
| 344 original_dict.Set("int", original_int); | 343 original_dict.Set("int", original_int); |
| 345 FundamentalValue* original_double = Value::CreateDoubleValue(3.14); | 344 FundamentalValue* original_double = new FundamentalValue(3.14); |
| 346 original_dict.Set("double", original_double); | 345 original_dict.Set("double", original_double); |
| 347 StringValue* original_string = Value::CreateStringValue("hello"); | 346 StringValue* original_string = new StringValue("hello"); |
| 348 original_dict.Set("string", original_string); | 347 original_dict.Set("string", original_string); |
| 349 StringValue* original_string16 = | 348 StringValue* original_string16 = new StringValue(ASCIIToUTF16("hello16")); |
| 350 Value::CreateStringValue(ASCIIToUTF16("hello16")); | |
| 351 original_dict.Set("string16", original_string16); | 349 original_dict.Set("string16", original_string16); |
| 352 | 350 |
| 353 char* original_buffer = new char[42]; | 351 char* original_buffer = new char[42]; |
| 354 memset(original_buffer, '!', 42); | 352 memset(original_buffer, '!', 42); |
| 355 BinaryValue* original_binary = BinaryValue::Create(original_buffer, 42); | 353 BinaryValue* original_binary = BinaryValue::Create(original_buffer, 42); |
| 356 original_dict.Set("binary", original_binary); | 354 original_dict.Set("binary", original_binary); |
| 357 | 355 |
| 358 ListValue* original_list = new ListValue(); | 356 ListValue* original_list = new ListValue(); |
| 359 FundamentalValue* original_list_element_0 = Value::CreateIntegerValue(0); | 357 FundamentalValue* original_list_element_0 = new FundamentalValue(0); |
| 360 original_list->Append(original_list_element_0); | 358 original_list->Append(original_list_element_0); |
| 361 FundamentalValue* original_list_element_1 = Value::CreateIntegerValue(1); | 359 FundamentalValue* original_list_element_1 = new FundamentalValue(1); |
| 362 original_list->Append(original_list_element_1); | 360 original_list->Append(original_list_element_1); |
| 363 original_dict.Set("list", original_list); | 361 original_dict.Set("list", original_list); |
| 364 | 362 |
| 365 DictionaryValue* original_nested_dictionary = new DictionaryValue(); | 363 DictionaryValue* original_nested_dictionary = new DictionaryValue(); |
| 366 original_nested_dictionary->Set("key", Value::CreateStringValue("value")); | 364 original_nested_dictionary->Set("key", new StringValue("value")); |
| 367 original_dict.Set("dictionary", original_nested_dictionary); | 365 original_dict.Set("dictionary", original_nested_dictionary); |
| 368 | 366 |
| 369 scoped_ptr<DictionaryValue> copy_dict(original_dict.DeepCopy()); | 367 scoped_ptr<DictionaryValue> copy_dict(original_dict.DeepCopy()); |
| 370 ASSERT_TRUE(copy_dict.get()); | 368 ASSERT_TRUE(copy_dict.get()); |
| 371 ASSERT_NE(copy_dict.get(), &original_dict); | 369 ASSERT_NE(copy_dict.get(), &original_dict); |
| 372 | 370 |
| 373 Value* copy_null = NULL; | 371 Value* copy_null = NULL; |
| 374 ASSERT_TRUE(copy_dict->Get("null", ©_null)); | 372 ASSERT_TRUE(copy_dict->Get("null", ©_null)); |
| 375 ASSERT_TRUE(copy_null); | 373 ASSERT_TRUE(copy_null); |
| 376 ASSERT_NE(copy_null, original_null); | 374 ASSERT_NE(copy_null, original_null); |
| (...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 474 ASSERT_TRUE(copy_nested_dictionary); | 472 ASSERT_TRUE(copy_nested_dictionary); |
| 475 EXPECT_TRUE(copy_nested_dictionary->HasKey("key")); | 473 EXPECT_TRUE(copy_nested_dictionary->HasKey("key")); |
| 476 } | 474 } |
| 477 | 475 |
| 478 TEST(ValuesTest, Equals) { | 476 TEST(ValuesTest, Equals) { |
| 479 Value* null1 = Value::CreateNullValue(); | 477 Value* null1 = Value::CreateNullValue(); |
| 480 Value* null2 = Value::CreateNullValue(); | 478 Value* null2 = Value::CreateNullValue(); |
| 481 EXPECT_NE(null1, null2); | 479 EXPECT_NE(null1, null2); |
| 482 EXPECT_TRUE(null1->Equals(null2)); | 480 EXPECT_TRUE(null1->Equals(null2)); |
| 483 | 481 |
| 484 Value* boolean = Value::CreateBooleanValue(false); | 482 Value* boolean = new FundamentalValue(false); |
| 485 EXPECT_FALSE(null1->Equals(boolean)); | 483 EXPECT_FALSE(null1->Equals(boolean)); |
| 486 delete null1; | 484 delete null1; |
| 487 delete null2; | 485 delete null2; |
| 488 delete boolean; | 486 delete boolean; |
| 489 | 487 |
| 490 DictionaryValue dv; | 488 DictionaryValue dv; |
| 491 dv.SetBoolean("a", false); | 489 dv.SetBoolean("a", false); |
| 492 dv.SetInteger("b", 2); | 490 dv.SetInteger("b", 2); |
| 493 dv.SetDouble("c", 2.5); | 491 dv.SetDouble("c", 2.5); |
| 494 dv.SetString("d1", "string"); | 492 dv.SetString("d1", "string"); |
| 495 dv.SetString("d2", ASCIIToUTF16("http://google.com")); | 493 dv.SetString("d2", ASCIIToUTF16("http://google.com")); |
| 496 dv.Set("e", Value::CreateNullValue()); | 494 dv.Set("e", Value::CreateNullValue()); |
| 497 | 495 |
| 498 scoped_ptr<DictionaryValue> copy; | 496 scoped_ptr<DictionaryValue> copy; |
| 499 copy.reset(dv.DeepCopy()); | 497 copy.reset(dv.DeepCopy()); |
| 500 EXPECT_TRUE(dv.Equals(copy.get())); | 498 EXPECT_TRUE(dv.Equals(copy.get())); |
| 501 | 499 |
| 502 ListValue* list = new ListValue; | 500 ListValue* list = new ListValue; |
| 503 list->Append(Value::CreateNullValue()); | 501 list->Append(Value::CreateNullValue()); |
| 504 list->Append(new DictionaryValue); | 502 list->Append(new DictionaryValue); |
| 505 dv.Set("f", list); | 503 dv.Set("f", list); |
| 506 | 504 |
| 507 EXPECT_FALSE(dv.Equals(copy.get())); | 505 EXPECT_FALSE(dv.Equals(copy.get())); |
| 508 copy->Set("f", list->DeepCopy()); | 506 copy->Set("f", list->DeepCopy()); |
| 509 EXPECT_TRUE(dv.Equals(copy.get())); | 507 EXPECT_TRUE(dv.Equals(copy.get())); |
| 510 | 508 |
| 511 list->Append(Value::CreateBooleanValue(true)); | 509 list->Append(new FundamentalValue(true)); |
| 512 EXPECT_FALSE(dv.Equals(copy.get())); | 510 EXPECT_FALSE(dv.Equals(copy.get())); |
| 513 | 511 |
| 514 // Check if Equals detects differences in only the keys. | 512 // Check if Equals detects differences in only the keys. |
| 515 copy.reset(dv.DeepCopy()); | 513 copy.reset(dv.DeepCopy()); |
| 516 EXPECT_TRUE(dv.Equals(copy.get())); | 514 EXPECT_TRUE(dv.Equals(copy.get())); |
| 517 copy->Remove("a", NULL); | 515 copy->Remove("a", NULL); |
| 518 copy->SetBoolean("aa", false); | 516 copy->SetBoolean("aa", false); |
| 519 EXPECT_FALSE(dv.Equals(copy.get())); | 517 EXPECT_FALSE(dv.Equals(copy.get())); |
| 520 } | 518 } |
| 521 | 519 |
| 522 TEST(ValuesTest, StaticEquals) { | 520 TEST(ValuesTest, StaticEquals) { |
| 523 scoped_ptr<Value> null1(Value::CreateNullValue()); | 521 scoped_ptr<Value> null1(Value::CreateNullValue()); |
| 524 scoped_ptr<Value> null2(Value::CreateNullValue()); | 522 scoped_ptr<Value> null2(Value::CreateNullValue()); |
| 525 EXPECT_TRUE(Value::Equals(null1.get(), null2.get())); | 523 EXPECT_TRUE(Value::Equals(null1.get(), null2.get())); |
| 526 EXPECT_TRUE(Value::Equals(NULL, NULL)); | 524 EXPECT_TRUE(Value::Equals(NULL, NULL)); |
| 527 | 525 |
| 528 scoped_ptr<Value> i42(Value::CreateIntegerValue(42)); | 526 scoped_ptr<Value> i42(new FundamentalValue(42)); |
| 529 scoped_ptr<Value> j42(Value::CreateIntegerValue(42)); | 527 scoped_ptr<Value> j42(new FundamentalValue(42)); |
| 530 scoped_ptr<Value> i17(Value::CreateIntegerValue(17)); | 528 scoped_ptr<Value> i17(new FundamentalValue(17)); |
| 531 EXPECT_TRUE(Value::Equals(i42.get(), i42.get())); | 529 EXPECT_TRUE(Value::Equals(i42.get(), i42.get())); |
| 532 EXPECT_TRUE(Value::Equals(j42.get(), i42.get())); | 530 EXPECT_TRUE(Value::Equals(j42.get(), i42.get())); |
| 533 EXPECT_TRUE(Value::Equals(i42.get(), j42.get())); | 531 EXPECT_TRUE(Value::Equals(i42.get(), j42.get())); |
| 534 EXPECT_FALSE(Value::Equals(i42.get(), i17.get())); | 532 EXPECT_FALSE(Value::Equals(i42.get(), i17.get())); |
| 535 EXPECT_FALSE(Value::Equals(i42.get(), NULL)); | 533 EXPECT_FALSE(Value::Equals(i42.get(), NULL)); |
| 536 EXPECT_FALSE(Value::Equals(NULL, i42.get())); | 534 EXPECT_FALSE(Value::Equals(NULL, i42.get())); |
| 537 | 535 |
| 538 // NULL and Value::CreateNullValue() are intentionally different: We need | 536 // NULL and Value::CreateNullValue() are intentionally different: We need |
| 539 // support for NULL as a return value for "undefined" without caring for | 537 // support for NULL as a return value for "undefined" without caring for |
| 540 // ownership of the pointer. | 538 // ownership of the pointer. |
| 541 EXPECT_FALSE(Value::Equals(null1.get(), NULL)); | 539 EXPECT_FALSE(Value::Equals(null1.get(), NULL)); |
| 542 EXPECT_FALSE(Value::Equals(NULL, null1.get())); | 540 EXPECT_FALSE(Value::Equals(NULL, null1.get())); |
| 543 } | 541 } |
| 544 | 542 |
| 545 TEST(ValuesTest, DeepCopyCovariantReturnTypes) { | 543 TEST(ValuesTest, DeepCopyCovariantReturnTypes) { |
| 546 DictionaryValue original_dict; | 544 DictionaryValue original_dict; |
| 547 Value* original_null = Value::CreateNullValue(); | 545 Value* original_null = Value::CreateNullValue(); |
| 548 original_dict.Set("null", original_null); | 546 original_dict.Set("null", original_null); |
| 549 FundamentalValue* original_bool = Value::CreateBooleanValue(true); | 547 FundamentalValue* original_bool = new FundamentalValue(true); |
| 550 original_dict.Set("bool", original_bool); | 548 original_dict.Set("bool", original_bool); |
| 551 FundamentalValue* original_int = Value::CreateIntegerValue(42); | 549 FundamentalValue* original_int = new FundamentalValue(42); |
| 552 original_dict.Set("int", original_int); | 550 original_dict.Set("int", original_int); |
| 553 FundamentalValue* original_double = Value::CreateDoubleValue(3.14); | 551 FundamentalValue* original_double = new FundamentalValue(3.14); |
| 554 original_dict.Set("double", original_double); | 552 original_dict.Set("double", original_double); |
| 555 StringValue* original_string = Value::CreateStringValue("hello"); | 553 StringValue* original_string = new StringValue("hello"); |
| 556 original_dict.Set("string", original_string); | 554 original_dict.Set("string", original_string); |
| 557 StringValue* original_string16 = | 555 StringValue* original_string16 = new StringValue(ASCIIToUTF16("hello16")); |
| 558 Value::CreateStringValue(ASCIIToUTF16("hello16")); | |
| 559 original_dict.Set("string16", original_string16); | 556 original_dict.Set("string16", original_string16); |
| 560 | 557 |
| 561 char* original_buffer = new char[42]; | 558 char* original_buffer = new char[42]; |
| 562 memset(original_buffer, '!', 42); | 559 memset(original_buffer, '!', 42); |
| 563 BinaryValue* original_binary = BinaryValue::Create(original_buffer, 42); | 560 BinaryValue* original_binary = BinaryValue::Create(original_buffer, 42); |
| 564 original_dict.Set("binary", original_binary); | 561 original_dict.Set("binary", original_binary); |
| 565 | 562 |
| 566 ListValue* original_list = new ListValue(); | 563 ListValue* original_list = new ListValue(); |
| 567 FundamentalValue* original_list_element_0 = Value::CreateIntegerValue(0); | 564 FundamentalValue* original_list_element_0 = new FundamentalValue(0); |
| 568 original_list->Append(original_list_element_0); | 565 original_list->Append(original_list_element_0); |
| 569 FundamentalValue* original_list_element_1 = Value::CreateIntegerValue(1); | 566 FundamentalValue* original_list_element_1 = new FundamentalValue(1); |
| 570 original_list->Append(original_list_element_1); | 567 original_list->Append(original_list_element_1); |
| 571 original_dict.Set("list", original_list); | 568 original_dict.Set("list", original_list); |
| 572 | 569 |
| 573 Value* original_dict_value = &original_dict; | 570 Value* original_dict_value = &original_dict; |
| 574 Value* original_bool_value = original_bool; | 571 Value* original_bool_value = original_bool; |
| 575 Value* original_int_value = original_int; | 572 Value* original_int_value = original_int; |
| 576 Value* original_double_value = original_double; | 573 Value* original_double_value = original_double; |
| 577 Value* original_string_value = original_string; | 574 Value* original_string_value = original_string; |
| 578 Value* original_string16_value = original_string16; | 575 Value* original_string16_value = original_string16; |
| 579 Value* original_binary_value = original_binary; | 576 Value* original_binary_value = original_binary; |
| (...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 656 EXPECT_EQ(2U, root->size()); | 653 EXPECT_EQ(2U, root->size()); |
| 657 } | 654 } |
| 658 | 655 |
| 659 // Make sure nested values don't get pruned. | 656 // Make sure nested values don't get pruned. |
| 660 { | 657 { |
| 661 ListValue* inner = new ListValue; | 658 ListValue* inner = new ListValue; |
| 662 root->Set("list_with_empty_children", inner); | 659 root->Set("list_with_empty_children", inner); |
| 663 ListValue* inner2 = new ListValue; | 660 ListValue* inner2 = new ListValue; |
| 664 inner->Append(new DictionaryValue); | 661 inner->Append(new DictionaryValue); |
| 665 inner->Append(inner2); | 662 inner->Append(inner2); |
| 666 inner2->Append(Value::CreateStringValue("hello")); | 663 inner2->Append(new StringValue("hello")); |
| 667 root.reset(root->DeepCopyWithoutEmptyChildren()); | 664 root.reset(root->DeepCopyWithoutEmptyChildren()); |
| 668 EXPECT_EQ(3U, root->size()); | 665 EXPECT_EQ(3U, root->size()); |
| 669 EXPECT_TRUE(root->GetList("list_with_empty_children", &inner)); | 666 EXPECT_TRUE(root->GetList("list_with_empty_children", &inner)); |
| 670 EXPECT_EQ(1U, inner->GetSize()); // Dictionary was pruned. | 667 EXPECT_EQ(1U, inner->GetSize()); // Dictionary was pruned. |
| 671 EXPECT_TRUE(inner->GetList(0, &inner2)); | 668 EXPECT_TRUE(inner->GetList(0, &inner2)); |
| 672 EXPECT_EQ(1U, inner2->GetSize()); | 669 EXPECT_EQ(1U, inner2->GetSize()); |
| 673 } | 670 } |
| 674 } | 671 } |
| 675 | 672 |
| 676 TEST(ValuesTest, MergeDictionary) { | 673 TEST(ValuesTest, MergeDictionary) { |
| (...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 780 seen2 = true; | 777 seen2 = true; |
| 781 } else { | 778 } else { |
| 782 ADD_FAILURE(); | 779 ADD_FAILURE(); |
| 783 } | 780 } |
| 784 } | 781 } |
| 785 EXPECT_TRUE(seen1); | 782 EXPECT_TRUE(seen1); |
| 786 EXPECT_TRUE(seen2); | 783 EXPECT_TRUE(seen2); |
| 787 } | 784 } |
| 788 | 785 |
| 789 } // namespace base | 786 } // namespace base |
| OLD | NEW |