| Index: tests/PixelRefTest.cpp
|
| diff --git a/tests/PixelRefTest.cpp b/tests/PixelRefTest.cpp
|
| index e13d0e07e5476804ced4dfeccf8748c02e578339..8a6e8e3997571566edda20a0a778e3355ad813b2 100644
|
| --- a/tests/PixelRefTest.cpp
|
| +++ b/tests/PixelRefTest.cpp
|
| @@ -1,8 +1,63 @@
|
| +/*
|
| + * 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 "Test.h"
|
|
|
| #include "SkMallocPixelRef.h"
|
| #include "SkPixelRef.h"
|
|
|
| +static void decrement_counter_proc(void* pixels, void* ctx) {
|
| + int* counter = (int*)ctx;
|
| + *counter -= 1;
|
| +}
|
| +
|
| +static void test_dont_leak_install(skiatest::Reporter* reporter) {
|
| + bool success;
|
| + int release_counter;
|
| + SkImageInfo info;
|
| + SkBitmap bm;
|
| +
|
| + info = SkImageInfo::MakeN32Premul(0, 0);
|
| + release_counter = 1;
|
| + success = bm.installPixels(info, NULL, 0, NULL, decrement_counter_proc, &release_counter);
|
| + REPORTER_ASSERT(reporter, true == success);
|
| + bm.reset();
|
| + REPORTER_ASSERT(reporter, 0 == release_counter);
|
| +
|
| + info = SkImageInfo::MakeN32Premul(10, 10);
|
| + release_counter = 1;
|
| + success = bm.installPixels(info, NULL, 0, NULL, decrement_counter_proc, &release_counter);
|
| + REPORTER_ASSERT(reporter, true == success);
|
| + bm.reset();
|
| + REPORTER_ASSERT(reporter, 0 == release_counter);
|
| +
|
| + info = SkImageInfo::MakeN32Premul(-10, -10);
|
| + release_counter = 1;
|
| + success = bm.installPixels(info, NULL, 0, NULL, decrement_counter_proc, &release_counter);
|
| + REPORTER_ASSERT(reporter, false == success);
|
| + bm.reset();
|
| + REPORTER_ASSERT(reporter, 0 == release_counter);
|
| +}
|
| +
|
| +static void test_install(skiatest::Reporter* reporter) {
|
| + bool success;
|
| + SkImageInfo info = SkImageInfo::MakeN32Premul(0, 0);
|
| + SkBitmap bm;
|
| + // make sure we don't assert on an empty install
|
| + success = bm.installPixels(info, NULL, 0);
|
| + REPORTER_ASSERT(reporter, success);
|
| +
|
| + // no pixels should be the same as setInfo()
|
| + info = SkImageInfo::MakeN32Premul(10, 10);
|
| + success = bm.installPixels(info, NULL, 0);
|
| + REPORTER_ASSERT(reporter, success);
|
| +
|
| +}
|
| +
|
| class TestListener : public SkPixelRef::GenIDChangeListener {
|
| public:
|
| explicit TestListener(int* ptr) : fPtr(ptr) {}
|
| @@ -43,4 +98,7 @@ DEF_TEST(PixelRef_GenIDChange, r) {
|
| REPORTER_ASSERT(r, 0 != pixelRef->getGenerationID());
|
| pixelRef->addGenIDChangeListener(NULL);
|
| pixelRef->notifyPixelsChanged();
|
| +
|
| + test_install(r);
|
| + test_dont_leak_install(r);
|
| }
|
|
|