OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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/scoped_ptr.h" | 7 #include "base/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" |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
53 ASSERT_EQ(std::string("Froogle"), bookmark_name); | 53 ASSERT_EQ(std::string("Froogle"), bookmark_name); |
54 std::string bookmark_url; | 54 std::string bookmark_url; |
55 ASSERT_TRUE(bookmark->GetString("url", &bookmark_url)); | 55 ASSERT_TRUE(bookmark->GetString("url", &bookmark_url)); |
56 ASSERT_EQ(std::string("http://froogle.com"), bookmark_url); | 56 ASSERT_EQ(std::string("http://froogle.com"), bookmark_url); |
57 } | 57 } |
58 | 58 |
59 TEST_F(ValuesTest, List) { | 59 TEST_F(ValuesTest, List) { |
60 scoped_ptr<ListValue> mixed_list(new ListValue()); | 60 scoped_ptr<ListValue> mixed_list(new ListValue()); |
61 mixed_list->Set(0, Value::CreateBooleanValue(true)); | 61 mixed_list->Set(0, Value::CreateBooleanValue(true)); |
62 mixed_list->Set(1, Value::CreateIntegerValue(42)); | 62 mixed_list->Set(1, Value::CreateIntegerValue(42)); |
63 mixed_list->Set(2, Value::CreateRealValue(88.8)); | 63 mixed_list->Set(2, Value::CreateDoubleValue(88.8)); |
64 mixed_list->Set(3, Value::CreateStringValue("foo")); | 64 mixed_list->Set(3, Value::CreateStringValue("foo")); |
65 ASSERT_EQ(4u, mixed_list->GetSize()); | 65 ASSERT_EQ(4u, mixed_list->GetSize()); |
66 | 66 |
67 Value *value = NULL; | 67 Value *value = NULL; |
68 bool bool_value = false; | 68 bool bool_value = false; |
69 int int_value = 0; | 69 int int_value = 0; |
70 double double_value = 0.0; | 70 double double_value = 0.0; |
71 std::string string_value; | 71 std::string string_value; |
72 | 72 |
73 ASSERT_FALSE(mixed_list->Get(4, &value)); | 73 ASSERT_FALSE(mixed_list->Get(4, &value)); |
74 | 74 |
75 ASSERT_FALSE(mixed_list->GetInteger(0, &int_value)); | 75 ASSERT_FALSE(mixed_list->GetInteger(0, &int_value)); |
76 ASSERT_EQ(0, int_value); | 76 ASSERT_EQ(0, int_value); |
77 ASSERT_FALSE(mixed_list->GetReal(1, &double_value)); | 77 ASSERT_FALSE(mixed_list->GetDouble(1, &double_value)); |
78 ASSERT_EQ(0.0, double_value); | 78 ASSERT_EQ(0.0, double_value); |
79 ASSERT_FALSE(mixed_list->GetString(2, &string_value)); | 79 ASSERT_FALSE(mixed_list->GetString(2, &string_value)); |
80 ASSERT_EQ("", string_value); | 80 ASSERT_EQ("", string_value); |
81 ASSERT_FALSE(mixed_list->GetBoolean(3, &bool_value)); | 81 ASSERT_FALSE(mixed_list->GetBoolean(3, &bool_value)); |
82 ASSERT_FALSE(bool_value); | 82 ASSERT_FALSE(bool_value); |
83 | 83 |
84 ASSERT_TRUE(mixed_list->GetBoolean(0, &bool_value)); | 84 ASSERT_TRUE(mixed_list->GetBoolean(0, &bool_value)); |
85 ASSERT_TRUE(bool_value); | 85 ASSERT_TRUE(bool_value); |
86 ASSERT_TRUE(mixed_list->GetInteger(1, &int_value)); | 86 ASSERT_TRUE(mixed_list->GetInteger(1, &int_value)); |
87 ASSERT_EQ(42, int_value); | 87 ASSERT_EQ(42, int_value); |
88 ASSERT_TRUE(mixed_list->GetReal(2, &double_value)); | 88 ASSERT_TRUE(mixed_list->GetDouble(2, &double_value)); |
89 ASSERT_EQ(88.8, double_value); | 89 ASSERT_EQ(88.8, double_value); |
90 ASSERT_TRUE(mixed_list->GetString(3, &string_value)); | 90 ASSERT_TRUE(mixed_list->GetString(3, &string_value)); |
91 ASSERT_EQ("foo", string_value); | 91 ASSERT_EQ("foo", string_value); |
92 } | 92 } |
93 | 93 |
94 TEST_F(ValuesTest, BinaryValue) { | 94 TEST_F(ValuesTest, BinaryValue) { |
95 char* buffer = NULL; | 95 char* buffer = NULL; |
96 // Passing a null buffer pointer doesn't yield a BinaryValue | 96 // Passing a null buffer pointer doesn't yield a BinaryValue |
97 scoped_ptr<BinaryValue> binary(BinaryValue::Create(buffer, 0)); | 97 scoped_ptr<BinaryValue> binary(BinaryValue::Create(buffer, 0)); |
98 ASSERT_FALSE(binary.get()); | 98 ASSERT_FALSE(binary.get()); |
(...skipping 221 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
320 } | 320 } |
321 | 321 |
322 TEST_F(ValuesTest, DeepCopy) { | 322 TEST_F(ValuesTest, DeepCopy) { |
323 DictionaryValue original_dict; | 323 DictionaryValue original_dict; |
324 Value* original_null = Value::CreateNullValue(); | 324 Value* original_null = Value::CreateNullValue(); |
325 original_dict.Set("null", original_null); | 325 original_dict.Set("null", original_null); |
326 FundamentalValue* original_bool = Value::CreateBooleanValue(true); | 326 FundamentalValue* original_bool = Value::CreateBooleanValue(true); |
327 original_dict.Set("bool", original_bool); | 327 original_dict.Set("bool", original_bool); |
328 FundamentalValue* original_int = Value::CreateIntegerValue(42); | 328 FundamentalValue* original_int = Value::CreateIntegerValue(42); |
329 original_dict.Set("int", original_int); | 329 original_dict.Set("int", original_int); |
330 FundamentalValue* original_real = Value::CreateRealValue(3.14); | 330 FundamentalValue* original_double = Value::CreateDoubleValue(3.14); |
331 original_dict.Set("real", original_real); | 331 original_dict.Set("double", original_double); |
332 StringValue* original_string = Value::CreateStringValue("hello"); | 332 StringValue* original_string = Value::CreateStringValue("hello"); |
333 original_dict.Set("string", original_string); | 333 original_dict.Set("string", original_string); |
334 StringValue* original_string16 = | 334 StringValue* original_string16 = |
335 Value::CreateStringValue(ASCIIToUTF16("hello16")); | 335 Value::CreateStringValue(ASCIIToUTF16("hello16")); |
336 original_dict.Set("string16", original_string16); | 336 original_dict.Set("string16", original_string16); |
337 | 337 |
338 char* original_buffer = new char[42]; | 338 char* original_buffer = new char[42]; |
339 memset(original_buffer, '!', 42); | 339 memset(original_buffer, '!', 42); |
340 BinaryValue* original_binary = Value::CreateBinaryValue(original_buffer, 42); | 340 BinaryValue* original_binary = Value::CreateBinaryValue(original_buffer, 42); |
341 original_dict.Set("binary", original_binary); | 341 original_dict.Set("binary", original_binary); |
(...skipping 26 matching lines...) Expand all Loading... |
368 | 368 |
369 Value* copy_int = NULL; | 369 Value* copy_int = NULL; |
370 ASSERT_TRUE(copy_dict->Get("int", ©_int)); | 370 ASSERT_TRUE(copy_dict->Get("int", ©_int)); |
371 ASSERT_TRUE(copy_int); | 371 ASSERT_TRUE(copy_int); |
372 ASSERT_NE(copy_int, original_int); | 372 ASSERT_NE(copy_int, original_int); |
373 ASSERT_TRUE(copy_int->IsType(Value::TYPE_INTEGER)); | 373 ASSERT_TRUE(copy_int->IsType(Value::TYPE_INTEGER)); |
374 int copy_int_value = 0; | 374 int copy_int_value = 0; |
375 ASSERT_TRUE(copy_int->GetAsInteger(©_int_value)); | 375 ASSERT_TRUE(copy_int->GetAsInteger(©_int_value)); |
376 ASSERT_EQ(42, copy_int_value); | 376 ASSERT_EQ(42, copy_int_value); |
377 | 377 |
378 Value* copy_real = NULL; | 378 Value* copy_double = NULL; |
379 ASSERT_TRUE(copy_dict->Get("real", ©_real)); | 379 ASSERT_TRUE(copy_dict->Get("double", ©_double)); |
380 ASSERT_TRUE(copy_real); | 380 ASSERT_TRUE(copy_double); |
381 ASSERT_NE(copy_real, original_real); | 381 ASSERT_NE(copy_double, original_double); |
382 ASSERT_TRUE(copy_real->IsType(Value::TYPE_REAL)); | 382 ASSERT_TRUE(copy_double->IsType(Value::TYPE_DOUBLE)); |
383 double copy_real_value = 0; | 383 double copy_double_value = 0; |
384 ASSERT_TRUE(copy_real->GetAsReal(©_real_value)); | 384 ASSERT_TRUE(copy_double->GetAsDouble(©_double_value)); |
385 ASSERT_EQ(3.14, copy_real_value); | 385 ASSERT_EQ(3.14, copy_double_value); |
386 | 386 |
387 Value* copy_string = NULL; | 387 Value* copy_string = NULL; |
388 ASSERT_TRUE(copy_dict->Get("string", ©_string)); | 388 ASSERT_TRUE(copy_dict->Get("string", ©_string)); |
389 ASSERT_TRUE(copy_string); | 389 ASSERT_TRUE(copy_string); |
390 ASSERT_NE(copy_string, original_string); | 390 ASSERT_NE(copy_string, original_string); |
391 ASSERT_TRUE(copy_string->IsType(Value::TYPE_STRING)); | 391 ASSERT_TRUE(copy_string->IsType(Value::TYPE_STRING)); |
392 std::string copy_string_value; | 392 std::string copy_string_value; |
393 string16 copy_string16_value; | 393 string16 copy_string16_value; |
394 ASSERT_TRUE(copy_string->GetAsString(©_string_value)); | 394 ASSERT_TRUE(copy_string->GetAsString(©_string_value)); |
395 ASSERT_TRUE(copy_string->GetAsString(©_string16_value)); | 395 ASSERT_TRUE(copy_string->GetAsString(©_string16_value)); |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
452 | 452 |
453 Value* boolean = Value::CreateBooleanValue(false); | 453 Value* boolean = Value::CreateBooleanValue(false); |
454 EXPECT_FALSE(null1->Equals(boolean)); | 454 EXPECT_FALSE(null1->Equals(boolean)); |
455 delete null1; | 455 delete null1; |
456 delete null2; | 456 delete null2; |
457 delete boolean; | 457 delete boolean; |
458 | 458 |
459 DictionaryValue dv; | 459 DictionaryValue dv; |
460 dv.SetBoolean("a", false); | 460 dv.SetBoolean("a", false); |
461 dv.SetInteger("b", 2); | 461 dv.SetInteger("b", 2); |
462 dv.SetReal("c", 2.5); | 462 dv.SetDouble("c", 2.5); |
463 dv.SetString("d1", "string"); | 463 dv.SetString("d1", "string"); |
464 dv.SetString("d2", ASCIIToUTF16("http://google.com")); | 464 dv.SetString("d2", ASCIIToUTF16("http://google.com")); |
465 dv.Set("e", Value::CreateNullValue()); | 465 dv.Set("e", Value::CreateNullValue()); |
466 | 466 |
467 scoped_ptr<DictionaryValue> copy; | 467 scoped_ptr<DictionaryValue> copy; |
468 copy.reset(dv.DeepCopy()); | 468 copy.reset(dv.DeepCopy()); |
469 EXPECT_TRUE(dv.Equals(copy.get())); | 469 EXPECT_TRUE(dv.Equals(copy.get())); |
470 | 470 |
471 ListValue* list = new ListValue; | 471 ListValue* list = new ListValue; |
472 list->Append(Value::CreateNullValue()); | 472 list->Append(Value::CreateNullValue()); |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
512 } | 512 } |
513 | 513 |
514 TEST_F(ValuesTest, DeepCopyCovariantReturnTypes) { | 514 TEST_F(ValuesTest, DeepCopyCovariantReturnTypes) { |
515 DictionaryValue original_dict; | 515 DictionaryValue original_dict; |
516 Value* original_null = Value::CreateNullValue(); | 516 Value* original_null = Value::CreateNullValue(); |
517 original_dict.Set("null", original_null); | 517 original_dict.Set("null", original_null); |
518 FundamentalValue* original_bool = Value::CreateBooleanValue(true); | 518 FundamentalValue* original_bool = Value::CreateBooleanValue(true); |
519 original_dict.Set("bool", original_bool); | 519 original_dict.Set("bool", original_bool); |
520 FundamentalValue* original_int = Value::CreateIntegerValue(42); | 520 FundamentalValue* original_int = Value::CreateIntegerValue(42); |
521 original_dict.Set("int", original_int); | 521 original_dict.Set("int", original_int); |
522 FundamentalValue* original_real = Value::CreateRealValue(3.14); | 522 FundamentalValue* original_double = Value::CreateDoubleValue(3.14); |
523 original_dict.Set("real", original_real); | 523 original_dict.Set("double", original_double); |
524 StringValue* original_string = Value::CreateStringValue("hello"); | 524 StringValue* original_string = Value::CreateStringValue("hello"); |
525 original_dict.Set("string", original_string); | 525 original_dict.Set("string", original_string); |
526 StringValue* original_string16 = | 526 StringValue* original_string16 = |
527 Value::CreateStringValue(ASCIIToUTF16("hello16")); | 527 Value::CreateStringValue(ASCIIToUTF16("hello16")); |
528 original_dict.Set("string16", original_string16); | 528 original_dict.Set("string16", original_string16); |
529 | 529 |
530 char* original_buffer = new char[42]; | 530 char* original_buffer = new char[42]; |
531 memset(original_buffer, '!', 42); | 531 memset(original_buffer, '!', 42); |
532 BinaryValue* original_binary = Value::CreateBinaryValue(original_buffer, 42); | 532 BinaryValue* original_binary = Value::CreateBinaryValue(original_buffer, 42); |
533 original_dict.Set("binary", original_binary); | 533 original_dict.Set("binary", original_binary); |
534 | 534 |
535 ListValue* original_list = new ListValue(); | 535 ListValue* original_list = new ListValue(); |
536 FundamentalValue* original_list_element_0 = Value::CreateIntegerValue(0); | 536 FundamentalValue* original_list_element_0 = Value::CreateIntegerValue(0); |
537 original_list->Append(original_list_element_0); | 537 original_list->Append(original_list_element_0); |
538 FundamentalValue* original_list_element_1 = Value::CreateIntegerValue(1); | 538 FundamentalValue* original_list_element_1 = Value::CreateIntegerValue(1); |
539 original_list->Append(original_list_element_1); | 539 original_list->Append(original_list_element_1); |
540 original_dict.Set("list", original_list); | 540 original_dict.Set("list", original_list); |
541 | 541 |
542 Value* original_dict_value = &original_dict; | 542 Value* original_dict_value = &original_dict; |
543 Value* original_bool_value = original_bool; | 543 Value* original_bool_value = original_bool; |
544 Value* original_int_value = original_int; | 544 Value* original_int_value = original_int; |
545 Value* original_real_value = original_real; | 545 Value* original_double_value = original_double; |
546 Value* original_string_value = original_string; | 546 Value* original_string_value = original_string; |
547 Value* original_string16_value = original_string16; | 547 Value* original_string16_value = original_string16; |
548 Value* original_binary_value = original_binary; | 548 Value* original_binary_value = original_binary; |
549 Value* original_list_value = original_list; | 549 Value* original_list_value = original_list; |
550 | 550 |
551 scoped_ptr<Value> copy_dict_value(original_dict_value->DeepCopy()); | 551 scoped_ptr<Value> copy_dict_value(original_dict_value->DeepCopy()); |
552 scoped_ptr<Value> copy_bool_value(original_bool_value->DeepCopy()); | 552 scoped_ptr<Value> copy_bool_value(original_bool_value->DeepCopy()); |
553 scoped_ptr<Value> copy_int_value(original_int_value->DeepCopy()); | 553 scoped_ptr<Value> copy_int_value(original_int_value->DeepCopy()); |
554 scoped_ptr<Value> copy_real_value(original_real_value->DeepCopy()); | 554 scoped_ptr<Value> copy_double_value(original_double_value->DeepCopy()); |
555 scoped_ptr<Value> copy_string_value(original_string_value->DeepCopy()); | 555 scoped_ptr<Value> copy_string_value(original_string_value->DeepCopy()); |
556 scoped_ptr<Value> copy_string16_value(original_string16_value->DeepCopy()); | 556 scoped_ptr<Value> copy_string16_value(original_string16_value->DeepCopy()); |
557 scoped_ptr<Value> copy_binary_value(original_binary_value->DeepCopy()); | 557 scoped_ptr<Value> copy_binary_value(original_binary_value->DeepCopy()); |
558 scoped_ptr<Value> copy_list_value(original_list_value->DeepCopy()); | 558 scoped_ptr<Value> copy_list_value(original_list_value->DeepCopy()); |
559 | 559 |
560 EXPECT_TRUE(original_dict_value->Equals(copy_dict_value.get())); | 560 EXPECT_TRUE(original_dict_value->Equals(copy_dict_value.get())); |
561 EXPECT_TRUE(original_bool_value->Equals(copy_bool_value.get())); | 561 EXPECT_TRUE(original_bool_value->Equals(copy_bool_value.get())); |
562 EXPECT_TRUE(original_int_value->Equals(copy_int_value.get())); | 562 EXPECT_TRUE(original_int_value->Equals(copy_int_value.get())); |
563 EXPECT_TRUE(original_real_value->Equals(copy_real_value.get())); | 563 EXPECT_TRUE(original_double_value->Equals(copy_double_value.get())); |
564 EXPECT_TRUE(original_string_value->Equals(copy_string_value.get())); | 564 EXPECT_TRUE(original_string_value->Equals(copy_string_value.get())); |
565 EXPECT_TRUE(original_string16_value->Equals(copy_string16_value.get())); | 565 EXPECT_TRUE(original_string16_value->Equals(copy_string16_value.get())); |
566 EXPECT_TRUE(original_binary_value->Equals(copy_binary_value.get())); | 566 EXPECT_TRUE(original_binary_value->Equals(copy_binary_value.get())); |
567 EXPECT_TRUE(original_list_value->Equals(copy_list_value.get())); | 567 EXPECT_TRUE(original_list_value->Equals(copy_list_value.get())); |
568 } | 568 } |
569 | 569 |
570 TEST_F(ValuesTest, RemoveEmptyChildren) { | 570 TEST_F(ValuesTest, RemoveEmptyChildren) { |
571 scoped_ptr<DictionaryValue> root(new DictionaryValue); | 571 scoped_ptr<DictionaryValue> root(new DictionaryValue); |
572 // Remove empty lists and dictionaries. | 572 // Remove empty lists and dictionaries. |
573 root->Set("empty_dict", new DictionaryValue); | 573 root->Set("empty_dict", new DictionaryValue); |
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
679 EXPECT_TRUE(res_sub_dict->GetString("sub_base_key", &sub_base_key_value)); | 679 EXPECT_TRUE(res_sub_dict->GetString("sub_base_key", &sub_base_key_value)); |
680 EXPECT_EQ("sub_base_key_value_base", sub_base_key_value); // Preserved. | 680 EXPECT_EQ("sub_base_key_value_base", sub_base_key_value); // Preserved. |
681 std::string sub_collide_key_value; | 681 std::string sub_collide_key_value; |
682 EXPECT_TRUE(res_sub_dict->GetString("sub_collide_key", | 682 EXPECT_TRUE(res_sub_dict->GetString("sub_collide_key", |
683 &sub_collide_key_value)); | 683 &sub_collide_key_value)); |
684 EXPECT_EQ("sub_collide_key_value_merge", sub_collide_key_value); // Replaced. | 684 EXPECT_EQ("sub_collide_key_value_merge", sub_collide_key_value); // Replaced. |
685 std::string sub_merge_key_value; | 685 std::string sub_merge_key_value; |
686 EXPECT_TRUE(res_sub_dict->GetString("sub_merge_key", &sub_merge_key_value)); | 686 EXPECT_TRUE(res_sub_dict->GetString("sub_merge_key", &sub_merge_key_value)); |
687 EXPECT_EQ("sub_merge_key_value_merge", sub_merge_key_value); // Merged in. | 687 EXPECT_EQ("sub_merge_key_value_merge", sub_merge_key_value); // Merged in. |
688 } | 688 } |
OLD | NEW |