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

Side by Side Diff: base/values_unittest.cc

Issue 7649006: more changes (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix another typo Created 9 years, 4 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « base/values.cc ('k') | chrome/browser/about_flags.cc » ('j') | 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) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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", TrueValue());
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, TrueValue());
61 mixed_list->Set(1, Value::CreateIntegerValue(42)); 61 mixed_list->Set(1, NumberValue::New(42));
62 mixed_list->Set(2, Value::CreateDoubleValue(88.8)); 62 mixed_list->Set(2, NumberValue::New(88.8));
63 mixed_list->Set(3, Value::CreateStringValue("foo")); 63 mixed_list->Set(3, StringValue::New("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
74 ASSERT_FALSE(mixed_list->GetInteger(0, &int_value)); 74 ASSERT_FALSE(mixed_list->GetInteger(0, &int_value));
75 ASSERT_EQ(0, int_value); 75 ASSERT_EQ(0, int_value);
76 ASSERT_FALSE(mixed_list->GetBoolean(1, &bool_value)); 76 ASSERT_FALSE(mixed_list->GetBoolean(1, &bool_value));
77 ASSERT_FALSE(bool_value); 77 ASSERT_FALSE(bool_value);
78 ASSERT_FALSE(mixed_list->GetString(2, &string_value)); 78 ASSERT_FALSE(mixed_list->GetString(2, &string_value));
79 ASSERT_EQ("", string_value); 79 ASSERT_EQ("", string_value);
80 ASSERT_FALSE(mixed_list->GetInteger(2, &int_value)); 80 ASSERT_FALSE(mixed_list->GetInteger(2, &int_value));
81 ASSERT_EQ(0, int_value); 81 ASSERT_EQ(0, int_value);
82 ASSERT_FALSE(mixed_list->GetBoolean(3, &bool_value)); 82 ASSERT_FALSE(mixed_list->GetBoolean(3, &bool_value));
83 ASSERT_FALSE(bool_value); 83 ASSERT_FALSE(bool_value);
84 84
85 ASSERT_TRUE(mixed_list->GetBoolean(0, &bool_value)); 85 ASSERT_TRUE(mixed_list->GetBoolean(0, &bool_value));
86 ASSERT_TRUE(bool_value); 86 ASSERT_TRUE(bool_value);
87 ASSERT_TRUE(mixed_list->GetInteger(1, &int_value)); 87 ASSERT_TRUE(mixed_list->GetInteger(1, &int_value));
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 97
98 TEST(ValuesTest, BinaryValue) { 98 TEST(ValuesTest, BinaryValue) {
99 char* buffer = NULL; 99 char* buffer = NULL;
(...skipping 22 matching lines...) Expand all
122 memset(stack_buffer, '!', 42); 122 memset(stack_buffer, '!', 42);
123 binary.reset(BinaryValue::CreateWithCopiedBuffer(stack_buffer, 42)); 123 binary.reset(BinaryValue::CreateWithCopiedBuffer(stack_buffer, 42));
124 ASSERT_TRUE(binary.get()); 124 ASSERT_TRUE(binary.get());
125 ASSERT_TRUE(binary->GetBuffer()); 125 ASSERT_TRUE(binary->GetBuffer());
126 ASSERT_NE(stack_buffer, binary->GetBuffer()); 126 ASSERT_NE(stack_buffer, binary->GetBuffer());
127 ASSERT_EQ(42U, binary->GetSize()); 127 ASSERT_EQ(42U, binary->GetSize());
128 ASSERT_EQ(0, memcmp(stack_buffer, binary->GetBuffer(), binary->GetSize())); 128 ASSERT_EQ(0, memcmp(stack_buffer, binary->GetBuffer(), binary->GetSize()));
129 } 129 }
130 130
131 TEST(ValuesTest, StringValue) { 131 TEST(ValuesTest, StringValue) {
132 // Test overloaded CreateStringValue. 132 // Test overloaded StringValue::New.
133 scoped_ptr<Value> narrow_value(Value::CreateStringValue("narrow")); 133 scoped_ptr<Value> narrow_value(StringValue::New("narrow"));
134 ASSERT_TRUE(narrow_value.get()); 134 ASSERT_TRUE(narrow_value.get());
135 ASSERT_TRUE(narrow_value->IsType(Value::TYPE_STRING)); 135 ASSERT_TRUE(narrow_value->IsType(Value::TYPE_STRING));
136 scoped_ptr<Value> utf16_value( 136 scoped_ptr<Value> utf16_value(StringValue::New(ASCIIToUTF16("utf16")));
137 Value::CreateStringValue(ASCIIToUTF16("utf16")));
138 ASSERT_TRUE(utf16_value.get()); 137 ASSERT_TRUE(utf16_value.get());
139 ASSERT_TRUE(utf16_value->IsType(Value::TYPE_STRING)); 138 ASSERT_TRUE(utf16_value->IsType(Value::TYPE_STRING));
140 139
141 // Test overloaded GetString. 140 // Test overloaded GetString.
142 std::string narrow = "http://google.com"; 141 std::string narrow = "http://google.com";
143 string16 utf16 = ASCIIToUTF16("http://google.com"); 142 string16 utf16 = ASCIIToUTF16("http://google.com");
144 ASSERT_TRUE(narrow_value->GetAsString(&narrow)); 143 ASSERT_TRUE(narrow_value->GetAsString(&narrow));
145 ASSERT_TRUE(narrow_value->GetAsString(&utf16)); 144 ASSERT_TRUE(narrow_value->GetAsString(&utf16));
146 ASSERT_EQ(std::string("narrow"), narrow); 145 ASSERT_EQ(std::string("narrow"), narrow);
147 ASSERT_EQ(ASCIIToUTF16("narrow"), utf16); 146 ASSERT_EQ(ASCIIToUTF16("narrow"), utf16);
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
189 list.Append(new DeletionTestValue(&deletion_flag)); 188 list.Append(new DeletionTestValue(&deletion_flag));
190 EXPECT_FALSE(deletion_flag); 189 EXPECT_FALSE(deletion_flag);
191 list.Clear(); 190 list.Clear();
192 EXPECT_TRUE(deletion_flag); 191 EXPECT_TRUE(deletion_flag);
193 } 192 }
194 193
195 { 194 {
196 ListValue list; 195 ListValue list;
197 list.Append(new DeletionTestValue(&deletion_flag)); 196 list.Append(new DeletionTestValue(&deletion_flag));
198 EXPECT_FALSE(deletion_flag); 197 EXPECT_FALSE(deletion_flag);
199 EXPECT_TRUE(list.Set(0, Value::CreateNullValue())); 198 EXPECT_TRUE(list.Set(0, NullValue()));
200 EXPECT_TRUE(deletion_flag); 199 EXPECT_TRUE(deletion_flag);
201 } 200 }
202 } 201 }
203 202
204 TEST(ValuesTest, ListRemoval) { 203 TEST(ValuesTest, ListRemoval) {
205 bool deletion_flag = true; 204 bool deletion_flag = true;
206 Value* removed_item = NULL; 205 Value* removed_item = NULL;
207 206
208 { 207 {
209 ListValue list; 208 ListValue list;
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
260 dict.Set(key, new DeletionTestValue(&deletion_flag)); 259 dict.Set(key, new DeletionTestValue(&deletion_flag));
261 EXPECT_FALSE(deletion_flag); 260 EXPECT_FALSE(deletion_flag);
262 dict.Clear(); 261 dict.Clear();
263 EXPECT_TRUE(deletion_flag); 262 EXPECT_TRUE(deletion_flag);
264 } 263 }
265 264
266 { 265 {
267 DictionaryValue dict; 266 DictionaryValue dict;
268 dict.Set(key, new DeletionTestValue(&deletion_flag)); 267 dict.Set(key, new DeletionTestValue(&deletion_flag));
269 EXPECT_FALSE(deletion_flag); 268 EXPECT_FALSE(deletion_flag);
270 dict.Set(key, Value::CreateNullValue()); 269 dict.Set(key, NullValue());
271 EXPECT_TRUE(deletion_flag); 270 EXPECT_TRUE(deletion_flag);
272 } 271 }
273 } 272 }
274 273
275 TEST(ValuesTest, DictionaryRemoval) { 274 TEST(ValuesTest, DictionaryRemoval) {
276 std::string key = "test"; 275 std::string key = "test";
277 bool deletion_flag = true; 276 bool deletion_flag = true;
278 Value* removed_item = NULL; 277 Value* removed_item = NULL;
279 278
280 { 279 {
(...skipping 17 matching lines...) Expand all
298 EXPECT_FALSE(deletion_flag); 297 EXPECT_FALSE(deletion_flag);
299 EXPECT_TRUE(dict.HasKey(key)); 298 EXPECT_TRUE(dict.HasKey(key));
300 EXPECT_TRUE(dict.Remove(key, NULL)); 299 EXPECT_TRUE(dict.Remove(key, NULL));
301 EXPECT_TRUE(deletion_flag); 300 EXPECT_TRUE(deletion_flag);
302 EXPECT_FALSE(dict.HasKey(key)); 301 EXPECT_FALSE(dict.HasKey(key));
303 } 302 }
304 } 303 }
305 304
306 TEST(ValuesTest, DictionaryWithoutPathExpansion) { 305 TEST(ValuesTest, DictionaryWithoutPathExpansion) {
307 DictionaryValue dict; 306 DictionaryValue dict;
308 dict.Set("this.is.expanded", Value::CreateNullValue()); 307 dict.Set("this.is.expanded", NullValue());
309 dict.SetWithoutPathExpansion("this.isnt.expanded", Value::CreateNullValue()); 308 dict.SetWithoutPathExpansion("this.isnt.expanded", NullValue());
310 309
311 EXPECT_FALSE(dict.HasKey("this.is.expanded")); 310 EXPECT_FALSE(dict.HasKey("this.is.expanded"));
312 EXPECT_TRUE(dict.HasKey("this")); 311 EXPECT_TRUE(dict.HasKey("this"));
313 Value* value1; 312 Value* value1;
314 EXPECT_TRUE(dict.Get("this", &value1)); 313 EXPECT_TRUE(dict.Get("this", &value1));
315 DictionaryValue* value2; 314 DictionaryValue* value2;
316 ASSERT_TRUE(dict.GetDictionaryWithoutPathExpansion("this", &value2)); 315 ASSERT_TRUE(dict.GetDictionaryWithoutPathExpansion("this", &value2));
317 EXPECT_EQ(value1, value2); 316 EXPECT_EQ(value1, value2);
318 EXPECT_EQ(1U, value2->size()); 317 EXPECT_EQ(1U, value2->size());
319 318
320 EXPECT_TRUE(dict.HasKey("this.isnt.expanded")); 319 EXPECT_TRUE(dict.HasKey("this.isnt.expanded"));
321 Value* value3; 320 Value* value3;
322 EXPECT_FALSE(dict.Get("this.isnt.expanded", &value3)); 321 EXPECT_FALSE(dict.Get("this.isnt.expanded", &value3));
323 Value* value4; 322 Value* value4;
324 ASSERT_TRUE(dict.GetWithoutPathExpansion("this.isnt.expanded", &value4)); 323 ASSERT_TRUE(dict.GetWithoutPathExpansion("this.isnt.expanded", &value4));
325 EXPECT_EQ(Value::TYPE_NULL, value4->GetType()); 324 EXPECT_EQ(Value::TYPE_NULL, value4->GetType());
326 } 325 }
327 326
328 TEST(ValuesTest, DeepCopy) { 327 TEST(ValuesTest, DeepCopy) {
329 DictionaryValue original_dict; 328 DictionaryValue original_dict;
330 Value* original_null = Value::CreateNullValue(); 329 Value* original_null = NullValue();
331 original_dict.Set("null", original_null); 330 original_dict.Set("null", original_null);
332 FundamentalValue* original_bool = Value::CreateBooleanValue(true); 331 BooleanValue* original_bool = TrueValue();
333 original_dict.Set("bool", original_bool); 332 original_dict.Set("bool", original_bool);
334 FundamentalValue* original_int = Value::CreateIntegerValue(42); 333 NumberValue* original_int = NumberValue::New(42);
335 original_dict.Set("int", original_int); 334 original_dict.Set("int", original_int);
336 FundamentalValue* original_double = Value::CreateDoubleValue(3.14); 335 NumberValue* original_double = NumberValue::New(3.14);
337 original_dict.Set("double", original_double); 336 original_dict.Set("double", original_double);
338 StringValue* original_string = Value::CreateStringValue("hello"); 337 StringValue* original_string = StringValue::New("hello");
339 original_dict.Set("string", original_string); 338 original_dict.Set("string", original_string);
340 StringValue* original_string16 = 339 StringValue* original_string16 = StringValue::New(ASCIIToUTF16("hello16"));
341 Value::CreateStringValue(ASCIIToUTF16("hello16"));
342 original_dict.Set("string16", original_string16); 340 original_dict.Set("string16", original_string16);
343 341
344 char* original_buffer = new char[42]; 342 char* original_buffer = new char[42];
345 memset(original_buffer, '!', 42); 343 memset(original_buffer, '!', 42);
346 BinaryValue* original_binary = BinaryValue::Create(original_buffer, 42); 344 BinaryValue* original_binary = BinaryValue::Create(original_buffer, 42);
347 original_dict.Set("binary", original_binary); 345 original_dict.Set("binary", original_binary);
348 346
349 ListValue* original_list = new ListValue(); 347 ListValue* original_list = new ListValue();
350 FundamentalValue* original_list_element_0 = Value::CreateIntegerValue(0); 348 NumberValue* original_list_element_0 = NumberValue::New(0);
351 original_list->Append(original_list_element_0); 349 original_list->Append(original_list_element_0);
352 FundamentalValue* original_list_element_1 = Value::CreateIntegerValue(1); 350 NumberValue* original_list_element_1 = NumberValue::New(1);
353 original_list->Append(original_list_element_1); 351 original_list->Append(original_list_element_1);
354 original_dict.Set("list", original_list); 352 original_dict.Set("list", original_list);
355 353
356 scoped_ptr<DictionaryValue> copy_dict(original_dict.DeepCopy()); 354 scoped_ptr<DictionaryValue> copy_dict(original_dict.DeepCopy());
357 ASSERT_TRUE(copy_dict.get()); 355 ASSERT_TRUE(copy_dict.get());
358 ASSERT_NE(copy_dict.get(), &original_dict); 356 ASSERT_NE(copy_dict.get(), &original_dict);
359 357
360 Value* copy_null = NULL; 358 Value* copy_null = NULL;
361 ASSERT_TRUE(copy_dict->Get("null", &copy_null)); 359 ASSERT_TRUE(copy_dict->Get("null", &copy_null));
362 ASSERT_TRUE(copy_null); 360 ASSERT_TRUE(copy_null);
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
444 Value* copy_list_element_1; 442 Value* copy_list_element_1;
445 ASSERT_TRUE(copy_list->Get(1, &copy_list_element_1)); 443 ASSERT_TRUE(copy_list->Get(1, &copy_list_element_1));
446 ASSERT_TRUE(copy_list_element_1); 444 ASSERT_TRUE(copy_list_element_1);
447 ASSERT_NE(copy_list_element_1, original_list_element_1); 445 ASSERT_NE(copy_list_element_1, original_list_element_1);
448 int copy_list_element_1_value; 446 int copy_list_element_1_value;
449 ASSERT_TRUE(copy_list_element_1->GetAsInteger(&copy_list_element_1_value)); 447 ASSERT_TRUE(copy_list_element_1->GetAsInteger(&copy_list_element_1_value));
450 ASSERT_EQ(1, copy_list_element_1_value); 448 ASSERT_EQ(1, copy_list_element_1_value);
451 } 449 }
452 450
453 TEST(ValuesTest, Equals) { 451 TEST(ValuesTest, Equals) {
454 Value* null1 = Value::CreateNullValue(); 452 Value* null1 = NullValue();
455 Value* null2 = Value::CreateNullValue(); 453 Value* null2 = NullValue();
456 EXPECT_NE(null1, null2); 454 EXPECT_NE(null1, null2);
457 EXPECT_TRUE(null1->Equals(null2)); 455 EXPECT_TRUE(null1->Equals(null2));
458 456
459 Value* boolean = Value::CreateBooleanValue(false); 457 Value* boolean = FalseValue();
460 EXPECT_FALSE(null1->Equals(boolean)); 458 EXPECT_FALSE(null1->Equals(boolean));
461 delete null1; 459 delete null1;
462 delete null2; 460 delete null2;
463 delete boolean; 461 delete boolean;
464 462
465 DictionaryValue dv; 463 DictionaryValue dv;
466 dv.SetBoolean("a", false); 464 dv.SetBoolean("a", false);
467 dv.SetInteger("b", 2); 465 dv.SetInteger("b", 2);
468 dv.SetDouble("c", 2.5); 466 dv.SetDouble("c", 2.5);
469 dv.SetString("d1", "string"); 467 dv.SetString("d1", "string");
470 dv.SetString("d2", ASCIIToUTF16("http://google.com")); 468 dv.SetString("d2", ASCIIToUTF16("http://google.com"));
471 dv.Set("e", Value::CreateNullValue()); 469 dv.Set("e", NullValue());
472 470
473 scoped_ptr<DictionaryValue> copy; 471 scoped_ptr<DictionaryValue> copy;
474 copy.reset(dv.DeepCopy()); 472 copy.reset(dv.DeepCopy());
475 EXPECT_TRUE(dv.Equals(copy.get())); 473 EXPECT_TRUE(dv.Equals(copy.get()));
476 474
477 ListValue* list = new ListValue; 475 ListValue* list = new ListValue;
478 list->Append(Value::CreateNullValue()); 476 list->Append(NullValue());
479 list->Append(new DictionaryValue); 477 list->Append(new DictionaryValue);
480 dv.Set("f", list); 478 dv.Set("f", list);
481 479
482 EXPECT_FALSE(dv.Equals(copy.get())); 480 EXPECT_FALSE(dv.Equals(copy.get()));
483 copy->Set("f", list->DeepCopy()); 481 copy->Set("f", list->DeepCopy());
484 EXPECT_TRUE(dv.Equals(copy.get())); 482 EXPECT_TRUE(dv.Equals(copy.get()));
485 483
486 list->Append(Value::CreateBooleanValue(true)); 484 list->Append(TrueValue());
487 EXPECT_FALSE(dv.Equals(copy.get())); 485 EXPECT_FALSE(dv.Equals(copy.get()));
488 486
489 // Check if Equals detects differences in only the keys. 487 // Check if Equals detects differences in only the keys.
490 copy.reset(dv.DeepCopy()); 488 copy.reset(dv.DeepCopy());
491 EXPECT_TRUE(dv.Equals(copy.get())); 489 EXPECT_TRUE(dv.Equals(copy.get()));
492 copy->Remove("a", NULL); 490 copy->Remove("a", NULL);
493 copy->SetBoolean("aa", false); 491 copy->SetBoolean("aa", false);
494 EXPECT_FALSE(dv.Equals(copy.get())); 492 EXPECT_FALSE(dv.Equals(copy.get()));
495 } 493 }
496 494
497 TEST(ValuesTest, StaticEquals) { 495 TEST(ValuesTest, StaticEquals) {
498 scoped_ptr<Value> null1(Value::CreateNullValue()); 496 scoped_ptr<Value> null1(NullValue());
499 scoped_ptr<Value> null2(Value::CreateNullValue()); 497 scoped_ptr<Value> null2(NullValue());
500 EXPECT_TRUE(Value::Equals(null1.get(), null2.get())); 498 EXPECT_TRUE(Value::Equals(null1.get(), null2.get()));
501 EXPECT_TRUE(Value::Equals(NULL, NULL)); 499 EXPECT_TRUE(Value::Equals(NULL, NULL));
502 500
503 scoped_ptr<Value> i42(Value::CreateIntegerValue(42)); 501 scoped_ptr<Value> i42(NumberValue::New(42));
504 scoped_ptr<Value> j42(Value::CreateIntegerValue(42)); 502 scoped_ptr<Value> j42(NumberValue::New(42));
505 scoped_ptr<Value> i17(Value::CreateIntegerValue(17)); 503 scoped_ptr<Value> i17(NumberValue::New(17));
506 EXPECT_TRUE(Value::Equals(i42.get(), i42.get())); 504 EXPECT_TRUE(Value::Equals(i42.get(), i42.get()));
507 EXPECT_TRUE(Value::Equals(j42.get(), i42.get())); 505 EXPECT_TRUE(Value::Equals(j42.get(), i42.get()));
508 EXPECT_TRUE(Value::Equals(i42.get(), j42.get())); 506 EXPECT_TRUE(Value::Equals(i42.get(), j42.get()));
509 EXPECT_FALSE(Value::Equals(i42.get(), i17.get())); 507 EXPECT_FALSE(Value::Equals(i42.get(), i17.get()));
510 EXPECT_FALSE(Value::Equals(i42.get(), NULL)); 508 EXPECT_FALSE(Value::Equals(i42.get(), NULL));
511 EXPECT_FALSE(Value::Equals(NULL, i42.get())); 509 EXPECT_FALSE(Value::Equals(NULL, i42.get()));
512 510
513 // NULL and Value::CreateNullValue() are intentionally different: We need 511 // NULL and NullValue() are intentionally different: We need
514 // support for NULL as a return value for "undefined" without caring for 512 // support for NULL as a return value for "undefined" without caring for
515 // ownership of the pointer. 513 // ownership of the pointer.
516 EXPECT_FALSE(Value::Equals(null1.get(), NULL)); 514 EXPECT_FALSE(Value::Equals(null1.get(), NULL));
517 EXPECT_FALSE(Value::Equals(NULL, null1.get())); 515 EXPECT_FALSE(Value::Equals(NULL, null1.get()));
518 } 516 }
519 517
520 TEST(ValuesTest, DeepCopyCovariantReturnTypes) { 518 TEST(ValuesTest, DeepCopyCovariantReturnTypes) {
521 DictionaryValue original_dict; 519 DictionaryValue original_dict;
522 Value* original_null = Value::CreateNullValue(); 520 Value* original_null = NullValue();
523 original_dict.Set("null", original_null); 521 original_dict.Set("null", original_null);
524 FundamentalValue* original_bool = Value::CreateBooleanValue(true); 522 BooleanValue* original_bool = TrueValue();
525 original_dict.Set("bool", original_bool); 523 original_dict.Set("bool", original_bool);
526 FundamentalValue* original_int = Value::CreateIntegerValue(42); 524 NumberValue* original_int = NumberValue::New(42);
527 original_dict.Set("int", original_int); 525 original_dict.Set("int", original_int);
528 FundamentalValue* original_double = Value::CreateDoubleValue(3.14); 526 NumberValue* original_double = NumberValue::New(3.14);
529 original_dict.Set("double", original_double); 527 original_dict.Set("double", original_double);
530 StringValue* original_string = Value::CreateStringValue("hello"); 528 StringValue* original_string = StringValue::New("hello");
531 original_dict.Set("string", original_string); 529 original_dict.Set("string", original_string);
532 StringValue* original_string16 = 530 StringValue* original_string16 = StringValue::New(ASCIIToUTF16("hello16"));
533 Value::CreateStringValue(ASCIIToUTF16("hello16"));
534 original_dict.Set("string16", original_string16); 531 original_dict.Set("string16", original_string16);
535 532
536 char* original_buffer = new char[42]; 533 char* original_buffer = new char[42];
537 memset(original_buffer, '!', 42); 534 memset(original_buffer, '!', 42);
538 BinaryValue* original_binary = BinaryValue::Create(original_buffer, 42); 535 BinaryValue* original_binary = BinaryValue::Create(original_buffer, 42);
539 original_dict.Set("binary", original_binary); 536 original_dict.Set("binary", original_binary);
540 537
541 ListValue* original_list = new ListValue(); 538 ListValue* original_list = new ListValue();
542 FundamentalValue* original_list_element_0 = Value::CreateIntegerValue(0); 539 NumberValue* original_list_element_0 = NumberValue::New(0);
543 original_list->Append(original_list_element_0); 540 original_list->Append(original_list_element_0);
544 FundamentalValue* original_list_element_1 = Value::CreateIntegerValue(1); 541 NumberValue* original_list_element_1 = NumberValue::New(1);
545 original_list->Append(original_list_element_1); 542 original_list->Append(original_list_element_1);
546 original_dict.Set("list", original_list); 543 original_dict.Set("list", original_list);
547 544
548 Value* original_dict_value = &original_dict; 545 Value* original_dict_value = &original_dict;
549 Value* original_bool_value = original_bool; 546 Value* original_bool_value = original_bool;
550 Value* original_int_value = original_int; 547 Value* original_int_value = original_int;
551 Value* original_double_value = original_double; 548 Value* original_double_value = original_double;
552 Value* original_string_value = original_string; 549 Value* original_string_value = original_string;
553 Value* original_string16_value = original_string16; 550 Value* original_string16_value = original_string16;
554 Value* original_binary_value = original_binary; 551 Value* original_binary_value = original_binary;
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
631 EXPECT_EQ(2U, root->size()); 628 EXPECT_EQ(2U, root->size());
632 } 629 }
633 630
634 // Make sure nested values don't get pruned. 631 // Make sure nested values don't get pruned.
635 { 632 {
636 ListValue* inner = new ListValue; 633 ListValue* inner = new ListValue;
637 root->Set("list_with_empty_children", inner); 634 root->Set("list_with_empty_children", inner);
638 ListValue* inner2 = new ListValue; 635 ListValue* inner2 = new ListValue;
639 inner->Append(new DictionaryValue); 636 inner->Append(new DictionaryValue);
640 inner->Append(inner2); 637 inner->Append(inner2);
641 inner2->Append(Value::CreateStringValue("hello")); 638 inner2->Append(StringValue::New("hello"));
642 root.reset(root->DeepCopyWithoutEmptyChildren()); 639 root.reset(root->DeepCopyWithoutEmptyChildren());
643 EXPECT_EQ(3U, root->size()); 640 EXPECT_EQ(3U, root->size());
644 EXPECT_TRUE(root->GetList("list_with_empty_children", &inner)); 641 EXPECT_TRUE(root->GetList("list_with_empty_children", &inner));
645 EXPECT_EQ(1U, inner->GetSize()); // Dictionary was pruned. 642 EXPECT_EQ(1U, inner->GetSize()); // Dictionary was pruned.
646 EXPECT_TRUE(inner->GetList(0, &inner2)); 643 EXPECT_TRUE(inner->GetList(0, &inner2));
647 EXPECT_EQ(1U, inner2->GetSize()); 644 EXPECT_EQ(1U, inner2->GetSize());
648 } 645 }
649 } 646 }
650 647
651 TEST(ValuesTest, MergeDictionary) { 648 TEST(ValuesTest, MergeDictionary) {
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
687 std::string sub_collide_key_value; 684 std::string sub_collide_key_value;
688 EXPECT_TRUE(res_sub_dict->GetString("sub_collide_key", 685 EXPECT_TRUE(res_sub_dict->GetString("sub_collide_key",
689 &sub_collide_key_value)); 686 &sub_collide_key_value));
690 EXPECT_EQ("sub_collide_key_value_merge", sub_collide_key_value); // Replaced. 687 EXPECT_EQ("sub_collide_key_value_merge", sub_collide_key_value); // Replaced.
691 std::string sub_merge_key_value; 688 std::string sub_merge_key_value;
692 EXPECT_TRUE(res_sub_dict->GetString("sub_merge_key", &sub_merge_key_value)); 689 EXPECT_TRUE(res_sub_dict->GetString("sub_merge_key", &sub_merge_key_value));
693 EXPECT_EQ("sub_merge_key_value_merge", sub_merge_key_value); // Merged in. 690 EXPECT_EQ("sub_merge_key_value_merge", sub_merge_key_value); // Merged in.
694 } 691 }
695 692
696 } // namespace base 693 } // namespace base
OLDNEW
« no previous file with comments | « base/values.cc ('k') | chrome/browser/about_flags.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698