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/strings/string16.h" | 8 #include "base/strings/string16.h" |
9 #include "base/strings/utf_string_conversions.h" | 9 #include "base/strings/utf_string_conversions.h" |
10 #include "base/values.h" | 10 #include "base/values.h" |
(...skipping 300 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
311 EXPECT_FALSE(deletion_flag); | 311 EXPECT_FALSE(deletion_flag); |
312 EXPECT_TRUE(dict.HasKey(key)); | 312 EXPECT_TRUE(dict.HasKey(key)); |
313 EXPECT_TRUE(dict.Remove(key, NULL)); | 313 EXPECT_TRUE(dict.Remove(key, NULL)); |
314 EXPECT_TRUE(deletion_flag); | 314 EXPECT_TRUE(deletion_flag); |
315 EXPECT_FALSE(dict.HasKey(key)); | 315 EXPECT_FALSE(dict.HasKey(key)); |
316 } | 316 } |
317 } | 317 } |
318 | 318 |
319 TEST(ValuesTest, DictionaryWithoutPathExpansion) { | 319 TEST(ValuesTest, DictionaryWithoutPathExpansion) { |
320 DictionaryValue dict; | 320 DictionaryValue dict; |
321 dict.Set("this.is.expanded", make_scoped_ptr(Value::CreateNullValue())); | 321 dict.Set("this.is.expanded", Value::CreateNullValue()); |
322 dict.SetWithoutPathExpansion("this.isnt.expanded", | 322 dict.SetWithoutPathExpansion("this.isnt.expanded", Value::CreateNullValue()); |
323 make_scoped_ptr(Value::CreateNullValue())); | |
324 | 323 |
325 EXPECT_FALSE(dict.HasKey("this.is.expanded")); | 324 EXPECT_FALSE(dict.HasKey("this.is.expanded")); |
326 EXPECT_TRUE(dict.HasKey("this")); | 325 EXPECT_TRUE(dict.HasKey("this")); |
327 Value* value1; | 326 Value* value1; |
328 EXPECT_TRUE(dict.Get("this", &value1)); | 327 EXPECT_TRUE(dict.Get("this", &value1)); |
329 DictionaryValue* value2; | 328 DictionaryValue* value2; |
330 ASSERT_TRUE(dict.GetDictionaryWithoutPathExpansion("this", &value2)); | 329 ASSERT_TRUE(dict.GetDictionaryWithoutPathExpansion("this", &value2)); |
331 EXPECT_EQ(value1, value2); | 330 EXPECT_EQ(value1, value2); |
332 EXPECT_EQ(1U, value2->size()); | 331 EXPECT_EQ(1U, value2->size()); |
333 | 332 |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
383 | 382 |
384 removed_item.reset(); | 383 removed_item.reset(); |
385 EXPECT_TRUE(dict.RemovePath("a.long.key.path", &removed_item)); | 384 EXPECT_TRUE(dict.RemovePath("a.long.key.path", &removed_item)); |
386 ASSERT_TRUE(removed_item); | 385 ASSERT_TRUE(removed_item); |
387 EXPECT_TRUE(removed_item->IsType(base::Value::TYPE_BOOLEAN)); | 386 EXPECT_TRUE(removed_item->IsType(base::Value::TYPE_BOOLEAN)); |
388 EXPECT_TRUE(dict.empty()); | 387 EXPECT_TRUE(dict.empty()); |
389 } | 388 } |
390 | 389 |
391 TEST(ValuesTest, DeepCopy) { | 390 TEST(ValuesTest, DeepCopy) { |
392 DictionaryValue original_dict; | 391 DictionaryValue original_dict; |
393 Value* original_null = Value::CreateNullValue(); | 392 Value* original_null = Value::CreateNullValue().release(); |
danakj
2015/05/08 18:07:26
can you make original_null a scoped_ptr?
Evan Stade
2015/05/08 18:32:09
not really --- it's referenced below; this test ne
danakj
2015/05/08 18:33:42
Can you put the weak ref in a separate variable so
Evan Stade
2015/05/08 18:38:27
I don't think expressing ownership with a raw poin
danakj
2015/05/08 18:48:28
This test was written before scoped_ptr existed fr
Evan Stade
2015/05/08 18:54:12
All the lines with "make_scoped_ptr" were not writ
| |
394 original_dict.Set("null", make_scoped_ptr(original_null)); | 393 original_dict.Set("null", make_scoped_ptr(original_null)); |
395 FundamentalValue* original_bool = new FundamentalValue(true); | 394 FundamentalValue* original_bool = new FundamentalValue(true); |
396 original_dict.Set("bool", make_scoped_ptr(original_bool)); | 395 original_dict.Set("bool", make_scoped_ptr(original_bool)); |
397 FundamentalValue* original_int = new FundamentalValue(42); | 396 FundamentalValue* original_int = new FundamentalValue(42); |
398 original_dict.Set("int", make_scoped_ptr(original_int)); | 397 original_dict.Set("int", make_scoped_ptr(original_int)); |
399 FundamentalValue* original_double = new FundamentalValue(3.14); | 398 FundamentalValue* original_double = new FundamentalValue(3.14); |
400 original_dict.Set("double", make_scoped_ptr(original_double)); | 399 original_dict.Set("double", make_scoped_ptr(original_double)); |
401 StringValue* original_string = new StringValue("hello"); | 400 StringValue* original_string = new StringValue("hello"); |
402 original_dict.Set("string", make_scoped_ptr(original_string)); | 401 original_dict.Set("string", make_scoped_ptr(original_string)); |
403 StringValue* original_string16 = new StringValue(ASCIIToUTF16("hello16")); | 402 StringValue* original_string16 = new StringValue(ASCIIToUTF16("hello16")); |
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
522 ASSERT_TRUE(copy_value); | 521 ASSERT_TRUE(copy_value); |
523 ASSERT_NE(copy_value, original_nested_dictionary); | 522 ASSERT_NE(copy_value, original_nested_dictionary); |
524 ASSERT_TRUE(copy_value->IsType(Value::TYPE_DICTIONARY)); | 523 ASSERT_TRUE(copy_value->IsType(Value::TYPE_DICTIONARY)); |
525 DictionaryValue* copy_nested_dictionary = NULL; | 524 DictionaryValue* copy_nested_dictionary = NULL; |
526 ASSERT_TRUE(copy_value->GetAsDictionary(©_nested_dictionary)); | 525 ASSERT_TRUE(copy_value->GetAsDictionary(©_nested_dictionary)); |
527 ASSERT_TRUE(copy_nested_dictionary); | 526 ASSERT_TRUE(copy_nested_dictionary); |
528 EXPECT_TRUE(copy_nested_dictionary->HasKey("key")); | 527 EXPECT_TRUE(copy_nested_dictionary->HasKey("key")); |
529 } | 528 } |
530 | 529 |
531 TEST(ValuesTest, Equals) { | 530 TEST(ValuesTest, Equals) { |
532 Value* null1 = Value::CreateNullValue(); | 531 scoped_ptr<Value> null1(Value::CreateNullValue()); |
533 Value* null2 = Value::CreateNullValue(); | 532 scoped_ptr<Value> null2(Value::CreateNullValue()); |
534 EXPECT_NE(null1, null2); | 533 EXPECT_NE(null1.get(), null2.get()); |
535 EXPECT_TRUE(null1->Equals(null2)); | 534 EXPECT_TRUE(null1->Equals(null2.get())); |
536 | 535 |
537 Value* boolean = new FundamentalValue(false); | 536 FundamentalValue boolean(false); |
538 EXPECT_FALSE(null1->Equals(boolean)); | 537 EXPECT_FALSE(null1->Equals(&boolean)); |
539 delete null1; | |
540 delete null2; | |
541 delete boolean; | |
542 | 538 |
543 DictionaryValue dv; | 539 DictionaryValue dv; |
544 dv.SetBoolean("a", false); | 540 dv.SetBoolean("a", false); |
545 dv.SetInteger("b", 2); | 541 dv.SetInteger("b", 2); |
546 dv.SetDouble("c", 2.5); | 542 dv.SetDouble("c", 2.5); |
547 dv.SetString("d1", "string"); | 543 dv.SetString("d1", "string"); |
548 dv.SetString("d2", ASCIIToUTF16("http://google.com")); | 544 dv.SetString("d2", ASCIIToUTF16("http://google.com")); |
549 dv.Set("e", make_scoped_ptr(Value::CreateNullValue())); | 545 dv.Set("e", Value::CreateNullValue()); |
550 | 546 |
551 scoped_ptr<DictionaryValue> copy = dv.CreateDeepCopy(); | 547 scoped_ptr<DictionaryValue> copy = dv.CreateDeepCopy(); |
552 EXPECT_TRUE(dv.Equals(copy.get())); | 548 EXPECT_TRUE(dv.Equals(copy.get())); |
553 | 549 |
554 ListValue* list = new ListValue; | 550 ListValue* list = new ListValue; |
555 list->Append(Value::CreateNullValue()); | 551 list->Append(Value::CreateNullValue()); |
556 list->Append(new DictionaryValue); | 552 list->Append(new DictionaryValue); |
557 dv.Set("f", make_scoped_ptr(list)); | 553 dv.Set("f", make_scoped_ptr(list)); |
558 | 554 |
559 EXPECT_FALSE(dv.Equals(copy.get())); | 555 EXPECT_FALSE(dv.Equals(copy.get())); |
(...skipping 29 matching lines...) Expand all Loading... | |
589 | 585 |
590 // NULL and Value::CreateNullValue() are intentionally different: We need | 586 // NULL and Value::CreateNullValue() are intentionally different: We need |
591 // support for NULL as a return value for "undefined" without caring for | 587 // support for NULL as a return value for "undefined" without caring for |
592 // ownership of the pointer. | 588 // ownership of the pointer. |
593 EXPECT_FALSE(Value::Equals(null1.get(), NULL)); | 589 EXPECT_FALSE(Value::Equals(null1.get(), NULL)); |
594 EXPECT_FALSE(Value::Equals(NULL, null1.get())); | 590 EXPECT_FALSE(Value::Equals(NULL, null1.get())); |
595 } | 591 } |
596 | 592 |
597 TEST(ValuesTest, DeepCopyCovariantReturnTypes) { | 593 TEST(ValuesTest, DeepCopyCovariantReturnTypes) { |
598 DictionaryValue original_dict; | 594 DictionaryValue original_dict; |
599 Value* original_null = Value::CreateNullValue(); | 595 Value* original_null = Value::CreateNullValue().release(); |
danakj
2015/05/08 18:07:26
can you make original_null a scoped_ptr too?
Evan Stade
2015/05/08 18:32:09
Done.
| |
600 original_dict.Set("null", make_scoped_ptr(original_null)); | 596 original_dict.Set("null", make_scoped_ptr(original_null)); |
601 FundamentalValue* original_bool = new FundamentalValue(true); | 597 FundamentalValue* original_bool = new FundamentalValue(true); |
602 original_dict.Set("bool", make_scoped_ptr(original_bool)); | 598 original_dict.Set("bool", make_scoped_ptr(original_bool)); |
603 FundamentalValue* original_int = new FundamentalValue(42); | 599 FundamentalValue* original_int = new FundamentalValue(42); |
604 original_dict.Set("int", make_scoped_ptr(original_int)); | 600 original_dict.Set("int", make_scoped_ptr(original_int)); |
605 FundamentalValue* original_double = new FundamentalValue(3.14); | 601 FundamentalValue* original_double = new FundamentalValue(3.14); |
606 original_dict.Set("double", make_scoped_ptr(original_double)); | 602 original_dict.Set("double", make_scoped_ptr(original_double)); |
607 StringValue* original_string = new StringValue("hello"); | 603 StringValue* original_string = new StringValue("hello"); |
608 original_dict.Set("string", make_scoped_ptr(original_string)); | 604 original_dict.Set("string", make_scoped_ptr(original_string)); |
609 StringValue* original_string16 = new StringValue(ASCIIToUTF16("hello16")); | 605 StringValue* original_string16 = new StringValue(ASCIIToUTF16("hello16")); |
(...skipping 510 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1120 EXPECT_FALSE(main_list.GetList(1, NULL)); | 1116 EXPECT_FALSE(main_list.GetList(1, NULL)); |
1121 EXPECT_FALSE(main_list.GetList(2, NULL)); | 1117 EXPECT_FALSE(main_list.GetList(2, NULL)); |
1122 EXPECT_FALSE(main_list.GetList(3, NULL)); | 1118 EXPECT_FALSE(main_list.GetList(3, NULL)); |
1123 EXPECT_FALSE(main_list.GetList(4, NULL)); | 1119 EXPECT_FALSE(main_list.GetList(4, NULL)); |
1124 EXPECT_FALSE(main_list.GetList(5, NULL)); | 1120 EXPECT_FALSE(main_list.GetList(5, NULL)); |
1125 EXPECT_TRUE(main_list.GetList(6, NULL)); | 1121 EXPECT_TRUE(main_list.GetList(6, NULL)); |
1126 EXPECT_FALSE(main_list.GetList(7, NULL)); | 1122 EXPECT_FALSE(main_list.GetList(7, NULL)); |
1127 } | 1123 } |
1128 | 1124 |
1129 } // namespace base | 1125 } // namespace base |
OLD | NEW |