📄 orderedmultidictionarytests.cs
字号:
InterfaceTests.TestEnumerableElements(dict1["fOo"], new double[] { -9, 1.2, 4, 8, 9.8 });
InterfaceTests.TestEnumerableElements<KeyValuePair<string, double>>
(dict1.KeyValuePairs, new KeyValuePair<string, double>[] {
new KeyValuePair<string,double>("FOO", -9),
new KeyValuePair<string,double>("foo", 1.2),
new KeyValuePair<string,double>("foo", 4),
new KeyValuePair<string,double>("FOO",8),
new KeyValuePair<string,double>("foo",9.8)
});
// Test with duplicate values
dict1 = new OrderedMultiDictionary<string, double>(true, StringComparer.InvariantCultureIgnoreCase);
dict1.AddMany("foo", AlgorithmsTests.EnumerableFromArray(new double[] { 9.8, 1.2, -9, 9.8, -9, 4 }));
dict1.AddMany("hi", new double[0]);
dict1.AddMany("a", new double[] { 2, 1, 2 });
dict1.AddMany("FOO", AlgorithmsTests.EnumerableFromArray(new double[] { 8, -9 }));
Assert.AreEqual(2, dict1.Count);
Assert.IsTrue(dict1.ContainsKey("foo"));
Assert.IsFalse(dict1.ContainsKey("hi"));
InterfaceTests.TestEnumerableElements(dict1.Keys, new string[] { "a", "foo"});
InterfaceTests.TestEnumerableElements(dict1["fOo"], new double[] { -9, -9, -9, 1.2, 4, 8, 9.8, 9.8 });
InterfaceTests.TestEnumerableElements<KeyValuePair<string, double>>
(dict1.KeyValuePairs, new KeyValuePair<string, double>[] {
new KeyValuePair<string,double>("a", 1),
new KeyValuePair<string,double>("a", 2),
new KeyValuePair<string,double>("a", 2),
new KeyValuePair<string,double>("foo", -9),
new KeyValuePair<string,double>("foo", -9),
new KeyValuePair<string,double>("FOO", -9),
new KeyValuePair<string,double>("foo", 1.2),
new KeyValuePair<string,double>("foo", 4),
new KeyValuePair<string,double>("FOO",8),
new KeyValuePair<string,double>("foo",9.8),
new KeyValuePair<string,double>("foo",9.8)
});
}
[Test]
public void Replace()
{
OrderedMultiDictionary<string, int> dict1 = new OrderedMultiDictionary<string, int>(true);
dict1.Add("foo", 4);
dict1.Add("bar", 7);
dict1.Add("foo", 6);
dict1.Add("z", 3);
dict1.Add("bar", 8);
dict1.Add("z", 3);
dict1.Add("foo", 1);
dict1.Replace("foo", 13);
dict1.Replace("z", 19);
dict1.Replace("hello", 193);
dict1.Replace("foo", 123);
dict1.Add("foo", 123);
CheckOrderedMultiDictionaryContents(dict1,
new string[] { "bar", "foo", "hello", "z" },
new int[][] { new int[] { 7, 8 }, new int[] { 123, 123 }, new int[] {193}, new int[] { 19 } },
"sailor", 19921, null, null);
}
[Test]
public void ReplaceMany()
{
OrderedMultiDictionary<string, int> dict1 = new OrderedMultiDictionary<string, int>(false);
dict1.Add("foo", 4);
dict1.Add("bar", 7);
dict1.Add("foo", 6);
dict1.Add("z", 3);
dict1.Add("bar", 8);
dict1.Add("z", 3);
dict1.Add("foo", 1);
dict1.Add("bill", 9);
dict1.ReplaceMany("bill", new int[0]);
dict1.ReplaceMany("foo", new int[] { 13, 4 });
dict1.ReplaceMany("z", new int[] { 19 });
dict1.ReplaceMany("hello", new int[] { 193, -11, 193 });
dict1.ReplaceMany("goodbye", new int[0]);
dict1.ReplaceMany("foo", new int[] { 123, 0, 4 });
dict1.Add("foo", 29);
CheckOrderedMultiDictionaryContents(dict1,
new string[] { "bar", "foo", "hello", "z" },
new int[][] { new int[] { 7, 8 }, new int[] { 0, 4, 29, 123 }, new int[] { -11, 193 }, new int[] { 19 } },
"sailor", 19921, null, null);
}
[Test]
public void RemoveKey()
{
OrderedMultiDictionary<string, int> dict1 = new OrderedMultiDictionary<string, int>(true);
dict1.Add("foo", 4);
dict1.Add("bar", 7);
dict1.Add("foo", 6);
dict1.Add("z", 3);
dict1.Add("bar", 8);
dict1.Add("z", 10);
dict1.Add("z", 3);
dict1.Add("foo", 4);
dict1.Add("bill", 9);
Assert.IsTrue(dict1.ContainsKey("bill"));
Assert.IsTrue(dict1.ContainsKey("foo"));
Assert.IsTrue(dict1.ContainsKey("z"));
Assert.IsTrue(dict1.Remove("bill"));
Assert.IsFalse(dict1.Remove("bill"));
Assert.IsFalse(dict1.Remove("smell"));
Assert.IsTrue(dict1.Remove("foo"));
CheckOrderedMultiDictionaryContents(dict1,
new string[] { "bar", "z" },
new int[][] { new int[] { 7, 8 }, new int[] { 3, 3, 10 }},
"sailor", 19921, null, null);
}
[Test]
public void RemoveManyKeys()
{
OrderedMultiDictionary<string, int> dict1 = new OrderedMultiDictionary<string, int>(true);
dict1.Add("foo", 4);
dict1.Add("bar", 7);
dict1.Add("foo", 6);
dict1.Add("z", 3);
dict1.Add("bar", 8);
dict1.Add("z", 10);
dict1.Add("z", 3);
dict1.Add("foo", 4);
dict1.Add("bill", 9);
Assert.IsTrue(dict1.ContainsKey("bill"));
Assert.IsTrue(dict1.ContainsKey("foo"));
Assert.IsTrue(dict1.ContainsKey("z"));
Assert.AreEqual(2, dict1.RemoveMany(new string[] { "bill", "smell", "foo", "bill" }));
CheckOrderedMultiDictionaryContents(dict1,
new string[] { "bar", "z" },
new int[][] { new int[] { 7, 8 }, new int[] { 3, 3, 10 } },
"sailor", 19921, null, null);
}
[Test]
public void Remove()
{
OrderedMultiDictionary<string, int> dict1 = new OrderedMultiDictionary<string, int>(true);
dict1.Add("foo", 4);
dict1.Add("bar", 7);
dict1.Add("foo", 6);
dict1.Add("z", 3);
dict1.Add("bar", 8);
dict1.Add("z", 10);
dict1.Add("z", 3);
dict1.Add("foo", 4);
dict1.Add("bill", 9);
dict1.Add("foo", 4);
Assert.IsTrue(dict1.Remove("foo", 4));
Assert.IsTrue(dict1.Remove("foo", 4));
Assert.IsTrue(dict1.Remove("z", 10));
Assert.IsFalse(dict1.Remove("z", 10));
Assert.IsFalse(dict1.Remove("foo", 11));
Assert.IsFalse(dict1.Remove(null, 0));
Assert.IsTrue(dict1.Remove("bill", 9));
CheckOrderedMultiDictionaryContents(dict1,
new string[] { "bar", "foo", "z" },
new int[][] { new int[] { 7, 8 }, new int[] { 4, 6 }, new int[] { 3, 3 } },
"sailor", 19921, null, null);
}
[Test]
public void RemoveMany1()
{
OrderedMultiDictionary<string, int> dict1 = new OrderedMultiDictionary<string, int>(true);
dict1.Add("bill", 7);
dict1.Add("foo", 4);
dict1.Add("bar", 7);
dict1.Add("foo", 6);
dict1.Add("z", 3);
dict1.Add("bar", 8);
dict1.Add("z", 10);
dict1.Add("z", 3);
dict1.Add("foo", 4);
dict1.Add("bill", 9);
dict1.Add("foo", 4);
Assert.AreEqual(2, dict1.RemoveMany("foo", new int[] { 4, 11, 4 }));
Assert.AreEqual(1, dict1.RemoveMany("z", new int[] { 9, 2, 10 }));
Assert.AreEqual(0, dict1.RemoveMany("z", new int[] { 10, 16, 144, 10 }));
Assert.AreEqual(0, dict1.RemoveMany("foo", new int[0]));
Assert.AreEqual(0, dict1.RemoveMany(null, new int[2] { 1, 2 }));
Assert.AreEqual(2, dict1.RemoveMany("bill", new int[] { 9, 7 }));
CheckOrderedMultiDictionaryContents(dict1,
new string[] { "bar", "foo", "z" },
new int[][] { new int[] { 7, 8 }, new int[] { 4, 6 }, new int[] { 3, 3 } },
"sailor", 19921, null, null);
}
[Test]
public void Clear()
{
OrderedMultiDictionary<string, int> dict1 = new OrderedMultiDictionary<string, int>(true);
dict1.Add("foo", 4);
dict1.Add("bill", 7);
dict1.Add("foo", 4);
dict1.Add("bar", 7);
dict1.Add("foo", 6);
dict1.Add("z", 3);
dict1.Add("bar", 8);
dict1.Add("z", 10);
dict1.Add(null, 3);
dict1.Add("foo", 4);
dict1.Add("bill", 9);
dict1.Add("foo", 4);
dict1.Clear();
Assert.AreEqual(0, dict1.Count);
Assert.IsFalse(dict1.ContainsKey("foo"));
Assert.IsFalse(dict1.ContainsKey("z"));
Assert.IsFalse(dict1.ContainsKey(null));
Assert.AreEqual(0, Algorithms.Count(dict1.Keys));
Assert.AreEqual(0, Algorithms.Count(dict1.Values));
Assert.AreEqual(0, Algorithms.Count(dict1.KeyValuePairs));
CheckOrderedMultiDictionaryContents(dict1, new string[0], new int[0][], "foo", 4, null, null);
}
[Test]
public void Count()
{
OrderedMultiDictionary<string, int> dict1 = new OrderedMultiDictionary<string, int>(true);
dict1.Add("foo", 4);
dict1.Add(null, 7);
dict1.Add("bar", 11);
dict1.Add("foo", 7);
dict1.Add(null, 7);
dict1.Add("hello", 11);
dict1.Add("foo", 4);
Assert.AreEqual(4, dict1.Count);
OrderedMultiDictionary<string, int> dict2 = new OrderedMultiDictionary<string, int>(false);
dict2.Add("foo", 4);
dict2.Add(null, 7);
dict2.Add("bar", 11);
dict2.Add("foo", 7);
dict2.Add(null, 7);
dict2.Add("hello", 11);
dict2.Add("foo", 4);
Assert.AreEqual(4, dict2.Count);
dict2.Remove("foo");
Assert.AreEqual(3, dict2.Count);
dict2.Clear();
Assert.AreEqual(0, dict2.Count);
}
[Test]
public void ContainsKey()
{
OrderedMultiDictionary<string, int> dict1 = new OrderedMultiDictionary<string, int>(true);
dict1.Add("foo", 4);
dict1.Add(null, 7);
dict1.Add("bar", 11);
dict1.Add("foo", 7);
dict1.Add(null, 7);
dict1.Add("hello", 11);
dict1.Add("foo", 4);
Assert.IsTrue(dict1.ContainsKey(null));
Assert.IsTrue(dict1.ContainsKey("foo"));
Assert.IsTrue(dict1.ContainsKey("bar"));
Assert.IsTrue(dict1.ContainsKey("hello"));
dict1.Remove("hello", 11);
Assert.IsFalse(dict1.ContainsKey("hello"));
dict1.Remove(null, 7);
Assert.IsTrue(dict1.ContainsKey(null));
dict1.Remove(null, 7);
Assert.IsFalse(dict1.ContainsKey(null));
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -