diff options
author | John Firebaugh <john.firebaugh@gmail.com> | 2018-06-18 16:24:58 -0700 |
---|---|---|
committer | John Firebaugh <john.firebaugh@gmail.com> | 2018-06-18 16:24:58 -0700 |
commit | c94067d9ae30d59aed8a829c40afd10e4f791903 (patch) | |
tree | 747454812304786fb90b349e0a12afcd6393f8f5 /test/util/unique_any.test.cpp | |
parent | 0deb468646e848076622785962bc4a589c21f560 (diff) | |
download | qtlocation-mapboxgl-c94067d9ae30d59aed8a829c40afd10e4f791903.tar.gz |
[core] Fix stylistic issues in unique_anyupstream/unique_any_style
* Eliminate unnecessary temporary in VTableStack::move
* Make move consistent: it destructs the src, not the dest, which is always empty
* delete doesn't need a null guard
* Conversions to void* don't need a cast
Diffstat (limited to 'test/util/unique_any.test.cpp')
-rw-r--r-- | test/util/unique_any.test.cpp | 40 |
1 files changed, 36 insertions, 4 deletions
diff --git a/test/util/unique_any.test.cpp b/test/util/unique_any.test.cpp index 9357b9c0ec..9b622cd284 100644 --- a/test/util/unique_any.test.cpp +++ b/test/util/unique_any.test.cpp @@ -10,15 +10,14 @@ public: str[0] = 'a'; } - TestType(unique_any& p) : TestType() { - p = std::unique_ptr<TestType>(this); - } - //Detect moves TestType(TestType&& t): i1(t.i1+1), i2(t.i2+2) { str[0] = t.str[0]+1; } + TestType(const TestType&) = delete; + TestType& operator=(const TestType&) = delete; + int i1; int i2; char str[256]; @@ -88,6 +87,39 @@ TEST(UniqueAny, BasicTypes_Move) { } +TEST(UniqueAny, SmallType) { + struct T { + T(int32_t* p_) : p(p_) { + (*p)++; + } + + T(T&& t) noexcept : p(t.p) { + (*p)++; + } + + ~T() { + (*p)--; + } + + T(const T&) = delete; + T& operator=(const T&) = delete; + + int32_t* p; + }; + + int32_t p = 0; + + { + unique_any u1 = unique_any(T(&p)); + EXPECT_EQ(p, 1); + + auto u2(std::move(u1)); + EXPECT_EQ(p, 1); + } + + EXPECT_EQ(p, 0); +} + TEST(UniqueAny, LargeType) { TestType t1; unique_any u1 = unique_any(std::move(t1)); |