| /* |
| * Copyright 2013 Google Inc. |
| * |
| * Use of this source code is governed by a BSD-style license that can be |
| * found in the LICENSE file. |
| */ |
| |
| #include "include/core/SkRefCnt.h" |
| #include "include/private/chromium/SkDiscardableMemory.h" |
| #include "src/lazy/SkDiscardableMemoryPool.h" |
| #include "tests/Test.h" |
| |
| #include <memory> |
| |
| DEF_TEST(DiscardableMemoryPool, reporter) { |
| sk_sp<SkDiscardableMemoryPool> pool(SkDiscardableMemoryPool::Make(1)); |
| pool->setRAMBudget(3); |
| REPORTER_ASSERT(reporter, 0 == pool->getRAMUsed()); |
| |
| std::unique_ptr<SkDiscardableMemory> dm1(pool->create(100)); |
| REPORTER_ASSERT(reporter, dm1->data() != nullptr); |
| REPORTER_ASSERT(reporter, 100 == pool->getRAMUsed()); |
| dm1->unlock(); |
| REPORTER_ASSERT(reporter, 0 == pool->getRAMUsed()); |
| REPORTER_ASSERT(reporter, !dm1->lock()); |
| |
| |
| std::unique_ptr<SkDiscardableMemory> dm2(pool->create(200)); |
| REPORTER_ASSERT(reporter, 200 == pool->getRAMUsed()); |
| pool->setRAMBudget(400); |
| dm2->unlock(); |
| REPORTER_ASSERT(reporter, 200 == pool->getRAMUsed()); |
| REPORTER_ASSERT(reporter, dm2->lock()); |
| dm2->unlock(); |
| pool->dumpPool(); |
| REPORTER_ASSERT(reporter, !dm2->lock()); |
| REPORTER_ASSERT(reporter, 0 == pool->getRAMUsed()); |
| } |