|  | /* | 
|  | * 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()); | 
|  | } |