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

Side by Side Diff: extensions/browser/api/declarative/deduping_factory_unittest.cc

Issue 1902873002: Convert //extensions/browser/api from scoped_ptr to std::unique_ptr (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 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
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 "extensions/browser/api/declarative/deduping_factory.h" 5 #include "extensions/browser/api/declarative/deduping_factory.h"
6 6
7 #include <memory>
8
7 #include "base/macros.h" 9 #include "base/macros.h"
8 #include "base/memory/scoped_ptr.h"
9 #include "base/values.h" 10 #include "base/values.h"
10 #include "testing/gtest/include/gtest/gtest.h" 11 #include "testing/gtest/include/gtest/gtest.h"
11 12
12 namespace { 13 namespace {
13 14
14 const char kTypeName[] = "Foo"; 15 const char kTypeName[] = "Foo";
15 const char kTypeName2[] = "Foo2"; 16 const char kTypeName2[] = "Foo2";
16 17
17 // This serves as an example how to use the DedupingFactory. 18 // This serves as an example how to use the DedupingFactory.
18 class BaseClass : public base::RefCounted<BaseClass> { 19 class BaseClass : public base::RefCounted<BaseClass> {
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
65 CHECK(value->GetAsDictionary(&dict)); 66 CHECK(value->GetAsDictionary(&dict));
66 int parameter = 0; 67 int parameter = 0;
67 if (!dict->GetInteger("parameter", &parameter)) { 68 if (!dict->GetInteger("parameter", &parameter)) {
68 *error = "No parameter"; 69 *error = "No parameter";
69 *bad_message = true; 70 *bad_message = true;
70 return scoped_refptr<const BaseClass>(NULL); 71 return scoped_refptr<const BaseClass>(NULL);
71 } 72 }
72 return scoped_refptr<const BaseClass>(new Foo(parameter)); 73 return scoped_refptr<const BaseClass>(new Foo(parameter));
73 } 74 }
74 75
75 scoped_ptr<base::DictionaryValue> CreateDictWithParameter(int parameter) { 76 std::unique_ptr<base::DictionaryValue> CreateDictWithParameter(int parameter) {
76 scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue); 77 std::unique_ptr<base::DictionaryValue> dict(new base::DictionaryValue);
77 dict->SetInteger("parameter", parameter); 78 dict->SetInteger("parameter", parameter);
78 return dict; 79 return dict;
79 } 80 }
80 81
81 } // namespace 82 } // namespace
82 83
83 namespace extensions { 84 namespace extensions {
84 85
85 TEST(DedupingFactoryTest, InstantiationParameterized) { 86 TEST(DedupingFactoryTest, InstantiationParameterized) {
86 DedupingFactory<BaseClass> factory(2); 87 DedupingFactory<BaseClass> factory(2);
87 factory.RegisterFactoryMethod( 88 factory.RegisterFactoryMethod(
88 kTypeName, DedupingFactory<BaseClass>::IS_PARAMETERIZED, &CreateFoo); 89 kTypeName, DedupingFactory<BaseClass>::IS_PARAMETERIZED, &CreateFoo);
89 90
90 scoped_ptr<base::DictionaryValue> d1(CreateDictWithParameter(1)); 91 std::unique_ptr<base::DictionaryValue> d1(CreateDictWithParameter(1));
91 scoped_ptr<base::DictionaryValue> d2(CreateDictWithParameter(2)); 92 std::unique_ptr<base::DictionaryValue> d2(CreateDictWithParameter(2));
92 scoped_ptr<base::DictionaryValue> d3(CreateDictWithParameter(3)); 93 std::unique_ptr<base::DictionaryValue> d3(CreateDictWithParameter(3));
93 scoped_ptr<base::DictionaryValue> d4(CreateDictWithParameter(4)); 94 std::unique_ptr<base::DictionaryValue> d4(CreateDictWithParameter(4));
94 95
95 std::string error; 96 std::string error;
96 bool bad_message = false; 97 bool bad_message = false;
97 98
98 // Fill factory with 2 different types. 99 // Fill factory with 2 different types.
99 scoped_refptr<const BaseClass> c1( 100 scoped_refptr<const BaseClass> c1(
100 factory.Instantiate(kTypeName, d1.get(), &error, &bad_message)); 101 factory.Instantiate(kTypeName, d1.get(), &error, &bad_message));
101 scoped_refptr<const BaseClass> c2( 102 scoped_refptr<const BaseClass> c2(
102 factory.Instantiate(kTypeName, d2.get(), &error, &bad_message)); 103 factory.Instantiate(kTypeName, d2.get(), &error, &bad_message));
103 ASSERT_TRUE(c1.get()); 104 ASSERT_TRUE(c1.get());
(...skipping 23 matching lines...) Expand all
127 factory.Instantiate(kTypeName, d2.get(), &error, &bad_message)); 128 factory.Instantiate(kTypeName, d2.get(), &error, &bad_message));
128 EXPECT_EQ(2, static_cast<const Foo*>(c2_c.get())->parameter()); 129 EXPECT_EQ(2, static_cast<const Foo*>(c2_c.get())->parameter());
129 EXPECT_EQ(c2, c2_c); 130 EXPECT_EQ(c2, c2_c);
130 } 131 }
131 132
132 TEST(DedupingFactoryTest, InstantiationNonParameterized) { 133 TEST(DedupingFactoryTest, InstantiationNonParameterized) {
133 DedupingFactory<BaseClass> factory(2); 134 DedupingFactory<BaseClass> factory(2);
134 factory.RegisterFactoryMethod( 135 factory.RegisterFactoryMethod(
135 kTypeName, DedupingFactory<BaseClass>::IS_NOT_PARAMETERIZED, &CreateFoo); 136 kTypeName, DedupingFactory<BaseClass>::IS_NOT_PARAMETERIZED, &CreateFoo);
136 137
137 scoped_ptr<base::DictionaryValue> d1(CreateDictWithParameter(1)); 138 std::unique_ptr<base::DictionaryValue> d1(CreateDictWithParameter(1));
138 scoped_ptr<base::DictionaryValue> d2(CreateDictWithParameter(2)); 139 std::unique_ptr<base::DictionaryValue> d2(CreateDictWithParameter(2));
139 140
140 std::string error; 141 std::string error;
141 bool bad_message = false; 142 bool bad_message = false;
142 143
143 // We create two instances with different dictionaries but because the type is 144 // We create two instances with different dictionaries but because the type is
144 // declared to be not parameterized, we should get the same instance. 145 // declared to be not parameterized, we should get the same instance.
145 scoped_refptr<const BaseClass> c1( 146 scoped_refptr<const BaseClass> c1(
146 factory.Instantiate(kTypeName, d1.get(), &error, &bad_message)); 147 factory.Instantiate(kTypeName, d1.get(), &error, &bad_message));
147 scoped_refptr<const BaseClass> c2( 148 scoped_refptr<const BaseClass> c2(
148 factory.Instantiate(kTypeName, d2.get(), &error, &bad_message)); 149 factory.Instantiate(kTypeName, d2.get(), &error, &bad_message));
149 ASSERT_TRUE(c1.get()); 150 ASSERT_TRUE(c1.get());
150 ASSERT_TRUE(c2.get()); 151 ASSERT_TRUE(c2.get());
151 EXPECT_EQ(1, static_cast<const Foo*>(c1.get())->parameter()); 152 EXPECT_EQ(1, static_cast<const Foo*>(c1.get())->parameter());
152 EXPECT_EQ(1, static_cast<const Foo*>(c2.get())->parameter()); 153 EXPECT_EQ(1, static_cast<const Foo*>(c2.get())->parameter());
153 EXPECT_EQ(c1, c2); 154 EXPECT_EQ(c1, c2);
154 } 155 }
155 156
156 TEST(DedupingFactoryTest, TypeNames) { 157 TEST(DedupingFactoryTest, TypeNames) {
157 DedupingFactory<BaseClass> factory(2); 158 DedupingFactory<BaseClass> factory(2);
158 factory.RegisterFactoryMethod( 159 factory.RegisterFactoryMethod(
159 kTypeName, DedupingFactory<BaseClass>::IS_PARAMETERIZED, &CreateFoo); 160 kTypeName, DedupingFactory<BaseClass>::IS_PARAMETERIZED, &CreateFoo);
160 factory.RegisterFactoryMethod( 161 factory.RegisterFactoryMethod(
161 kTypeName2, DedupingFactory<BaseClass>::IS_PARAMETERIZED, &CreateFoo); 162 kTypeName2, DedupingFactory<BaseClass>::IS_PARAMETERIZED, &CreateFoo);
162 163
163 scoped_ptr<base::DictionaryValue> d1(CreateDictWithParameter(1)); 164 std::unique_ptr<base::DictionaryValue> d1(CreateDictWithParameter(1));
164 165
165 std::string error; 166 std::string error;
166 bool bad_message = false; 167 bool bad_message = false;
167 168
168 scoped_refptr<const BaseClass> c1_a( 169 scoped_refptr<const BaseClass> c1_a(
169 factory.Instantiate(kTypeName, d1.get(), &error, &bad_message)); 170 factory.Instantiate(kTypeName, d1.get(), &error, &bad_message));
170 scoped_refptr<const BaseClass> c1_b( 171 scoped_refptr<const BaseClass> c1_b(
171 factory.Instantiate(kTypeName2, d1.get(), &error, &bad_message)); 172 factory.Instantiate(kTypeName2, d1.get(), &error, &bad_message));
172 173
173 ASSERT_TRUE(c1_a.get()); 174 ASSERT_TRUE(c1_a.get());
174 ASSERT_TRUE(c1_b.get()); 175 ASSERT_TRUE(c1_b.get());
175 EXPECT_NE(c1_a, c1_b); 176 EXPECT_NE(c1_a, c1_b);
176 } 177 }
177 178
178 TEST(DedupingFactoryTest, Clear) { 179 TEST(DedupingFactoryTest, Clear) {
179 DedupingFactory<BaseClass> factory(2); 180 DedupingFactory<BaseClass> factory(2);
180 factory.RegisterFactoryMethod( 181 factory.RegisterFactoryMethod(
181 kTypeName, DedupingFactory<BaseClass>::IS_PARAMETERIZED, &CreateFoo); 182 kTypeName, DedupingFactory<BaseClass>::IS_PARAMETERIZED, &CreateFoo);
182 183
183 scoped_ptr<base::DictionaryValue> d1(CreateDictWithParameter(1)); 184 std::unique_ptr<base::DictionaryValue> d1(CreateDictWithParameter(1));
184 185
185 std::string error; 186 std::string error;
186 bool bad_message = false; 187 bool bad_message = false;
187 188
188 scoped_refptr<const BaseClass> c1_a( 189 scoped_refptr<const BaseClass> c1_a(
189 factory.Instantiate(kTypeName, d1.get(), &error, &bad_message)); 190 factory.Instantiate(kTypeName, d1.get(), &error, &bad_message));
190 191
191 factory.ClearPrototypes(); 192 factory.ClearPrototypes();
192 193
193 scoped_refptr<const BaseClass> c1_b( 194 scoped_refptr<const BaseClass> c1_b(
194 factory.Instantiate(kTypeName, d1.get(), &error, &bad_message)); 195 factory.Instantiate(kTypeName, d1.get(), &error, &bad_message));
195 196
196 ASSERT_TRUE(c1_a.get()); 197 ASSERT_TRUE(c1_a.get());
197 ASSERT_TRUE(c1_b.get()); 198 ASSERT_TRUE(c1_b.get());
198 EXPECT_NE(c1_a, c1_b); 199 EXPECT_NE(c1_a, c1_b);
199 } 200 }
200 201
201 } // namespace extensions 202 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698