| /* | 
 |  * Copyright 2020 Google Inc. | 
 |  * | 
 |  * Use of this source code is governed by a BSD-style license that can be | 
 |  * found in the LICENSE file. | 
 |  */ | 
 |  | 
 | #include "include/core/SkFont.h" | 
 | #include "include/core/SkFontStyle.h" | 
 | #include "include/core/SkMatrix.h" | 
 | #include "include/core/SkPaint.h" | 
 | #include "include/core/SkRefCnt.h" | 
 | #include "include/core/SkSurfaceProps.h" | 
 | #include "include/core/SkTypeface.h" | 
 | #include "src/core/SkScalerContext.h" | 
 | #include "src/core/SkStrike.h"  // IWYU pragma: keep | 
 | #include "src/core/SkStrikeCache.h" | 
 | #include "src/core/SkStrikeSpec.h" | 
 | #include "tests/Test.h" | 
 | #include "tools/ToolUtils.h" | 
 | #include "tools/fonts/FontToolUtils.h" | 
 |  | 
 | DEF_TEST(SkStrikeCache_CachePurge, Reporter) { | 
 |     SkStrikeCache cache; | 
 |  | 
 |     sk_sp<SkTypeface> typeface = | 
 |             ToolUtils::CreatePortableTypeface("serif", SkFontStyle::Italic()); | 
 |  | 
 |     SkFont font; | 
 |     font.setEdging(SkFont::Edging::kAntiAlias); | 
 |     font.setSubpixel(true); | 
 |     font.setTypeface(typeface); | 
 |  | 
 |     SkPaint defaultPaint; | 
 |     SkStrikeSpec strikeSpec = SkStrikeSpec::MakeMask( | 
 |             font, defaultPaint, SkSurfaceProps(0, kUnknown_SkPixelGeometry), | 
 |             SkScalerContextFlags::kNone, SkMatrix::I()); | 
 |  | 
 |     // Initially empty cache | 
 |     REPORTER_ASSERT(Reporter, cache.getTotalMemoryUsed() == 0); | 
 |  | 
 |     { | 
 |         sk_sp<SkStrike> strike = strikeSpec.findOrCreateStrike(&cache); | 
 |     } | 
 |  | 
 |     // Stuff in cache. | 
 |     REPORTER_ASSERT(Reporter, cache.getTotalMemoryUsed() > 0); | 
 |  | 
 |     cache.purgeAll(); | 
 |  | 
 |     // Purged cache. | 
 |     REPORTER_ASSERT(Reporter, cache.getTotalMemoryUsed() == 0); | 
 |  | 
 |     // Smallest cache. | 
 |     cache.setCacheSizeLimit(0); | 
 |     { | 
 |         sk_sp<SkStrike> strike = strikeSpec.findOrCreateStrike(&cache); | 
 |         REPORTER_ASSERT(Reporter, cache.getTotalMemoryUsed() == 0); | 
 |     } | 
 |     REPORTER_ASSERT(Reporter, cache.getTotalMemoryUsed() == 0); | 
 |  | 
 |  | 
 | } |