12c7c7ee47d75e7815ea8db05e924ab55958cb402halcanary@google.com/* 22c7c7ee47d75e7815ea8db05e924ab55958cb402halcanary@google.com * Copyright 2013 Google Inc. 32c7c7ee47d75e7815ea8db05e924ab55958cb402halcanary@google.com * 42c7c7ee47d75e7815ea8db05e924ab55958cb402halcanary@google.com * Use of this source code is governed by a BSD-style license that can be 52c7c7ee47d75e7815ea8db05e924ab55958cb402halcanary@google.com * found in the LICENSE file. 62c7c7ee47d75e7815ea8db05e924ab55958cb402halcanary@google.com */ 72c7c7ee47d75e7815ea8db05e924ab55958cb402halcanary@google.com#include "SkDiscardableMemoryPool.h" 82c7c7ee47d75e7815ea8db05e924ab55958cb402halcanary@google.com 92c7c7ee47d75e7815ea8db05e924ab55958cb402halcanary@google.com#include "Test.h" 102c7c7ee47d75e7815ea8db05e924ab55958cb402halcanary@google.com 112c7c7ee47d75e7815ea8db05e924ab55958cb402halcanary@google.comDEF_TEST(DiscardableMemoryPool, reporter) { 122c7c7ee47d75e7815ea8db05e924ab55958cb402halcanary@google.com SkAutoTUnref<SkDiscardableMemoryPool> pool( 13cf2f00872c559c892bb4b466bf678c7667490ccecommit-bot@chromium.org SkDiscardableMemoryPool::Create(1, NULL)); 142c7c7ee47d75e7815ea8db05e924ab55958cb402halcanary@google.com pool->setRAMBudget(3); 152c7c7ee47d75e7815ea8db05e924ab55958cb402halcanary@google.com REPORTER_ASSERT(reporter, 0 == pool->getRAMUsed()); 162c7c7ee47d75e7815ea8db05e924ab55958cb402halcanary@google.com 172c7c7ee47d75e7815ea8db05e924ab55958cb402halcanary@google.com SkAutoTDelete<SkDiscardableMemory> dm1(pool->create(100)); 182c7c7ee47d75e7815ea8db05e924ab55958cb402halcanary@google.com REPORTER_ASSERT(reporter, dm1->data() != NULL); 192c7c7ee47d75e7815ea8db05e924ab55958cb402halcanary@google.com REPORTER_ASSERT(reporter, 100 == pool->getRAMUsed()); 202c7c7ee47d75e7815ea8db05e924ab55958cb402halcanary@google.com dm1->unlock(); 212c7c7ee47d75e7815ea8db05e924ab55958cb402halcanary@google.com REPORTER_ASSERT(reporter, 0 == pool->getRAMUsed()); 222c7c7ee47d75e7815ea8db05e924ab55958cb402halcanary@google.com REPORTER_ASSERT(reporter, !dm1->lock()); 232c7c7ee47d75e7815ea8db05e924ab55958cb402halcanary@google.com 242c7c7ee47d75e7815ea8db05e924ab55958cb402halcanary@google.com 252c7c7ee47d75e7815ea8db05e924ab55958cb402halcanary@google.com SkAutoTDelete<SkDiscardableMemory> dm2(pool->create(200)); 262c7c7ee47d75e7815ea8db05e924ab55958cb402halcanary@google.com REPORTER_ASSERT(reporter, 200 == pool->getRAMUsed()); 272c7c7ee47d75e7815ea8db05e924ab55958cb402halcanary@google.com pool->setRAMBudget(400); 282c7c7ee47d75e7815ea8db05e924ab55958cb402halcanary@google.com dm2->unlock(); 292c7c7ee47d75e7815ea8db05e924ab55958cb402halcanary@google.com REPORTER_ASSERT(reporter, 200 == pool->getRAMUsed()); 302c7c7ee47d75e7815ea8db05e924ab55958cb402halcanary@google.com REPORTER_ASSERT(reporter, dm2->lock()); 312c7c7ee47d75e7815ea8db05e924ab55958cb402halcanary@google.com dm2->unlock(); 322c7c7ee47d75e7815ea8db05e924ab55958cb402halcanary@google.com pool->dumpPool(); 332c7c7ee47d75e7815ea8db05e924ab55958cb402halcanary@google.com REPORTER_ASSERT(reporter, !dm2->lock()); 342c7c7ee47d75e7815ea8db05e924ab55958cb402halcanary@google.com REPORTER_ASSERT(reporter, 0 == pool->getRAMUsed()); 352c7c7ee47d75e7815ea8db05e924ab55958cb402halcanary@google.com} 36