| // Copyright 2013 The Flutter Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style license that can be | |
| // found in the LICENSE file. | |
| #include "flutter/shell/platform/android/image_lru.h" | |
| #include "gtest/gtest.h" | |
| namespace flutter { | |
| namespace testing { | |
| TEST(ImageLRU, CanStoreSingleImage) { | |
| auto image = DlImage::Make(nullptr); | |
| ImageLRU image_lru; | |
| EXPECT_EQ(image_lru.FindImage(1), nullptr); | |
| image_lru.AddImage(image, 1); | |
| EXPECT_EQ(image_lru.FindImage(1), image); | |
| } | |
| TEST(ImageLRU, EvictsLRU) { | |
| auto image = DlImage::Make(nullptr); | |
| ImageLRU image_lru; | |
| // Fill up the cache, nothing is removed | |
| for (auto i = 0u; i < kImageReaderSwapchainSize; i++) { | |
| EXPECT_EQ(image_lru.AddImage(image, i + 1), 0u); | |
| } | |
| // Confirm each image is in the cache. This should keep the LRU | |
| // order the same. | |
| for (auto i = 0u; i < kImageReaderSwapchainSize; i++) { | |
| EXPECT_EQ(image_lru.FindImage(i + 1), image); | |
| } | |
| // Insert new image and verify least recently used was removed. | |
| EXPECT_EQ(image_lru.AddImage(image, 100), 1u); | |
| } | |
| TEST(ImageLRU, CanClear) { | |
| auto image = DlImage::Make(nullptr); | |
| ImageLRU image_lru; | |
| // Fill up the cache, nothing is removed | |
| for (auto i = 0u; i < kImageReaderSwapchainSize; i++) { | |
| EXPECT_EQ(image_lru.AddImage(image, i + 1), 0u); | |
| } | |
| image_lru.Clear(); | |
| // Expect no cache entries. | |
| for (auto i = 0u; i < kImageReaderSwapchainSize; i++) { | |
| EXPECT_EQ(image_lru.FindImage(i + 1), nullptr); | |
| } | |
| } | |
| } // namespace testing | |
| } // namespace flutter |