| /* |
| * 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 "SkDiscardableMemoryPool.h" |
| |
| #include "Test.h" |
| |
| 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()); |
| } |