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

Side by Side Diff: base/values_unittest.cc

Issue 2792573002: Remove base::Value::CreateNullValue (Closed)
Patch Set: Rebase Created 3 years, 8 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
« no previous file with comments | « base/values.cc ('k') | cc/benchmarks/invalidation_benchmark.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) 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 "base/values.h" 5 #include "base/values.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <limits> 9 #include <limits>
10 #include <memory> 10 #include <memory>
(...skipping 565 matching lines...) Expand 10 before | Expand all | Expand 10 after
576 DictionaryValue dict; 576 DictionaryValue dict;
577 dict.Set(key, MakeUnique<Value>()); 577 dict.Set(key, MakeUnique<Value>());
578 EXPECT_TRUE(dict.HasKey(key)); 578 EXPECT_TRUE(dict.HasKey(key));
579 EXPECT_TRUE(dict.Remove(key, NULL)); 579 EXPECT_TRUE(dict.Remove(key, NULL));
580 EXPECT_FALSE(dict.HasKey(key)); 580 EXPECT_FALSE(dict.HasKey(key));
581 } 581 }
582 } 582 }
583 583
584 TEST(ValuesTest, DictionaryWithoutPathExpansion) { 584 TEST(ValuesTest, DictionaryWithoutPathExpansion) {
585 DictionaryValue dict; 585 DictionaryValue dict;
586 dict.Set("this.is.expanded", Value::CreateNullValue()); 586 dict.Set("this.is.expanded", MakeUnique<Value>());
587 dict.SetWithoutPathExpansion("this.isnt.expanded", Value::CreateNullValue()); 587 dict.SetWithoutPathExpansion("this.isnt.expanded", MakeUnique<Value>());
588 588
589 EXPECT_FALSE(dict.HasKey("this.is.expanded")); 589 EXPECT_FALSE(dict.HasKey("this.is.expanded"));
590 EXPECT_TRUE(dict.HasKey("this")); 590 EXPECT_TRUE(dict.HasKey("this"));
591 Value* value1; 591 Value* value1;
592 EXPECT_TRUE(dict.Get("this", &value1)); 592 EXPECT_TRUE(dict.Get("this", &value1));
593 DictionaryValue* value2; 593 DictionaryValue* value2;
594 ASSERT_TRUE(dict.GetDictionaryWithoutPathExpansion("this", &value2)); 594 ASSERT_TRUE(dict.GetDictionaryWithoutPathExpansion("this", &value2));
595 EXPECT_EQ(value1, value2); 595 EXPECT_EQ(value1, value2);
596 EXPECT_EQ(1U, value2->size()); 596 EXPECT_EQ(1U, value2->size());
597 597
598 EXPECT_TRUE(dict.HasKey("this.isnt.expanded")); 598 EXPECT_TRUE(dict.HasKey("this.isnt.expanded"));
599 Value* value3; 599 Value* value3;
600 EXPECT_FALSE(dict.Get("this.isnt.expanded", &value3)); 600 EXPECT_FALSE(dict.Get("this.isnt.expanded", &value3));
601 Value* value4; 601 Value* value4;
602 ASSERT_TRUE(dict.GetWithoutPathExpansion("this.isnt.expanded", &value4)); 602 ASSERT_TRUE(dict.GetWithoutPathExpansion("this.isnt.expanded", &value4));
603 EXPECT_EQ(Value::Type::NONE, value4->GetType()); 603 EXPECT_EQ(Value::Type::NONE, value4->GetType());
604 } 604 }
605 605
606 // Tests the deprecated version of SetWithoutPathExpansion. 606 // Tests the deprecated version of SetWithoutPathExpansion.
607 // TODO(estade): remove. 607 // TODO(estade): remove.
608 TEST(ValuesTest, DictionaryWithoutPathExpansionDeprecated) { 608 TEST(ValuesTest, DictionaryWithoutPathExpansionDeprecated) {
609 DictionaryValue dict; 609 DictionaryValue dict;
610 dict.Set("this.is.expanded", Value::CreateNullValue()); 610 dict.Set("this.is.expanded", MakeUnique<Value>());
611 dict.SetWithoutPathExpansion("this.isnt.expanded", Value::CreateNullValue()); 611 dict.SetWithoutPathExpansion("this.isnt.expanded", MakeUnique<Value>());
612 612
613 EXPECT_FALSE(dict.HasKey("this.is.expanded")); 613 EXPECT_FALSE(dict.HasKey("this.is.expanded"));
614 EXPECT_TRUE(dict.HasKey("this")); 614 EXPECT_TRUE(dict.HasKey("this"));
615 Value* value1; 615 Value* value1;
616 EXPECT_TRUE(dict.Get("this", &value1)); 616 EXPECT_TRUE(dict.Get("this", &value1));
617 DictionaryValue* value2; 617 DictionaryValue* value2;
618 ASSERT_TRUE(dict.GetDictionaryWithoutPathExpansion("this", &value2)); 618 ASSERT_TRUE(dict.GetDictionaryWithoutPathExpansion("this", &value2));
619 EXPECT_EQ(value1, value2); 619 EXPECT_EQ(value1, value2);
620 EXPECT_EQ(1U, value2->size()); 620 EXPECT_EQ(1U, value2->size());
621 621
(...skipping 25 matching lines...) Expand all
647 647
648 removed_item.reset(); 648 removed_item.reset();
649 EXPECT_TRUE(dict.RemovePath("a.long.key.path", &removed_item)); 649 EXPECT_TRUE(dict.RemovePath("a.long.key.path", &removed_item));
650 ASSERT_TRUE(removed_item); 650 ASSERT_TRUE(removed_item);
651 EXPECT_TRUE(removed_item->IsType(base::Value::Type::BOOLEAN)); 651 EXPECT_TRUE(removed_item->IsType(base::Value::Type::BOOLEAN));
652 EXPECT_TRUE(dict.empty()); 652 EXPECT_TRUE(dict.empty());
653 } 653 }
654 654
655 TEST(ValuesTest, DeepCopy) { 655 TEST(ValuesTest, DeepCopy) {
656 DictionaryValue original_dict; 656 DictionaryValue original_dict;
657 std::unique_ptr<Value> scoped_null = Value::CreateNullValue(); 657 auto scoped_null = MakeUnique<Value>();
658 Value* original_null = scoped_null.get(); 658 Value* original_null = scoped_null.get();
659 original_dict.Set("null", std::move(scoped_null)); 659 original_dict.Set("null", std::move(scoped_null));
660 std::unique_ptr<Value> scoped_bool(new Value(true)); 660 std::unique_ptr<Value> scoped_bool(new Value(true));
661 Value* original_bool = scoped_bool.get(); 661 Value* original_bool = scoped_bool.get();
662 original_dict.Set("bool", std::move(scoped_bool)); 662 original_dict.Set("bool", std::move(scoped_bool));
663 std::unique_ptr<Value> scoped_int(new Value(42)); 663 std::unique_ptr<Value> scoped_int(new Value(42));
664 Value* original_int = scoped_int.get(); 664 Value* original_int = scoped_int.get();
665 original_dict.Set("int", std::move(scoped_int)); 665 original_dict.Set("int", std::move(scoped_int));
666 std::unique_ptr<Value> scoped_double(new Value(3.14)); 666 std::unique_ptr<Value> scoped_double(new Value(3.14));
667 Value* original_double = scoped_double.get(); 667 Value* original_double = scoped_double.get();
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after
795 ASSERT_TRUE(copy_value); 795 ASSERT_TRUE(copy_value);
796 ASSERT_NE(copy_value, original_nested_dictionary); 796 ASSERT_NE(copy_value, original_nested_dictionary);
797 ASSERT_TRUE(copy_value->IsType(Value::Type::DICTIONARY)); 797 ASSERT_TRUE(copy_value->IsType(Value::Type::DICTIONARY));
798 DictionaryValue* copy_nested_dictionary = NULL; 798 DictionaryValue* copy_nested_dictionary = NULL;
799 ASSERT_TRUE(copy_value->GetAsDictionary(&copy_nested_dictionary)); 799 ASSERT_TRUE(copy_value->GetAsDictionary(&copy_nested_dictionary));
800 ASSERT_TRUE(copy_nested_dictionary); 800 ASSERT_TRUE(copy_nested_dictionary);
801 EXPECT_TRUE(copy_nested_dictionary->HasKey("key")); 801 EXPECT_TRUE(copy_nested_dictionary->HasKey("key"));
802 } 802 }
803 803
804 TEST(ValuesTest, Equals) { 804 TEST(ValuesTest, Equals) {
805 std::unique_ptr<Value> null1(Value::CreateNullValue()); 805 auto null1 = MakeUnique<Value>();
806 std::unique_ptr<Value> null2(Value::CreateNullValue()); 806 auto null2 = MakeUnique<Value>();
807 EXPECT_NE(null1.get(), null2.get()); 807 EXPECT_NE(null1.get(), null2.get());
808 EXPECT_EQ(*null1, *null2); 808 EXPECT_EQ(*null1, *null2);
809 809
810 Value boolean(false); 810 Value boolean(false);
811 EXPECT_NE(*null1, boolean); 811 EXPECT_NE(*null1, boolean);
812 812
813 DictionaryValue dv; 813 DictionaryValue dv;
814 dv.SetBoolean("a", false); 814 dv.SetBoolean("a", false);
815 dv.SetInteger("b", 2); 815 dv.SetInteger("b", 2);
816 dv.SetDouble("c", 2.5); 816 dv.SetDouble("c", 2.5);
817 dv.SetString("d1", "string"); 817 dv.SetString("d1", "string");
818 dv.SetString("d2", ASCIIToUTF16("http://google.com")); 818 dv.SetString("d2", ASCIIToUTF16("http://google.com"));
819 dv.Set("e", Value::CreateNullValue()); 819 dv.Set("e", MakeUnique<Value>());
820 820
821 auto copy = MakeUnique<DictionaryValue>(dv); 821 auto copy = MakeUnique<DictionaryValue>(dv);
822 EXPECT_EQ(dv, *copy); 822 EXPECT_EQ(dv, *copy);
823 823
824 std::unique_ptr<ListValue> list(new ListValue); 824 std::unique_ptr<ListValue> list(new ListValue);
825 ListValue* original_list = list.get(); 825 ListValue* original_list = list.get();
826 list->Append(Value::CreateNullValue()); 826 list->Append(MakeUnique<Value>());
827 list->Append(WrapUnique(new DictionaryValue)); 827 list->Append(WrapUnique(new DictionaryValue));
828 auto list_copy = MakeUnique<Value>(*list); 828 auto list_copy = MakeUnique<Value>(*list);
829 829
830 dv.Set("f", std::move(list)); 830 dv.Set("f", std::move(list));
831 EXPECT_NE(dv, *copy); 831 EXPECT_NE(dv, *copy);
832 copy->Set("f", std::move(list_copy)); 832 copy->Set("f", std::move(list_copy));
833 EXPECT_EQ(dv, *copy); 833 EXPECT_EQ(dv, *copy);
834 834
835 original_list->Append(MakeUnique<Value>(true)); 835 original_list->Append(MakeUnique<Value>(true));
836 EXPECT_NE(dv, *copy); 836 EXPECT_NE(dv, *copy);
837 837
838 // Check if Equals detects differences in only the keys. 838 // Check if Equals detects differences in only the keys.
839 copy = MakeUnique<DictionaryValue>(dv); 839 copy = MakeUnique<DictionaryValue>(dv);
840 EXPECT_EQ(dv, *copy); 840 EXPECT_EQ(dv, *copy);
841 copy->Remove("a", NULL); 841 copy->Remove("a", NULL);
842 copy->SetBoolean("aa", false); 842 copy->SetBoolean("aa", false);
843 EXPECT_NE(dv, *copy); 843 EXPECT_NE(dv, *copy);
844 } 844 }
845 845
846 TEST(ValuesTest, StaticEquals) { 846 TEST(ValuesTest, StaticEquals) {
847 std::unique_ptr<Value> null1(Value::CreateNullValue()); 847 auto null1 = MakeUnique<Value>();
848 std::unique_ptr<Value> null2(Value::CreateNullValue()); 848 auto null2 = MakeUnique<Value>();
849 EXPECT_TRUE(Value::Equals(null1.get(), null2.get())); 849 EXPECT_TRUE(Value::Equals(null1.get(), null2.get()));
850 EXPECT_TRUE(Value::Equals(NULL, NULL)); 850 EXPECT_TRUE(Value::Equals(NULL, NULL));
851 851
852 std::unique_ptr<Value> i42(new Value(42)); 852 std::unique_ptr<Value> i42(new Value(42));
853 std::unique_ptr<Value> j42(new Value(42)); 853 std::unique_ptr<Value> j42(new Value(42));
854 std::unique_ptr<Value> i17(new Value(17)); 854 std::unique_ptr<Value> i17(new Value(17));
855 EXPECT_TRUE(Value::Equals(i42.get(), i42.get())); 855 EXPECT_TRUE(Value::Equals(i42.get(), i42.get()));
856 EXPECT_TRUE(Value::Equals(j42.get(), i42.get())); 856 EXPECT_TRUE(Value::Equals(j42.get(), i42.get()));
857 EXPECT_TRUE(Value::Equals(i42.get(), j42.get())); 857 EXPECT_TRUE(Value::Equals(i42.get(), j42.get()));
858 EXPECT_FALSE(Value::Equals(i42.get(), i17.get())); 858 EXPECT_FALSE(Value::Equals(i42.get(), i17.get()));
859 EXPECT_FALSE(Value::Equals(i42.get(), NULL)); 859 EXPECT_FALSE(Value::Equals(i42.get(), NULL));
860 EXPECT_FALSE(Value::Equals(NULL, i42.get())); 860 EXPECT_FALSE(Value::Equals(NULL, i42.get()));
861 861
862 // NULL and Value::CreateNullValue() are intentionally different: We need 862 // NULL and MakeUnique<Value>() are intentionally different: We need
863 // support for NULL as a return value for "undefined" without caring for 863 // support for NULL as a return value for "undefined" without caring for
864 // ownership of the pointer. 864 // ownership of the pointer.
865 EXPECT_FALSE(Value::Equals(null1.get(), NULL)); 865 EXPECT_FALSE(Value::Equals(null1.get(), NULL));
866 EXPECT_FALSE(Value::Equals(NULL, null1.get())); 866 EXPECT_FALSE(Value::Equals(NULL, null1.get()));
867 } 867 }
868 868
869 TEST(ValuesTest, Comparisons) { 869 TEST(ValuesTest, Comparisons) {
870 // Test None Values. 870 // Test None Values.
871 Value null1; 871 Value null1;
872 Value null2; 872 Value null2;
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
981 EXPECT_LT(values[i], values[j]); 981 EXPECT_LT(values[i], values[j]);
982 EXPECT_FALSE(values[i] > values[j]); 982 EXPECT_FALSE(values[i] > values[j]);
983 EXPECT_LE(values[i], values[j]); 983 EXPECT_LE(values[i], values[j]);
984 EXPECT_FALSE(values[i] >= values[j]); 984 EXPECT_FALSE(values[i] >= values[j]);
985 } 985 }
986 } 986 }
987 } 987 }
988 988
989 TEST(ValuesTest, DeepCopyCovariantReturnTypes) { 989 TEST(ValuesTest, DeepCopyCovariantReturnTypes) {
990 DictionaryValue original_dict; 990 DictionaryValue original_dict;
991 std::unique_ptr<Value> scoped_null(Value::CreateNullValue()); 991 auto scoped_null = MakeUnique<Value>();
992 Value* original_null = scoped_null.get(); 992 Value* original_null = scoped_null.get();
993 original_dict.Set("null", std::move(scoped_null)); 993 original_dict.Set("null", std::move(scoped_null));
994 std::unique_ptr<Value> scoped_bool(new Value(true)); 994 std::unique_ptr<Value> scoped_bool(new Value(true));
995 Value* original_bool = scoped_bool.get(); 995 Value* original_bool = scoped_bool.get();
996 original_dict.Set("bool", std::move(scoped_bool)); 996 original_dict.Set("bool", std::move(scoped_bool));
997 std::unique_ptr<Value> scoped_int(new Value(42)); 997 std::unique_ptr<Value> scoped_int(new Value(42));
998 Value* original_int = scoped_int.get(); 998 Value* original_int = scoped_int.get();
999 original_dict.Set("int", std::move(scoped_int)); 999 original_dict.Set("int", std::move(scoped_int));
1000 std::unique_ptr<Value> scoped_double(new Value(3.14)); 1000 std::unique_ptr<Value> scoped_double(new Value(3.14));
1001 Value* original_double = scoped_double.get(); 1001 Value* original_double = scoped_double.get();
(...skipping 518 matching lines...) Expand 10 before | Expand all | Expand 10 after
1520 } 1520 }
1521 1521
1522 TEST(ValuesTest, SelfSwap) { 1522 TEST(ValuesTest, SelfSwap) {
1523 base::Value test(1); 1523 base::Value test(1);
1524 using namespace std; 1524 using namespace std;
1525 swap(test, test); 1525 swap(test, test);
1526 EXPECT_TRUE(test.GetInt() == 1); 1526 EXPECT_TRUE(test.GetInt() == 1);
1527 } 1527 }
1528 1528
1529 } // namespace base 1529 } // namespace base
OLDNEW
« no previous file with comments | « base/values.cc ('k') | cc/benchmarks/invalidation_benchmark.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698