diff options
author | Florin Malita <fmalita@chromium.org> | 2017-03-12 10:40:13 -0400 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-03-12 15:15:14 +0000 |
commit | d54639f768edad4989256bad5148cdd7b2bf2ecc (patch) | |
tree | 1192c5609b21c684a546ab22d7b142ee6b723c23 /tests/TArrayTest.cpp | |
parent | 9a4148f2eb51e729272e922795d363e5691ff16e (diff) |
Add SkSTArray move assignment operators
Change-Id: Ib655a8a4d62c27dee4f92fcb644237f6fbbdb75b
Reviewed-on: https://skia-review.googlesource.com/9510
Commit-Queue: Florin Malita <fmalita@chromium.org>
Reviewed-by: Ben Wagner <bungeman@google.com>
Diffstat (limited to 'tests/TArrayTest.cpp')
-rw-r--r-- | tests/TArrayTest.cpp | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/tests/TArrayTest.cpp b/tests/TArrayTest.cpp index ee6aabc63a..d1331b58a8 100644 --- a/tests/TArrayTest.cpp +++ b/tests/TArrayTest.cpp @@ -138,6 +138,87 @@ void test_copy_ctor(skiatest::Reporter* reporter, SkTArray<T, MEM_MOVE>&& array) REPORTER_ASSERT(reporter, ref->unique()); } +static void test_move(skiatest::Reporter* reporter) { +#define TEST_MOVE do { \ + SRC_T src; \ + src.emplace_back(sk_make_sp<SkRefCnt>()); \ + { \ + /* copy ctor */ \ + DST_T copy(src); \ + REPORTER_ASSERT(reporter, !copy[0]->unique()); \ + } \ + { \ + /* move ctor */ \ + DST_T move(std::move(src)); \ + REPORTER_ASSERT(reporter, move[0]->unique()); \ + } \ + REPORTER_ASSERT(reporter, src.empty()); \ + src.emplace_back(sk_make_sp<SkRefCnt>()); \ + { \ + /* copy assignment */ \ + DST_T copy; \ + copy = src; \ + REPORTER_ASSERT(reporter, !copy[0]->unique()); \ + } \ + { \ + /* move assignment */ \ + DST_T move; \ + move = std::move(src); \ + REPORTER_ASSERT(reporter, move[0]->unique()); \ + } \ + REPORTER_ASSERT(reporter, src.empty()); \ +} while (false) + + { + using SRC_T = SkTArray<sk_sp<SkRefCnt>, false>; + using DST_T = SkTArray<sk_sp<SkRefCnt>, false>; + TEST_MOVE; + } + + { + using SRC_T = SkTArray<sk_sp<SkRefCnt>, true>; + using DST_T = SkTArray<sk_sp<SkRefCnt>, true>; + TEST_MOVE; + } + + { + using SRC_T = SkSTArray<1, sk_sp<SkRefCnt>, false>; + using DST_T = SkSTArray<1, sk_sp<SkRefCnt>, false>; + TEST_MOVE; + } + + { + using SRC_T = SkSTArray<1, sk_sp<SkRefCnt>, true>; + using DST_T = SkSTArray<1, sk_sp<SkRefCnt>, true>; + TEST_MOVE; + } + + { + using SRC_T = SkTArray<sk_sp<SkRefCnt>, false>; + using DST_T = SkSTArray<1, sk_sp<SkRefCnt>, false>; + TEST_MOVE; + } + + { + using SRC_T = SkTArray<sk_sp<SkRefCnt>, true>; + using DST_T = SkSTArray<1, sk_sp<SkRefCnt>, true>; + TEST_MOVE; + } + + { + using SRC_T = SkSTArray<1, sk_sp<SkRefCnt>, false>; + using DST_T = SkTArray<sk_sp<SkRefCnt>, false>; + TEST_MOVE; + } + + { + using SRC_T = SkSTArray<1, sk_sp<SkRefCnt>, true>; + using DST_T = SkTArray<sk_sp<SkRefCnt>, true>; + TEST_MOVE; + } +#undef TEST_MOVE +} + DEF_TEST(TArray, reporter) { TestTSet_basic<true>(reporter); TestTSet_basic<false>(reporter); @@ -149,4 +230,6 @@ DEF_TEST(TArray, reporter) { test_copy_ctor(reporter, SkSTArray< 1, sk_sp<SkRefCnt>, true>()); test_copy_ctor(reporter, SkSTArray<10, sk_sp<SkRefCnt>, false>()); test_copy_ctor(reporter, SkSTArray<10, sk_sp<SkRefCnt>, true>()); + + test_move(reporter); } |