aboutsummaryrefslogtreecommitdiffhomepage
path: root/tests/TArrayTest.cpp
diff options
context:
space:
mode:
authorGravatar Florin Malita <fmalita@chromium.org>2017-03-12 10:40:13 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-03-12 15:15:14 +0000
commitd54639f768edad4989256bad5148cdd7b2bf2ecc (patch)
tree1192c5609b21c684a546ab22d7b142ee6b723c23 /tests/TArrayTest.cpp
parent9a4148f2eb51e729272e922795d363e5691ff16e (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.cpp83
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);
}