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 scoped_ptr<Value> sought_value(new FundamentalValue(42)); |
99 scoped_ptr<Value> not_found_value(Value::CreateBooleanValue(false)); | 99 scoped_ptr<Value> not_found_value(new FundamentalValue(false)); |
Evan Stade
2012/12/13 00:44:00
dont' need these scoped_ptrs
tfarina
2012/12/13 16:11:40
Done.
| |
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 |
(...skipping 22 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 |