blob: dc928d4c508f6e2773ef1aee74c9e1603eb00d61 [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/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