From 3632f8473a7842b6f1351694d9b4071a66529224 Mon Sep 17 00:00:00 2001 From: bsalomon Date: Tue, 10 Feb 2015 19:46:58 -0800 Subject: Add tests for STArray swap Review URL: https://codereview.chromium.org/909583003 --- tests/TArrayTest.cpp | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) (limited to 'tests/TArrayTest.cpp') diff --git a/tests/TArrayTest.cpp b/tests/TArrayTest.cpp index b85efcac07..8c1e8e4532 100644 --- a/tests/TArrayTest.cpp +++ b/tests/TArrayTest.cpp @@ -58,7 +58,61 @@ static void TestTSet_basic(skiatest::Reporter* reporter) { // {0, 3, 2 } } +namespace { +SkTArray* make() { + typedef SkTArray IntArray; + return SkNEW(IntArray); +} + +template SkTArray* make_s() { + typedef SkSTArray IntArray; + return SkNEW(IntArray); +} +} + +static void test_swap(skiatest::Reporter* reporter) { + typedef SkTArray* (*ArrayMaker)(); + ArrayMaker arrayMakers[] = {make, make_s<5>, make_s<10>, make_s<20>}; + static int kSizes[] = {0, 1, 5, 10, 15, 20, 25}; + for (size_t arrayA = 0; arrayA < SK_ARRAY_COUNT(arrayMakers); ++arrayA) { + for (size_t arrayB = arrayA; arrayB < SK_ARRAY_COUNT(arrayMakers); ++arrayB) { + for (size_t dataSizeA = 0; dataSizeA < SK_ARRAY_COUNT(kSizes); ++dataSizeA) { + for (size_t dataSizeB = 0; dataSizeB < SK_ARRAY_COUNT(kSizes); ++dataSizeB) { + int curr = 0; + SkTArray* a = arrayMakers[arrayA](); + SkTArray* b = arrayMakers[arrayB](); + for (int i = 0; i < kSizes[dataSizeA]; ++i) { + a->push_back(curr++); + } + for (int i = 0; i < kSizes[dataSizeB]; ++i) { + b->push_back(curr++); + } + a->swap(b); + REPORTER_ASSERT(reporter, kSizes[dataSizeA] == b->count()); + REPORTER_ASSERT(reporter, kSizes[dataSizeB] == a->count()); + curr = 0; + for (int i = 0; i < kSizes[dataSizeA]; ++i) { + REPORTER_ASSERT(reporter, curr++ == (*b)[i]); + } + for (int i = 0; i < kSizes[dataSizeB]; ++i) { + REPORTER_ASSERT(reporter, curr++ == (*a)[i]); + } + SkDELETE(b); + + a->swap(a); + curr = kSizes[dataSizeA]; + for (int i = 0; i < kSizes[dataSizeB]; ++i) { + REPORTER_ASSERT(reporter, curr++ == (*a)[i]); + } + SkDELETE(a); + } + } + } + } +} + DEF_TEST(TArray, reporter) { TestTSet_basic(reporter); TestTSet_basic(reporter); + test_swap(reporter); } -- cgit v1.2.3