DiscardableMemoryPoolTest.cpp 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738
  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 "include/core/SkRefCnt.h"
  8. #include "src/core/SkDiscardableMemory.h"
  9. #include "src/lazy/SkDiscardableMemoryPool.h"
  10. #include "tests/Test.h"
  11. #include <memory>
  12. DEF_TEST(DiscardableMemoryPool, reporter) {
  13. sk_sp<SkDiscardableMemoryPool> pool(SkDiscardableMemoryPool::Make(1));
  14. pool->setRAMBudget(3);
  15. REPORTER_ASSERT(reporter, 0 == pool->getRAMUsed());
  16. std::unique_ptr<SkDiscardableMemory> dm1(pool->create(100));
  17. REPORTER_ASSERT(reporter, dm1->data() != nullptr);
  18. REPORTER_ASSERT(reporter, 100 == pool->getRAMUsed());
  19. dm1->unlock();
  20. REPORTER_ASSERT(reporter, 0 == pool->getRAMUsed());
  21. REPORTER_ASSERT(reporter, !dm1->lock());
  22. std::unique_ptr<SkDiscardableMemory> dm2(pool->create(200));
  23. REPORTER_ASSERT(reporter, 200 == pool->getRAMUsed());
  24. pool->setRAMBudget(400);
  25. dm2->unlock();
  26. REPORTER_ASSERT(reporter, 200 == pool->getRAMUsed());
  27. REPORTER_ASSERT(reporter, dm2->lock());
  28. dm2->unlock();
  29. pool->dumpPool();
  30. REPORTER_ASSERT(reporter, !dm2->lock());
  31. REPORTER_ASSERT(reporter, 0 == pool->getRAMUsed());
  32. }