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

Side by Side Diff: base/values_unittest.cc

Issue 11519026: base: Do not use Value::Create* functions. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: scoped_ptr Created 8 years 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « base/prefs/testing_pref_store.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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
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", &copy_null)); 372 ASSERT_TRUE(copy_dict->Get("null", &copy_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
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
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
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
OLDNEW
« no previous file with comments | « base/prefs/testing_pref_store.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698