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

Side by Side Diff: third_party/WebKit/Source/wtf/FunctionalTest.cpp

Issue 2386843002: reflow comments in wtf (Closed)
Patch Set: comments (heh!) Created 4 years, 2 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 /* 1 /*
2 * Copyright (C) 2011 Apple Inc. All rights reserved. 2 * Copyright (C) 2011 Apple Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 1. Redistributions of source code must retain the above copyright 7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright 9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
(...skipping 460 matching lines...) Expand 10 before | Expand all | Expand 10 after
471 int tripleMoveOnlysByValues(MoveOnly first, MoveOnly second, MoveOnly third) { 471 int tripleMoveOnlysByValues(MoveOnly first, MoveOnly second, MoveOnly third) {
472 return first.value() + second.value() + third.value(); 472 return first.value() + second.value() + third.value();
473 } 473 }
474 474
475 TEST(FunctionalTest, BindMoveOnlyObjects) { 475 TEST(FunctionalTest, BindMoveOnlyObjects) {
476 MoveOnly one(1); 476 MoveOnly one(1);
477 std::unique_ptr<Function<int()>> bound = 477 std::unique_ptr<Function<int()>> bound =
478 bind(singleMoveOnlyByRvalueReference, passed(std::move(one))); 478 bind(singleMoveOnlyByRvalueReference, passed(std::move(one)));
479 EXPECT_EQ(0, one.value()); // Should be moved away. 479 EXPECT_EQ(0, one.value()); // Should be moved away.
480 EXPECT_EQ(1, (*bound)()); 480 EXPECT_EQ(1, (*bound)());
481 EXPECT_EQ( 481 // The stored value must be cleared in the first function call.
482 0, 482 EXPECT_EQ(0, (*bound)());
483 (*bound)()); // The stored value must be cleared in the first function ca ll.
484 483
485 bound = bind(singleMoveOnlyByValue, passed(MoveOnly(1))); 484 bound = bind(singleMoveOnlyByValue, passed(MoveOnly(1)));
486 EXPECT_EQ(1, (*bound)()); 485 EXPECT_EQ(1, (*bound)());
487 EXPECT_EQ(0, (*bound)()); 486 EXPECT_EQ(0, (*bound)());
488 487
489 bound = bind(tripleMoveOnlysByRvalueReferences, passed(MoveOnly(1)), 488 bound = bind(tripleMoveOnlysByRvalueReferences, passed(MoveOnly(1)),
490 passed(MoveOnly(2)), passed(MoveOnly(3))); 489 passed(MoveOnly(2)), passed(MoveOnly(3)));
491 EXPECT_EQ(6, (*bound)()); 490 EXPECT_EQ(6, (*bound)());
492 EXPECT_EQ(0, (*bound)()); 491 EXPECT_EQ(0, (*bound)());
493 492
(...skipping 29 matching lines...) Expand all
523 TEST(FunctionalTest, CountCopiesOfBoundArguments) { 522 TEST(FunctionalTest, CountCopiesOfBoundArguments) {
524 CountCopy lvalue; 523 CountCopy lvalue;
525 std::unique_ptr<Function<int()>> bound = 524 std::unique_ptr<Function<int()>> bound =
526 bind(takeCountCopyAsConstReference, lvalue); 525 bind(takeCountCopyAsConstReference, lvalue);
527 EXPECT_EQ(2, (*bound)()); // wrapping and unwrapping. 526 EXPECT_EQ(2, (*bound)()); // wrapping and unwrapping.
528 527
529 bound = bind(takeCountCopyAsConstReference, CountCopy()); // Rvalue. 528 bound = bind(takeCountCopyAsConstReference, CountCopy()); // Rvalue.
530 EXPECT_EQ(2, (*bound)()); 529 EXPECT_EQ(2, (*bound)());
531 530
532 bound = bind(takeCountCopyAsValue, lvalue); 531 bound = bind(takeCountCopyAsValue, lvalue);
533 EXPECT_EQ( 532 // wrapping, unwrapping and copying in the final function argument.
534 3, 533 EXPECT_EQ(3, (*bound)());
535 (*bound)()); // wrapping, unwrapping and copying in the final function ar gument.
536 534
537 bound = bind(takeCountCopyAsValue, CountCopy()); 535 bound = bind(takeCountCopyAsValue, CountCopy());
538 EXPECT_EQ(3, (*bound)()); 536 EXPECT_EQ(3, (*bound)());
539 } 537 }
540 538
541 TEST(FunctionalTest, MoveUnboundArgumentsByRvalueReference) { 539 TEST(FunctionalTest, MoveUnboundArgumentsByRvalueReference) {
542 std::unique_ptr<Function<int(MoveOnly &&)>> boundSingle = 540 std::unique_ptr<Function<int(MoveOnly &&)>> boundSingle =
543 bind(singleMoveOnlyByRvalueReference); 541 bind(singleMoveOnlyByRvalueReference);
544 EXPECT_EQ(1, (*boundSingle)(MoveOnly(1))); 542 EXPECT_EQ(1, (*boundSingle)(MoveOnly(1)));
545 EXPECT_EQ(42, (*boundSingle)(MoveOnly(42))); 543 EXPECT_EQ(42, (*boundSingle)(MoveOnly(42)));
(...skipping 13 matching lines...) Expand all
559 } 557 }
560 558
561 TEST(FunctionalTest, CountCopiesOfUnboundArguments) { 559 TEST(FunctionalTest, CountCopiesOfUnboundArguments) {
562 CountCopy lvalue; 560 CountCopy lvalue;
563 std::unique_ptr<Function<int(const CountCopy&)>> bound1 = 561 std::unique_ptr<Function<int(const CountCopy&)>> bound1 =
564 bind(takeCountCopyAsConstReference); 562 bind(takeCountCopyAsConstReference);
565 EXPECT_EQ(0, (*bound1)(lvalue)); // No copies! 563 EXPECT_EQ(0, (*bound1)(lvalue)); // No copies!
566 EXPECT_EQ(0, (*bound1)(CountCopy())); 564 EXPECT_EQ(0, (*bound1)(CountCopy()));
567 565
568 std::unique_ptr<Function<int(CountCopy)>> bound2 = bind(takeCountCopyAsValue); 566 std::unique_ptr<Function<int(CountCopy)>> bound2 = bind(takeCountCopyAsValue);
569 EXPECT_EQ( 567 // At Function::operator(), at Callback::Run() and at the destination
570 3, 568 // function.
571 (*bound2)( 569 EXPECT_EQ(3, (*bound2)(lvalue));
572 lvalue)); // At Function::operator(), at Callback::Run() and at the d estination function. 570 // Compiler is allowed to optimize one copy away if the argument is rvalue.
573 EXPECT_LE( 571 EXPECT_LE((*bound2)(CountCopy()), 2);
574 (*bound2)(CountCopy()),
575 2); // Compiler is allowed to optimize one copy away if the argument is r value.
576 } 572 }
577 573
578 TEST(FunctionalTest, WeakPtr) { 574 TEST(FunctionalTest, WeakPtr) {
579 HasWeakPtrSupport obj; 575 HasWeakPtrSupport obj;
580 int counter = 0; 576 int counter = 0;
581 std::unique_ptr<WTF::Closure> bound = 577 std::unique_ptr<WTF::Closure> bound =
582 WTF::bind(&HasWeakPtrSupport::increment, obj.createWeakPtr(), 578 WTF::bind(&HasWeakPtrSupport::increment, obj.createWeakPtr(),
583 WTF::unretained(&counter)); 579 WTF::unretained(&counter));
584 580
585 (*bound)(); 581 (*bound)();
586 EXPECT_FALSE(bound->isCancelled()); 582 EXPECT_FALSE(bound->isCancelled());
587 EXPECT_EQ(1, counter); 583 EXPECT_EQ(1, counter);
588 584
589 obj.revokeAll(); 585 obj.revokeAll();
590 EXPECT_TRUE(bound->isCancelled()); 586 EXPECT_TRUE(bound->isCancelled());
591 (*bound)(); 587 (*bound)();
592 EXPECT_EQ(1, counter); 588 EXPECT_EQ(1, counter);
593 } 589 }
594 590
595 } // anonymous namespace 591 } // anonymous namespace
596 592
597 } // namespace WTF 593 } // namespace WTF
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/wtf/Functional.h ('k') | third_party/WebKit/Source/wtf/HashFunctions.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698