public void AutoTrimTest()
{
var dict = new LRUCacheDictionary<string, string>();
dict.AutoTrimCount = 4; // 4アクセス毎に
dict.TrimLimit = 3; // 3個を越えるアイテムを削除する
dict["key1"] = "value1"; // 1アクセス目
dict["key2"] = "value2"; // 2アクセス目
dict["key3"] = "value3"; // 3アクセス目
dict["key4"] = "value4"; // 4アクセス目 (この直後にTrim)
// 1 -> 2 -> 3 -> 4 の順にアクセスしたため、直近 3 件の 2, 3, 4 だけが残る
Assert.Equal<IEnumerable<string>>(new[] { "key2", "key3", "key4" }, dict.innerDict.Keys, collComparer);
dict["key5"] = "value5"; // 5アクセス目
dict.Add("key6", "value6"); // 6アクセス目
var x = dict["key2"]; // 7アクセス目
dict.TryGetValue("key4", out x); // 8アクセス目 (この直後にTrim)
// 5 -> 6 -> 2 -> 4 の順でアクセスしたため、直近 3 件の 6, 2, 4 だけが残る
Assert.Equal<IEnumerable<string>>(new[] { "key6", "key2", "key4" }, dict.innerDict.Keys, collComparer);
}