| Index: tests/TemplatesTest.cpp
|
| diff --git a/tests/TemplatesTest.cpp b/tests/TemplatesTest.cpp
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..31859f3f0cea620af3868ce26c93a01601be2b20
|
| --- /dev/null
|
| +++ b/tests/TemplatesTest.cpp
|
| @@ -0,0 +1,72 @@
|
| +/*
|
| + * 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);
|
| +}
|
|
|