195ebd17cf4f66952862289882ee5ac00da31cb8abungeman@google.com/* 295ebd17cf4f66952862289882ee5ac00da31cb8abungeman@google.com * Copyright 2014 Google Inc. 395ebd17cf4f66952862289882ee5ac00da31cb8abungeman@google.com * 495ebd17cf4f66952862289882ee5ac00da31cb8abungeman@google.com * Use of this source code is governed by a BSD-style license that can be 595ebd17cf4f66952862289882ee5ac00da31cb8abungeman@google.com * found in the LICENSE file. 695ebd17cf4f66952862289882ee5ac00da31cb8abungeman@google.com */ 795ebd17cf4f66952862289882ee5ac00da31cb8abungeman@google.com 895ebd17cf4f66952862289882ee5ac00da31cb8abungeman@google.com#include "SkTArray.h" 995ebd17cf4f66952862289882ee5ac00da31cb8abungeman@google.com#include "Test.h" 1095ebd17cf4f66952862289882ee5ac00da31cb8abungeman@google.com 1195ebd17cf4f66952862289882ee5ac00da31cb8abungeman@google.com// Tests the SkTArray<T> class template. 1295ebd17cf4f66952862289882ee5ac00da31cb8abungeman@google.com 1395ebd17cf4f66952862289882ee5ac00da31cb8abungeman@google.comtemplate <bool MEM_COPY> 1495ebd17cf4f66952862289882ee5ac00da31cb8abungeman@google.comstatic void TestTSet_basic(skiatest::Reporter* reporter) { 1595ebd17cf4f66952862289882ee5ac00da31cb8abungeman@google.com SkTArray<int, MEM_COPY> a; 1695ebd17cf4f66952862289882ee5ac00da31cb8abungeman@google.com 1795ebd17cf4f66952862289882ee5ac00da31cb8abungeman@google.com // Starts empty. 1895ebd17cf4f66952862289882ee5ac00da31cb8abungeman@google.com REPORTER_ASSERT(reporter, a.empty()); 1995ebd17cf4f66952862289882ee5ac00da31cb8abungeman@google.com REPORTER_ASSERT(reporter, a.count() == 0); 2095ebd17cf4f66952862289882ee5ac00da31cb8abungeman@google.com 2195ebd17cf4f66952862289882ee5ac00da31cb8abungeman@google.com // { }, add a default constructed element 2234ce63ca6b853724c152a116e1467c0eead87003bungeman@google.com a.push_back() = 0; 2395ebd17cf4f66952862289882ee5ac00da31cb8abungeman@google.com REPORTER_ASSERT(reporter, !a.empty()); 2495ebd17cf4f66952862289882ee5ac00da31cb8abungeman@google.com REPORTER_ASSERT(reporter, a.count() == 1); 2595ebd17cf4f66952862289882ee5ac00da31cb8abungeman@google.com 2695ebd17cf4f66952862289882ee5ac00da31cb8abungeman@google.com // { 0 }, removeShuffle the only element. 2795ebd17cf4f66952862289882ee5ac00da31cb8abungeman@google.com a.removeShuffle(0); 2895ebd17cf4f66952862289882ee5ac00da31cb8abungeman@google.com REPORTER_ASSERT(reporter, a.empty()); 2995ebd17cf4f66952862289882ee5ac00da31cb8abungeman@google.com REPORTER_ASSERT(reporter, a.count() == 0); 3095ebd17cf4f66952862289882ee5ac00da31cb8abungeman@google.com 3195ebd17cf4f66952862289882ee5ac00da31cb8abungeman@google.com // { }, add a default, add a 1, remove first 3234ce63ca6b853724c152a116e1467c0eead87003bungeman@google.com a.push_back() = 0; 3395ebd17cf4f66952862289882ee5ac00da31cb8abungeman@google.com REPORTER_ASSERT(reporter, a.push_back() = 1); 3495ebd17cf4f66952862289882ee5ac00da31cb8abungeman@google.com a.removeShuffle(0); 3595ebd17cf4f66952862289882ee5ac00da31cb8abungeman@google.com REPORTER_ASSERT(reporter, !a.empty()); 3695ebd17cf4f66952862289882ee5ac00da31cb8abungeman@google.com REPORTER_ASSERT(reporter, a.count() == 1); 3795ebd17cf4f66952862289882ee5ac00da31cb8abungeman@google.com REPORTER_ASSERT(reporter, a[0] == 1); 3895ebd17cf4f66952862289882ee5ac00da31cb8abungeman@google.com 3995ebd17cf4f66952862289882ee5ac00da31cb8abungeman@google.com // { 1 }, replace with new array 4095ebd17cf4f66952862289882ee5ac00da31cb8abungeman@google.com int b[5] = { 0, 1, 2, 3, 4 }; 4195ebd17cf4f66952862289882ee5ac00da31cb8abungeman@google.com a.reset(b, SK_ARRAY_COUNT(b)); 4295ebd17cf4f66952862289882ee5ac00da31cb8abungeman@google.com REPORTER_ASSERT(reporter, a.count() == SK_ARRAY_COUNT(b)); 4395ebd17cf4f66952862289882ee5ac00da31cb8abungeman@google.com REPORTER_ASSERT(reporter, a[2] == 2); 4495ebd17cf4f66952862289882ee5ac00da31cb8abungeman@google.com REPORTER_ASSERT(reporter, a[4] == 4); 4595ebd17cf4f66952862289882ee5ac00da31cb8abungeman@google.com 4695ebd17cf4f66952862289882ee5ac00da31cb8abungeman@google.com // { 0, 1, 2, 3, 4 }, removeShuffle the last 4795ebd17cf4f66952862289882ee5ac00da31cb8abungeman@google.com a.removeShuffle(4); 4895ebd17cf4f66952862289882ee5ac00da31cb8abungeman@google.com REPORTER_ASSERT(reporter, a.count() == SK_ARRAY_COUNT(b) - 1); 4995ebd17cf4f66952862289882ee5ac00da31cb8abungeman@google.com REPORTER_ASSERT(reporter, a[3] == 3); 5095ebd17cf4f66952862289882ee5ac00da31cb8abungeman@google.com 5195ebd17cf4f66952862289882ee5ac00da31cb8abungeman@google.com // { 0, 1, 2, 3 }, remove a middle, note shuffle 5295ebd17cf4f66952862289882ee5ac00da31cb8abungeman@google.com a.removeShuffle(1); 5395ebd17cf4f66952862289882ee5ac00da31cb8abungeman@google.com REPORTER_ASSERT(reporter, a.count() == SK_ARRAY_COUNT(b) - 2); 5495ebd17cf4f66952862289882ee5ac00da31cb8abungeman@google.com REPORTER_ASSERT(reporter, a[0] == 0); 5595ebd17cf4f66952862289882ee5ac00da31cb8abungeman@google.com REPORTER_ASSERT(reporter, a[1] == 3); 5695ebd17cf4f66952862289882ee5ac00da31cb8abungeman@google.com REPORTER_ASSERT(reporter, a[2] == 2); 5795ebd17cf4f66952862289882ee5ac00da31cb8abungeman@google.com 5895ebd17cf4f66952862289882ee5ac00da31cb8abungeman@google.com // {0, 3, 2 } 5995ebd17cf4f66952862289882ee5ac00da31cb8abungeman@google.com} 6095ebd17cf4f66952862289882ee5ac00da31cb8abungeman@google.com 6195ebd17cf4f66952862289882ee5ac00da31cb8abungeman@google.comDEF_TEST(TArray, reporter) { 6295ebd17cf4f66952862289882ee5ac00da31cb8abungeman@google.com TestTSet_basic<true>(reporter); 6395ebd17cf4f66952862289882ee5ac00da31cb8abungeman@google.com TestTSet_basic<false>(reporter); 6495ebd17cf4f66952862289882ee5ac00da31cb8abungeman@google.com} 65