/* * Copyright 2015 Google Inc. * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #include "SkTemplates.h" #include "Test.h" // Tests for some of the helpers in SkTemplates.h static void test_automalloc_realloc(skiatest::Reporter* reporter) { SkAutoSTMalloc<1, int> array; // test we have a valid pointer, should not crash array[0] = 1; REPORTER_ASSERT(reporter, array[0] == 1); // using realloc for init array.realloc(1); array[0] = 1; REPORTER_ASSERT(reporter, array[0] == 1); // verify realloc can grow array.realloc(2); REPORTER_ASSERT(reporter, array[0] == 1); // realloc can shrink array.realloc(1); REPORTER_ASSERT(reporter, array[0] == 1); // should not crash array.realloc(0); // grow and shrink again array.realloc(10); for (int i = 0; i < 10; i++) { array[i] = 10 - i; } array.realloc(20); for (int i = 0; i < 10; i++) { REPORTER_ASSERT(reporter, array[i] == 10 - i); } array.realloc(10); for (int i = 0; i < 10; i++) { REPORTER_ASSERT(reporter, array[i] == 10 - i); } array.realloc(1); REPORTER_ASSERT(reporter, array[0] = 10); // resets mixed with realloc, below stack alloc size array.reset(0); array.realloc(1); array.reset(1); array[0] = 1; REPORTER_ASSERT(reporter, array[0] == 1); // reset and realloc > stack size array.reset(2); array.realloc(3); array[0] = 1; REPORTER_ASSERT(reporter, array[0] == 1); array.realloc(1); REPORTER_ASSERT(reporter, array[0] == 1); } DEF_TEST(Templates, reporter) { test_automalloc_realloc(reporter); }