| // 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/common/resource_cache_limit_calculator.h" | |
| #include "gtest/gtest.h" | |
| namespace flutter { | |
| namespace testing { | |
| class TestResourceCacheLimitItem : public ResourceCacheLimitItem { | |
| public: | |
| explicit TestResourceCacheLimitItem(size_t resource_cache_limit) | |
| : resource_cache_limit_(resource_cache_limit), weak_factory_(this) {} | |
| size_t GetResourceCacheLimit() override { return resource_cache_limit_; } | |
| fml::WeakPtr<TestResourceCacheLimitItem> GetWeakPtr() { | |
| return weak_factory_.GetWeakPtr(); | |
| } | |
| private: | |
| size_t resource_cache_limit_; | |
| fml::WeakPtrFactory<TestResourceCacheLimitItem> weak_factory_; | |
| }; | |
| TEST(ResourceCacheLimitCalculatorTest, GetResourceCacheMaxBytes) { | |
| ResourceCacheLimitCalculator calculator(800U); | |
| auto item1 = std::make_unique<TestResourceCacheLimitItem>(100.0); | |
| calculator.AddResourceCacheLimitItem(item1->GetWeakPtr()); | |
| EXPECT_EQ(calculator.GetResourceCacheMaxBytes(), static_cast<size_t>(100U)); | |
| auto item2 = std::make_unique<TestResourceCacheLimitItem>(200.0); | |
| calculator.AddResourceCacheLimitItem(item2->GetWeakPtr()); | |
| EXPECT_EQ(calculator.GetResourceCacheMaxBytes(), static_cast<size_t>(300U)); | |
| auto item3 = std::make_unique<TestResourceCacheLimitItem>(300.0); | |
| calculator.AddResourceCacheLimitItem(item3->GetWeakPtr()); | |
| EXPECT_EQ(calculator.GetResourceCacheMaxBytes(), static_cast<size_t>(600U)); | |
| auto item4 = std::make_unique<TestResourceCacheLimitItem>(400.0); | |
| calculator.AddResourceCacheLimitItem(item4->GetWeakPtr()); | |
| EXPECT_EQ(calculator.GetResourceCacheMaxBytes(), static_cast<size_t>(800U)); | |
| item3.reset(); | |
| EXPECT_EQ(calculator.GetResourceCacheMaxBytes(), static_cast<size_t>(700U)); | |
| item2.reset(); | |
| EXPECT_EQ(calculator.GetResourceCacheMaxBytes(), static_cast<size_t>(500U)); | |
| } | |
| } // namespace testing | |
| } // namespace flutter |