1 /* 2 * Copyright 2013 Google Inc. 3 * 4 * Use of this source code is governed by a BSD-style license that can be 5 * found in the LICENSE file. 6 */ 7 #include "SkDiscardableMemoryPool.h" 8 9 #include "Test.h" 10 11 DEF_TEST(DiscardableMemoryPool, reporter) { 12 SkAutoTUnref<SkDiscardableMemoryPool> pool( 13 SkDiscardableMemoryPool::Create(1, nullptr)); 14 pool->setRAMBudget(3); 15 REPORTER_ASSERT(reporter, 0 == pool->getRAMUsed()); 16 17 SkAutoTDelete<SkDiscardableMemory> dm1(pool->create(100)); 18 REPORTER_ASSERT(reporter, dm1->data() != nullptr); 19 REPORTER_ASSERT(reporter, 100 == pool->getRAMUsed()); 20 dm1->unlock(); 21 REPORTER_ASSERT(reporter, 0 == pool->getRAMUsed()); 22 REPORTER_ASSERT(reporter, !dm1->lock()); 23 24 25 SkAutoTDelete<SkDiscardableMemory> dm2(pool->create(200)); 26 REPORTER_ASSERT(reporter, 200 == pool->getRAMUsed()); 27 pool->setRAMBudget(400); 28 dm2->unlock(); 29 REPORTER_ASSERT(reporter, 200 == pool->getRAMUsed()); 30 REPORTER_ASSERT(reporter, dm2->lock()); 31 dm2->unlock(); 32 pool->dumpPool(); 33 REPORTER_ASSERT(reporter, !dm2->lock()); 34 REPORTER_ASSERT(reporter, 0 == pool->getRAMUsed()); 35 } 36