blob: d97edfdffc5f756e7a2aaca2bbfd1f88244bdf67 [file] [log] [blame]
// 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