1cb93a386Sopenharmony_ci/* 2cb93a386Sopenharmony_ci * Copyright 2020 Google Inc. 3cb93a386Sopenharmony_ci * 4cb93a386Sopenharmony_ci * Use of this source code is governed by a BSD-style license that can be 5cb93a386Sopenharmony_ci * found in the LICENSE file. 6cb93a386Sopenharmony_ci */ 7cb93a386Sopenharmony_ci 8cb93a386Sopenharmony_ci#include "src/core/SkStrikeCache.h" 9cb93a386Sopenharmony_ci#include "src/core/SkStrikeSpec.h" 10cb93a386Sopenharmony_ci#include "tests/Test.h" 11cb93a386Sopenharmony_ci#include "tools/ToolUtils.h" 12cb93a386Sopenharmony_ci 13cb93a386Sopenharmony_ciDEF_TEST(SkStrikeCache_CachePurge, Reporter) { 14cb93a386Sopenharmony_ci SkStrikeCache cache; 15cb93a386Sopenharmony_ci 16cb93a386Sopenharmony_ci sk_sp<SkTypeface> typeface = 17cb93a386Sopenharmony_ci ToolUtils::create_portable_typeface("serif", SkFontStyle::Italic()); 18cb93a386Sopenharmony_ci 19cb93a386Sopenharmony_ci SkFont font; 20cb93a386Sopenharmony_ci font.setEdging(SkFont::Edging::kAntiAlias); 21cb93a386Sopenharmony_ci font.setSubpixel(true); 22cb93a386Sopenharmony_ci font.setTypeface(typeface); 23cb93a386Sopenharmony_ci 24cb93a386Sopenharmony_ci SkPaint defaultPaint; 25cb93a386Sopenharmony_ci SkStrikeSpec strikeSpec = SkStrikeSpec::MakeMask( 26cb93a386Sopenharmony_ci font, defaultPaint, SkSurfaceProps(0, kUnknown_SkPixelGeometry), 27cb93a386Sopenharmony_ci SkScalerContextFlags::kNone, SkMatrix::I()); 28cb93a386Sopenharmony_ci 29cb93a386Sopenharmony_ci // Initially empty cache 30cb93a386Sopenharmony_ci REPORTER_ASSERT(Reporter, cache.getTotalMemoryUsed() == 0); 31cb93a386Sopenharmony_ci 32cb93a386Sopenharmony_ci { 33cb93a386Sopenharmony_ci sk_sp<SkStrike> strike = strikeSpec.findOrCreateStrike(&cache); 34cb93a386Sopenharmony_ci } 35cb93a386Sopenharmony_ci 36cb93a386Sopenharmony_ci // Stuff in cache. 37cb93a386Sopenharmony_ci REPORTER_ASSERT(Reporter, cache.getTotalMemoryUsed() > 0); 38cb93a386Sopenharmony_ci 39cb93a386Sopenharmony_ci cache.purgeAll(); 40cb93a386Sopenharmony_ci 41cb93a386Sopenharmony_ci // Purged cache. 42cb93a386Sopenharmony_ci REPORTER_ASSERT(Reporter, cache.getTotalMemoryUsed() == 0); 43cb93a386Sopenharmony_ci 44cb93a386Sopenharmony_ci // Smallest cache. 45cb93a386Sopenharmony_ci cache.setCacheSizeLimit(0); 46cb93a386Sopenharmony_ci { 47cb93a386Sopenharmony_ci sk_sp<SkStrike> strike = strikeSpec.findOrCreateStrike(&cache); 48cb93a386Sopenharmony_ci REPORTER_ASSERT(Reporter, cache.getTotalMemoryUsed() == 0); 49cb93a386Sopenharmony_ci } 50cb93a386Sopenharmony_ci REPORTER_ASSERT(Reporter, cache.getTotalMemoryUsed() == 0); 51cb93a386Sopenharmony_ci 52cb93a386Sopenharmony_ci 53cb93a386Sopenharmony_ci} 54