From 3a6672ae0c95f24f873dca21424e060df9f9c3e5 Mon Sep 17 00:00:00 2001 From: halcanary Date: Fri, 13 Feb 2015 15:12:52 -0800 Subject: [PATCH] C++11 Unit Test for RValue semantics. Motivation: test that these works on all possible bots and for all possible clients (clients do run these unit tests, right?) Dear clients: if this unit test fails, let us know! BUG=skia:3427 Review URL: https://codereview.chromium.org/922043004 --- gyp/tests.gypi | 1 + tests/CPlusPlusEleven.cpp | 26 ++++++++++++++++++++++++++ 2 files changed, 27 insertions(+) create mode 100644 tests/CPlusPlusEleven.cpp diff --git a/gyp/tests.gypi b/gyp/tests.gypi index 625fa866f0..ace89718c8 100644 --- a/gyp/tests.gypi +++ b/gyp/tests.gypi @@ -74,6 +74,7 @@ '../tests/ColorFilterTest.cpp', '../tests/ColorPrivTest.cpp', '../tests/ColorTest.cpp', + '../tests/CPlusPlusEleven.cpp', '../tests/DashPathEffectTest.cpp', '../tests/DataRefTest.cpp', '../tests/DeferredCanvasTest.cpp', diff --git a/tests/CPlusPlusEleven.cpp b/tests/CPlusPlusEleven.cpp new file mode 100644 index 0000000000..41821126ad --- /dev/null +++ b/tests/CPlusPlusEleven.cpp @@ -0,0 +1,26 @@ +/* + * Copyright 2015 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ +#include "Test.h" + +namespace { +template T&& Move(T& o) { return static_cast(o); } + +class Moveable { +public: + Moveable() {} + Moveable(Moveable&&) {} + Moveable& operator=(Moveable&&) { return *this; } +private: + Moveable(const Moveable&); + Moveable& operator=(const Moveable&); +}; +} // namespace + +DEF_TEST(CPlusPlusEleven_RvalueAndMove, r) { + Moveable src1; Moveable dst1(Move(src1)); + Moveable src2, dst2; dst2 = Move(src2); +}