public void CopyToTest()
{
var dict = new LRUCacheDictionary<string, string>
{
["key1"] = "value1",
["key2"] = "value2",
["key3"] = "value3",
};
var array = new KeyValuePair<string, string>[5];
dict.CopyTo(array, 0);
Assert.Equal(new KeyValuePair<string, string>("key1", "value1"), array[0]);
Assert.Equal(new KeyValuePair<string, string>("key2", "value2"), array[1]);
Assert.Equal(new KeyValuePair<string, string>("key3", "value3"), array[2]);
Assert.Equal(new KeyValuePair<string, string>(), array[3]);
Assert.Equal(new KeyValuePair<string, string>(), array[4]);
array = new KeyValuePair<string, string>[5];
dict.CopyTo(array, 1);
Assert.Equal(new KeyValuePair<string, string>(), array[0]);
Assert.Equal(new KeyValuePair<string, string>("key1", "value1"), array[1]);
Assert.Equal(new KeyValuePair<string, string>("key2", "value2"), array[2]);
Assert.Equal(new KeyValuePair<string, string>("key3", "value3"), array[3]);
Assert.Equal(new KeyValuePair<string, string>(), array[4]);
array = new KeyValuePair<string, string>[5];
Assert.Throws<ArgumentException>(() => dict.CopyTo(array, 3));
Assert.Throws<ArgumentException>(() => dict.CopyTo(array, 5));
Assert.Throws<ArgumentOutOfRangeException>(() => dict.CopyTo(array, -1));
Assert.Throws<ArgumentNullException>(() => dict.CopyTo(null, 0));
}