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