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

Side by Side Diff: webrtc/base/optional_unittest.cc

Issue 1896833004: rtc::Optional<T>: Don't secretly contain a default-constructed T when empty (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: rebase Created 4 years, 7 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 | « webrtc/base/optional.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2015 The WebRTC Project Authors. All rights reserved. 2 * Copyright 2015 The WebRTC Project Authors. All rights reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
118 } 118 }
119 119
120 } // namespace 120 } // namespace
121 121
122 TEST(OptionalTest, TestConstructDefault) { 122 TEST(OptionalTest, TestConstructDefault) {
123 auto log = Logger::Setup(); 123 auto log = Logger::Setup();
124 { 124 {
125 Optional<Logger> x; 125 Optional<Logger> x;
126 EXPECT_FALSE(x); 126 EXPECT_FALSE(x);
127 } 127 }
128 EXPECT_EQ(V("0:0. default constructor", "0:0. destructor"), *log); 128 EXPECT_EQ(V(), *log);
129 } 129 }
130 130
131 TEST(OptionalTest, TestConstructCopyEmpty) { 131 TEST(OptionalTest, TestConstructCopyEmpty) {
132 auto log = Logger::Setup(); 132 auto log = Logger::Setup();
133 { 133 {
134 Optional<Logger> x; 134 Optional<Logger> x;
135 EXPECT_FALSE(x); 135 EXPECT_FALSE(x);
136 auto y = x; 136 auto y = x;
137 EXPECT_FALSE(y); 137 EXPECT_FALSE(y);
138 } 138 }
139 EXPECT_EQ(V("0:0. default constructor", "1:0. copy constructor (from 0:0)", 139 EXPECT_EQ(V(), *log);
140 "1:0. destructor", "0:0. destructor"),
141 *log);
142 } 140 }
143 141
144 TEST(OptionalTest, TestConstructCopyFull) { 142 TEST(OptionalTest, TestConstructCopyFull) {
145 auto log = Logger::Setup(); 143 auto log = Logger::Setup();
146 { 144 {
147 Logger a; 145 Logger a;
148 Optional<Logger> x(a); 146 Optional<Logger> x(a);
149 EXPECT_TRUE(x); 147 EXPECT_TRUE(x);
150 log->push_back("---"); 148 log->push_back("---");
151 auto y = x; 149 auto y = x;
152 EXPECT_TRUE(y); 150 EXPECT_TRUE(y);
153 log->push_back("---"); 151 log->push_back("---");
154 } 152 }
155 EXPECT_EQ(V("0:0. default constructor", "1:0. copy constructor (from 0:0)", 153 EXPECT_EQ(V("0:0. default constructor", "1:0. copy constructor (from 0:0)",
156 "---", "2:0. copy constructor (from 1:0)", "---", 154 "---", "2:0. copy constructor (from 1:0)", "---",
157 "2:0. destructor", "1:0. destructor", "0:0. destructor"), 155 "2:0. destructor", "1:0. destructor", "0:0. destructor"),
158 *log); 156 *log);
159 } 157 }
160 158
161 TEST(OptionalTest, TestConstructMoveEmpty) { 159 TEST(OptionalTest, TestConstructMoveEmpty) {
162 auto log = Logger::Setup(); 160 auto log = Logger::Setup();
163 { 161 {
164 Optional<Logger> x; 162 Optional<Logger> x;
165 EXPECT_FALSE(x); 163 EXPECT_FALSE(x);
166 auto y = std::move(x); 164 auto y = std::move(x);
167 EXPECT_FALSE(y); 165 EXPECT_FALSE(y);
168 } 166 }
169 EXPECT_EQ(V("0:0. default constructor", "1:0. move constructor (from 0:0)", 167 EXPECT_EQ(V(), *log);
170 "1:0. destructor", "0:0. destructor"),
171 *log);
172 } 168 }
173 169
174 TEST(OptionalTest, TestConstructMoveFull) { 170 TEST(OptionalTest, TestConstructMoveFull) {
175 auto log = Logger::Setup(); 171 auto log = Logger::Setup();
176 { 172 {
177 Optional<Logger> x(Logger(17)); 173 Optional<Logger> x(Logger(17));
178 EXPECT_TRUE(x); 174 EXPECT_TRUE(x);
179 log->push_back("---"); 175 log->push_back("---");
180 auto y = std::move(x); 176 auto y = std::move(x);
181 EXPECT_TRUE(x); 177 EXPECT_TRUE(x);
182 EXPECT_TRUE(y); 178 EXPECT_TRUE(y);
183 log->push_back("---"); 179 log->push_back("---");
184 } 180 }
185 EXPECT_EQ( 181 EXPECT_EQ(
186 V("0:17. explicit constructor", "1:17. move constructor (from 0:17)", 182 V("0:17. explicit constructor", "1:17. move constructor (from 0:17)",
187 "0:17. destructor", "---", "2:17. move constructor (from 1:17)", "---", 183 "0:17. destructor", "---", "2:17. move constructor (from 1:17)", "---",
188 "2:17. destructor", "1:17. destructor"), 184 "2:17. destructor", "1:17. destructor"),
189 *log); 185 *log);
190 } 186 }
191 187
192 TEST(OptionalTest, TestCopyAssignToEmptyFromEmpty) { 188 TEST(OptionalTest, TestCopyAssignToEmptyFromEmpty) {
193 auto log = Logger::Setup(); 189 auto log = Logger::Setup();
194 { 190 {
195 Optional<Logger> x, y; 191 Optional<Logger> x, y;
196 x = y; 192 x = y;
197 } 193 }
198 EXPECT_EQ( 194 EXPECT_EQ(V(), *log);
199 V("0:0. default constructor", "1:1. default constructor",
200 "0:1. operator= copy (from 1:1)", "1:1. destructor", "0:1. destructor"),
201 *log);
202 } 195 }
203 196
204 TEST(OptionalTest, TestCopyAssignToFullFromEmpty) { 197 TEST(OptionalTest, TestCopyAssignToFullFromEmpty) {
205 auto log = Logger::Setup(); 198 auto log = Logger::Setup();
206 { 199 {
207 Optional<Logger> x(Logger(17)); 200 Optional<Logger> x(Logger(17));
208 Optional<Logger> y; 201 Optional<Logger> y;
209 log->push_back("---"); 202 log->push_back("---");
210 x = y; 203 x = y;
211 log->push_back("---"); 204 log->push_back("---");
212 } 205 }
213 EXPECT_EQ( 206 EXPECT_EQ(
214 V("0:17. explicit constructor", "1:17. move constructor (from 0:17)", 207 V("0:17. explicit constructor", "1:17. move constructor (from 0:17)",
215 "0:17. destructor", "2:2. default constructor", "---", 208 "0:17. destructor", "---", "1:17. destructor", "---"),
216 "1:2. operator= copy (from 2:2)", "---", "2:2. destructor",
217 "1:2. destructor"),
218 *log); 209 *log);
219 } 210 }
220 211
221 TEST(OptionalTest, TestCopyAssignToEmptyFromFull) { 212 TEST(OptionalTest, TestCopyAssignToEmptyFromFull) {
222 auto log = Logger::Setup(); 213 auto log = Logger::Setup();
223 { 214 {
224 Optional<Logger> x; 215 Optional<Logger> x;
225 Optional<Logger> y(Logger(17)); 216 Optional<Logger> y(Logger(17));
226 log->push_back("---"); 217 log->push_back("---");
227 x = y; 218 x = y;
228 log->push_back("---"); 219 log->push_back("---");
229 } 220 }
230 EXPECT_EQ(V("0:0. default constructor", "1:17. explicit constructor", 221 EXPECT_EQ(
231 "2:17. move constructor (from 1:17)", "1:17. destructor", "---", 222 V("0:17. explicit constructor", "1:17. move constructor (from 0:17)",
232 "0:17. operator= copy (from 2:17)", "---", "2:17. destructor", 223 "0:17. destructor", "---", "2:17. copy constructor (from 1:17)", "---",
233 "0:17. destructor"), 224 "1:17. destructor", "2:17. destructor"),
234 *log); 225 *log);
235 } 226 }
236 227
237 TEST(OptionalTest, TestCopyAssignToFullFromFull) { 228 TEST(OptionalTest, TestCopyAssignToFullFromFull) {
238 auto log = Logger::Setup(); 229 auto log = Logger::Setup();
239 { 230 {
240 Optional<Logger> x(Logger(17)); 231 Optional<Logger> x(Logger(17));
241 Optional<Logger> y(Logger(42)); 232 Optional<Logger> y(Logger(42));
242 log->push_back("---"); 233 log->push_back("---");
243 x = y; 234 x = y;
244 log->push_back("---"); 235 log->push_back("---");
245 } 236 }
246 EXPECT_EQ( 237 EXPECT_EQ(
247 V("0:17. explicit constructor", "1:17. move constructor (from 0:17)", 238 V("0:17. explicit constructor", "1:17. move constructor (from 0:17)",
248 "0:17. destructor", "2:42. explicit constructor", 239 "0:17. destructor", "2:42. explicit constructor",
249 "3:42. move constructor (from 2:42)", "2:42. destructor", "---", 240 "3:42. move constructor (from 2:42)", "2:42. destructor", "---",
250 "1:42. operator= copy (from 3:42)", "---", "3:42. destructor", 241 "1:42. operator= copy (from 3:42)", "---", "3:42. destructor",
251 "1:42. destructor"), 242 "1:42. destructor"),
252 *log); 243 *log);
253 } 244 }
254 245
255 TEST(OptionalTest, TestCopyAssignToEmptyFromT) { 246 TEST(OptionalTest, TestCopyAssignToEmptyFromT) {
256 auto log = Logger::Setup(); 247 auto log = Logger::Setup();
257 { 248 {
258 Optional<Logger> x; 249 Optional<Logger> x;
259 Logger y(17); 250 Logger y(17);
260 log->push_back("---"); 251 log->push_back("---");
261 x = Optional<Logger>(y); 252 x = Optional<Logger>(y);
262 log->push_back("---"); 253 log->push_back("---");
263 } 254 }
264 EXPECT_EQ(V("0:0. default constructor", "1:17. explicit constructor", "---", 255 EXPECT_EQ(V("0:17. explicit constructor", "---",
265 "2:17. copy constructor (from 1:17)", 256 "1:17. copy constructor (from 0:17)",
266 "0:17. operator= move (from 2:17)", "2:17. destructor", "---", 257 "2:17. move constructor (from 1:17)", "1:17. destructor", "---",
267 "1:17. destructor", "0:17. destructor"), 258 "0:17. destructor", "2:17. destructor"),
268 *log); 259 *log);
269 } 260 }
270 261
271 TEST(OptionalTest, TestCopyAssignToFullFromT) { 262 TEST(OptionalTest, TestCopyAssignToFullFromT) {
272 auto log = Logger::Setup(); 263 auto log = Logger::Setup();
273 { 264 {
274 Optional<Logger> x(Logger(17)); 265 Optional<Logger> x(Logger(17));
275 Logger y(42); 266 Logger y(42);
276 log->push_back("---"); 267 log->push_back("---");
277 x = Optional<Logger>(y); 268 x = Optional<Logger>(y);
278 log->push_back("---"); 269 log->push_back("---");
279 } 270 }
280 EXPECT_EQ( 271 EXPECT_EQ(
281 V("0:17. explicit constructor", "1:17. move constructor (from 0:17)", 272 V("0:17. explicit constructor", "1:17. move constructor (from 0:17)",
282 "0:17. destructor", "2:42. explicit constructor", "---", 273 "0:17. destructor", "2:42. explicit constructor", "---",
283 "3:42. copy constructor (from 2:42)", 274 "3:42. copy constructor (from 2:42)",
284 "1:42. operator= move (from 3:42)", "3:42. destructor", "---", 275 "1:42. operator= move (from 3:42)", "3:42. destructor", "---",
285 "2:42. destructor", "1:42. destructor"), 276 "2:42. destructor", "1:42. destructor"),
286 *log); 277 *log);
287 } 278 }
288 279
289 TEST(OptionalTest, TestMoveAssignToEmptyFromEmpty) { 280 TEST(OptionalTest, TestMoveAssignToEmptyFromEmpty) {
290 auto log = Logger::Setup(); 281 auto log = Logger::Setup();
291 { 282 {
292 Optional<Logger> x, y; 283 Optional<Logger> x, y;
293 x = std::move(y); 284 x = std::move(y);
294 } 285 }
295 EXPECT_EQ( 286 EXPECT_EQ(V(), *log);
296 V("0:0. default constructor", "1:1. default constructor",
297 "0:1. operator= move (from 1:1)", "1:1. destructor", "0:1. destructor"),
298 *log);
299 } 287 }
300 288
301 TEST(OptionalTest, TestMoveAssignToFullFromEmpty) { 289 TEST(OptionalTest, TestMoveAssignToFullFromEmpty) {
302 auto log = Logger::Setup(); 290 auto log = Logger::Setup();
303 { 291 {
304 Optional<Logger> x(Logger(17)); 292 Optional<Logger> x(Logger(17));
305 Optional<Logger> y; 293 Optional<Logger> y;
306 log->push_back("---"); 294 log->push_back("---");
307 x = std::move(y); 295 x = std::move(y);
308 log->push_back("---"); 296 log->push_back("---");
309 } 297 }
310 EXPECT_EQ( 298 EXPECT_EQ(
311 V("0:17. explicit constructor", "1:17. move constructor (from 0:17)", 299 V("0:17. explicit constructor", "1:17. move constructor (from 0:17)",
312 "0:17. destructor", "2:2. default constructor", "---", 300 "0:17. destructor", "---", "1:17. destructor", "---"),
313 "1:2. operator= move (from 2:2)", "---", "2:2. destructor",
314 "1:2. destructor"),
315 *log); 301 *log);
316 } 302 }
317 303
318 TEST(OptionalTest, TestMoveAssignToEmptyFromFull) { 304 TEST(OptionalTest, TestMoveAssignToEmptyFromFull) {
319 auto log = Logger::Setup(); 305 auto log = Logger::Setup();
320 { 306 {
321 Optional<Logger> x; 307 Optional<Logger> x;
322 Optional<Logger> y(Logger(17)); 308 Optional<Logger> y(Logger(17));
323 log->push_back("---"); 309 log->push_back("---");
324 x = std::move(y); 310 x = std::move(y);
325 log->push_back("---"); 311 log->push_back("---");
326 } 312 }
327 EXPECT_EQ(V("0:0. default constructor", "1:17. explicit constructor", 313 EXPECT_EQ(
328 "2:17. move constructor (from 1:17)", "1:17. destructor", "---", 314 V("0:17. explicit constructor", "1:17. move constructor (from 0:17)",
329 "0:17. operator= move (from 2:17)", "---", "2:17. destructor", 315 "0:17. destructor", "---", "2:17. move constructor (from 1:17)", "---",
330 "0:17. destructor"), 316 "1:17. destructor", "2:17. destructor"),
331 *log); 317 *log);
332 } 318 }
333 319
334 TEST(OptionalTest, TestMoveAssignToFullFromFull) { 320 TEST(OptionalTest, TestMoveAssignToFullFromFull) {
335 auto log = Logger::Setup(); 321 auto log = Logger::Setup();
336 { 322 {
337 Optional<Logger> x(Logger(17)); 323 Optional<Logger> x(Logger(17));
338 Optional<Logger> y(Logger(42)); 324 Optional<Logger> y(Logger(42));
339 log->push_back("---"); 325 log->push_back("---");
340 x = std::move(y); 326 x = std::move(y);
341 log->push_back("---"); 327 log->push_back("---");
342 } 328 }
343 EXPECT_EQ( 329 EXPECT_EQ(
344 V("0:17. explicit constructor", "1:17. move constructor (from 0:17)", 330 V("0:17. explicit constructor", "1:17. move constructor (from 0:17)",
345 "0:17. destructor", "2:42. explicit constructor", 331 "0:17. destructor", "2:42. explicit constructor",
346 "3:42. move constructor (from 2:42)", "2:42. destructor", "---", 332 "3:42. move constructor (from 2:42)", "2:42. destructor", "---",
347 "1:42. operator= move (from 3:42)", "---", "3:42. destructor", 333 "1:42. operator= move (from 3:42)", "---", "3:42. destructor",
348 "1:42. destructor"), 334 "1:42. destructor"),
349 *log); 335 *log);
350 } 336 }
351 337
352 TEST(OptionalTest, TestMoveAssignToEmptyFromT) { 338 TEST(OptionalTest, TestMoveAssignToEmptyFromT) {
353 auto log = Logger::Setup(); 339 auto log = Logger::Setup();
354 { 340 {
355 Optional<Logger> x; 341 Optional<Logger> x;
356 Logger y(17); 342 Logger y(17);
357 log->push_back("---"); 343 log->push_back("---");
358 x = Optional<Logger>(std::move(y)); 344 x = Optional<Logger>(std::move(y));
359 log->push_back("---"); 345 log->push_back("---");
360 } 346 }
361 EXPECT_EQ(V("0:0. default constructor", "1:17. explicit constructor", "---", 347 EXPECT_EQ(V("0:17. explicit constructor", "---",
362 "2:17. move constructor (from 1:17)", 348 "1:17. move constructor (from 0:17)",
363 "0:17. operator= move (from 2:17)", "2:17. destructor", "---", 349 "2:17. move constructor (from 1:17)", "1:17. destructor", "---",
364 "1:17. destructor", "0:17. destructor"), 350 "0:17. destructor", "2:17. destructor"),
365 *log); 351 *log);
366 } 352 }
367 353
368 TEST(OptionalTest, TestMoveAssignToFullFromT) { 354 TEST(OptionalTest, TestMoveAssignToFullFromT) {
369 auto log = Logger::Setup(); 355 auto log = Logger::Setup();
370 { 356 {
371 Optional<Logger> x(Logger(17)); 357 Optional<Logger> x(Logger(17));
372 Logger y(42); 358 Logger y(42);
373 log->push_back("---"); 359 log->push_back("---");
374 x = Optional<Logger>(std::move(y)); 360 x = Optional<Logger>(std::move(y));
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
419 log->push_back("-2-"); 405 log->push_back("-2-");
420 EXPECT_EQ(b, y.value_or(Logger(42))); 406 EXPECT_EQ(b, y.value_or(Logger(42)));
421 log->push_back("-3-"); 407 log->push_back("-3-");
422 EXPECT_EQ(a, Optional<Logger>(Logger(17)).value_or(b)); 408 EXPECT_EQ(a, Optional<Logger>(Logger(17)).value_or(b));
423 log->push_back("-4-"); 409 log->push_back("-4-");
424 EXPECT_EQ(b, Optional<Logger>().value_or(b)); 410 EXPECT_EQ(b, Optional<Logger>().value_or(b));
425 log->push_back("-5-"); 411 log->push_back("-5-");
426 } 412 }
427 EXPECT_EQ( 413 EXPECT_EQ(
428 V("0:17. explicit constructor", "1:42. explicit constructor", 414 V("0:17. explicit constructor", "1:42. explicit constructor",
429 "2:17. copy constructor (from 0:17)", "3:3. default constructor", "-1-", 415 "2:17. copy constructor (from 0:17)", "-1-",
430 "4:42. explicit constructor", "operator== 0:17, 2:17", 416 "3:42. explicit constructor", "operator== 0:17, 2:17",
431 "4:42. destructor", "-2-", "5:42. explicit constructor", 417 "3:42. destructor", "-2-", "4:42. explicit constructor",
432 "operator== 1:42, 5:42", "5:42. destructor", "-3-", 418 "operator== 1:42, 4:42", "4:42. destructor", "-3-",
433 "6:17. explicit constructor", "7:17. move constructor (from 6:17)", 419 "5:17. explicit constructor", "6:17. move constructor (from 5:17)",
434 "operator== 0:17, 7:17", "7:17. destructor", "6:17. destructor", "-4-", 420 "operator== 0:17, 6:17", "6:17. destructor", "5:17. destructor", "-4-",
435 "8:8. default constructor", "operator== 1:42, 1:42", "8:8. destructor", 421 "operator== 1:42, 1:42", "-5-", "2:17. destructor", "1:42. destructor",
436 "-5-", "3:3. destructor", "2:17. destructor", "1:42. destructor",
437 "0:17. destructor"), 422 "0:17. destructor"),
438 *log); 423 *log);
439 } 424 }
440 425
441 TEST(OptionalTest, TestEquality) { 426 TEST(OptionalTest, TestEquality) {
442 auto log = Logger::Setup(); 427 auto log = Logger::Setup();
443 { 428 {
444 Logger a(17), b(42); 429 Logger a(17), b(42);
445 Optional<Logger> ma1(a), ma2(a), mb(b), me1, me2; 430 Optional<Logger> ma1(a), ma2(a), mb(b), me1, me2;
446 log->push_back("---"); 431 log->push_back("---");
447 EXPECT_EQ(ma1, ma1); 432 EXPECT_EQ(ma1, ma1);
448 EXPECT_EQ(ma1, ma2); 433 EXPECT_EQ(ma1, ma2);
449 EXPECT_NE(ma1, mb); 434 EXPECT_NE(ma1, mb);
450 EXPECT_NE(ma1, me1); 435 EXPECT_NE(ma1, me1);
451 EXPECT_EQ(me1, me1); 436 EXPECT_EQ(me1, me1);
452 EXPECT_EQ(me1, me2); 437 EXPECT_EQ(me1, me2);
453 log->push_back("---"); 438 log->push_back("---");
454 } 439 }
455 EXPECT_EQ(V("0:17. explicit constructor", "1:42. explicit constructor", 440 EXPECT_EQ(
456 "2:17. copy constructor (from 0:17)", 441 V("0:17. explicit constructor", "1:42. explicit constructor",
457 "3:17. copy constructor (from 0:17)", 442 "2:17. copy constructor (from 0:17)",
458 "4:42. copy constructor (from 1:42)", "5:5. default constructor", 443 "3:17. copy constructor (from 0:17)",
459 "6:6. default constructor", "---", "operator== 2:17, 2:17", 444 "4:42. copy constructor (from 1:42)", "---", "operator== 2:17, 2:17",
460 "operator== 2:17, 3:17", "operator!= 2:17, 4:42", "---", 445 "operator== 2:17, 3:17", "operator!= 2:17, 4:42", "---",
461 "6:6. destructor", "5:5. destructor", "4:42. destructor", 446 "4:42. destructor", "3:17. destructor", "2:17. destructor",
462 "3:17. destructor", "2:17. destructor", "1:42. destructor", 447 "1:42. destructor", "0:17. destructor"),
463 "0:17. destructor"), 448 *log);
464 *log);
465 } 449 }
466 450
467 TEST(OptionalTest, TestSwap) { 451 TEST(OptionalTest, TestSwap) {
468 auto log = Logger::Setup(); 452 auto log = Logger::Setup();
469 { 453 {
470 Logger a(17), b(42); 454 Logger a(17), b(42);
471 Optional<Logger> x1(a), x2(b), y1(a), y2, z1, z2; 455 Optional<Logger> x1(a), x2(b), y1(a), y2, z1, z2;
472 log->push_back("---"); 456 log->push_back("---");
473 swap(x1, x2); // Swap full <-> full. 457 swap(x1, x2); // Swap full <-> full.
474 swap(y1, y2); // Swap full <-> empty. 458 swap(y1, y2); // Swap full <-> empty.
475 swap(z1, z2); // Swap empty <-> empty. 459 swap(z1, z2); // Swap empty <-> empty.
476 log->push_back("---"); 460 log->push_back("---");
477 } 461 }
478 EXPECT_EQ(V("0:17. explicit constructor", "1:42. explicit constructor", 462 EXPECT_EQ(V("0:17. explicit constructor", "1:42. explicit constructor",
479 "2:17. copy constructor (from 0:17)", 463 "2:17. copy constructor (from 0:17)",
480 "3:42. copy constructor (from 1:42)", 464 "3:42. copy constructor (from 1:42)",
481 "4:17. copy constructor (from 0:17)", "5:5. default constructor", 465 "4:17. copy constructor (from 0:17)", "---", "swap 2:42, 3:17",
482 "6:6. default constructor", "7:7. default constructor", "---", 466 "5:17. move constructor (from 4:17)", "4:17. destructor", "---",
483 "swap 2:42, 3:17", "swap 4:5, 5:17", "swap 6:7, 7:6", "---", 467 "5:17. destructor", "3:17. destructor", "2:42. destructor",
484 "7:6. destructor", "6:7. destructor", "5:17. destructor",
485 "4:5. destructor", "3:17. destructor", "2:42. destructor",
486 "1:42. destructor", "0:17. destructor"), 468 "1:42. destructor", "0:17. destructor"),
487 *log); 469 *log);
488 } 470 }
489 471
490 } // namespace rtc 472 } // namespace rtc
OLDNEW
« no previous file with comments | « webrtc/base/optional.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698