📄 orderedsettests.cs
字号:
b = set1.Add("Eric"); Assert.IsFalse(b);
b = set1.Add(null); Assert.IsFalse(b);
b = set1.Remove(null); Assert.IsTrue(b);
b = set1.Add("Eric"); Assert.IsTrue(b);
b = set1.Remove("eRic"); Assert.IsTrue(b);
b = set1.Remove("eRic"); Assert.IsFalse(b);
set1.Clear();
b = set1.Remove(""); Assert.IsFalse(b);
}
[Test]
public void TryGetItem()
{
OrderedSet<string> set1 = new OrderedSet<string>(StringComparer.InvariantCultureIgnoreCase);
bool b;
string s;
b = set1.TryGetItem("Eric", out s); Assert.IsFalse(b); Assert.IsNull(s);
b = set1.Add(null); Assert.IsFalse(b);
b = set1.Add("hello"); Assert.IsFalse(b);
b = set1.Add("foo"); Assert.IsFalse(b);
b = set1.Add(""); Assert.IsFalse(b);
b = set1.TryGetItem("HELLO", out s); Assert.IsTrue(b); Assert.AreEqual("hello", s);
b = set1.Remove("hello"); Assert.IsTrue(b);
b = set1.TryGetItem("HELLO", out s); Assert.IsFalse(b); Assert.IsNull(s);
b = set1.TryGetItem("foo", out s); Assert.IsTrue(b); Assert.AreEqual("foo", s);
b = set1.Add("Eric"); Assert.IsFalse(b);
b = set1.TryGetItem("eric", out s); Assert.IsTrue(b); Assert.AreEqual("Eric", s);
b = set1.TryGetItem(null, out s); Assert.IsTrue(b); Assert.IsNull(s);
set1.Clear();
b = set1.TryGetItem("foo", out s); Assert.IsFalse(b); Assert.IsNull(s);
}
[Test]
public void ToArray()
{
string[] s_array = { "Foo", "Eric", "Clapton", "hello", "goodbye", "C#" };
OrderedSet<string> set1 = new OrderedSet<string>();
string[] a1 = set1.ToArray();
Assert.IsNotNull(a1);
Assert.AreEqual(0, a1.Length);
foreach (string s in s_array)
set1.Add(s);
string[] a2 = set1.ToArray();
Array.Sort(s_array);
Assert.AreEqual(s_array.Length, a2.Length);
for (int i = 0; i < s_array.Length; ++i)
Assert.AreEqual(s_array[i], a2[i]);
}
[Test]
public void AddMany()
{
OrderedSet<string> set1 = new OrderedSet<string>(StringComparer.InvariantCultureIgnoreCase);
set1.Add("foo");
set1.Add("Eric");
set1.Add("Clapton");
string[] s_array = { "FOO", "x", "elmer", "fudd", "Clapton", null };
set1.AddMany(s_array);
InterfaceTests.TestReadWriteCollectionGeneric(set1, new string[] { null, "Clapton", "elmer", "Eric", "FOO", "fudd", "x" }, true, null);
}
[Test]
public void RemoveMany()
{
OrderedSet<string> set1 = new OrderedSet<string>(StringComparer.InvariantCultureIgnoreCase);
set1.Add("foo");
set1.Add("Eric");
set1.Add("Clapton");
set1.Add(null);
set1.Add("fudd");
set1.Add("elmer");
string[] s_array = { "FOO", "jasmine", "eric", null };
int count = set1.RemoveMany(s_array);
Assert.AreEqual(3, count);
InterfaceTests.TestReadWriteCollectionGeneric(set1, new string[] { "Clapton", "elmer", "fudd" }, true, null);
set1.Clear();
set1.Add("foo");
set1.Add("Eric");
set1.Add("Clapton");
set1.Add(null);
set1.Add("fudd");
count = set1.RemoveMany(set1);
Assert.AreEqual(5, count);
Assert.AreEqual(0, set1.Count);
}
[Test]
public void Exists()
{
OrderedSet<double> set1 = new OrderedSet<double>(new double[] { 4.5, 1.2, 7.6, -7.6, -0.04, 1.78, 10.11, 187.4 });
Assert.IsTrue(set1.Exists(delegate(double d) { return d > 100; }));
Assert.IsTrue(set1.Exists(delegate(double d) { return Math.Abs(d) == 0.04; }));
Assert.IsFalse(set1.Exists(delegate(double d) { return d < -10.0; }));
set1.Clear();
Assert.IsFalse(set1.Exists(delegate(double d) { return Math.Abs(d) == 0.04; }));
}
[Test]
public void TrueForAll()
{
OrderedSet<double> set1 = new OrderedSet<double>(new double[] { 4.5, 1.2, 7.6, -7.6, -0.04, 1.78, 10.11, 187.4 });
Assert.IsFalse(set1.TrueForAll(delegate(double d) { return d > 100; }));
Assert.IsFalse(set1.TrueForAll(delegate(double d) { return Math.Abs(d) < 10; }));
Assert.IsTrue(set1.TrueForAll(delegate(double d) { return d > -10; }));
Assert.IsTrue(set1.TrueForAll(delegate(double d) { return Math.Abs(d) < 200; }));
set1.Clear();
Assert.IsTrue(set1.TrueForAll(delegate(double d) { return Math.Abs(d) == 0.04; }));
}
[Test]
public void CountWhere()
{
OrderedSet<double> set1 = new OrderedSet<double>(new double[] { 4.5, 1.2, 7.6, -7.6, -0.04, 1.78, 10.11, 187.4 });
Assert.AreEqual(0, set1.CountWhere(delegate(double d) { return d > 200; }));
Assert.AreEqual(6, set1.CountWhere(delegate(double d) { return Math.Abs(d) < 10; }));
Assert.AreEqual(8, set1.CountWhere(delegate(double d) { return d > -10; }));
Assert.AreEqual(4, set1.CountWhere(delegate(double d) { return Math.Abs(d) > 5; }));
set1.Clear();
Assert.AreEqual(0, set1.CountWhere(delegate(double d) { return Math.Abs(d) < 10; }));
}
[Test]
public void RemoveAll()
{
OrderedSet<double> set1 = new OrderedSet<double>(new double[] { 4.5, 1.2, 7.6, -0.04, -7.6, 1.78, 10.11, 187.4 });
set1.RemoveAll(delegate(double d) { return Math.Abs(d) > 5; });
InterfaceTests.TestReadWriteCollectionGeneric(set1, new double[] { -0.04, 1.2, 1.78, 4.5 }, true, null);
set1 = new OrderedSet<double>(new double[] { 4.5, 1.2, 7.6, -0.04, -7.6, 1.78, 10.11, 187.4 });
set1.RemoveAll(delegate(double d) { return d == 0; });
InterfaceTests.TestReadWriteCollectionGeneric(set1, new double[] { -7.6, -0.04, 1.2, 1.78, 4.5, 7.6, 10.11, 187.4 }, true, null);
set1 = new OrderedSet<double>(new double[] { 4.5, 1.2, 7.6, -0.04, -7.6, 1.78, 10.11, 187.4 });
set1.RemoveAll(delegate(double d) { return d < 200; });
Assert.AreEqual(0, set1.Count);
}
[Test]
public void FindAll()
{
OrderedSet<double> set1 = new OrderedSet<double>(new double[] { 4.5, 1.2, 7.6, -0.04, -7.6, 1.78, 10.11, 187.4 });
double[] expected = {-7.6,7.6,10.11, 187.4};
int i;
i = 0;
foreach (double x in set1.FindAll(delegate(double d) { return Math.Abs(d) > 5; })) {
Assert.AreEqual(expected[i], x);
++i;
}
Assert.AreEqual(expected.Length, i);
}
[Test]
public void IsDisjointFrom()
{
Set<int> set1 = new Set<int>(new int[] { 6, 7, 1, 11, 9, 3, 8 });
Set<int> set2 = new Set<int>();
Set<int> set3 = new Set<int>();
Set<int> set4 = new Set<int>(new int[] { 9, 1, 8, 3, 7, 6, 11 });
Set<int> set5 = new Set<int>(new int[] { 17, 3, 12, 10 });
Set<int> set6 = new Set<int>(new int[] { 19, 14, 0, 2 });
Assert.IsFalse(set1.IsDisjointFrom(set1));
Assert.IsTrue(set2.IsDisjointFrom(set2));
Assert.IsTrue(set1.IsDisjointFrom(set2));
Assert.IsTrue(set2.IsDisjointFrom(set1));
Assert.IsTrue(set2.IsDisjointFrom(set3));
Assert.IsTrue(set3.IsDisjointFrom(set2));
Assert.IsFalse(set1.IsDisjointFrom(set4));
Assert.IsFalse(set4.IsDisjointFrom(set1));
Assert.IsFalse(set1.IsDisjointFrom(set5));
Assert.IsFalse(set5.IsDisjointFrom(set1));
Assert.IsTrue(set1.IsDisjointFrom(set6));
Assert.IsTrue(set6.IsDisjointFrom(set1));
Assert.IsTrue(set5.IsDisjointFrom(set6));
Assert.IsTrue(set6.IsDisjointFrom(set5));
}
[Test]
public void Intersection()
{
OrderedSet<int> setOdds = new OrderedSet<int>(new int[] { 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25 });
OrderedSet<int> setDigits = new OrderedSet<int>(new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9});
OrderedSet<int> set1, set2, set3;
// Algorithms work different depending on sizes, so try both ways.
set1 = setOdds.Clone(); set2 = setDigits.Clone();
set1.IntersectionWith(set2);
InterfaceTests.TestReadWriteCollectionGeneric(set1, new int[] { 1, 3, 5, 7, 9 }, true, null);
set1 = setOdds.Clone(); set2 = setDigits.Clone();
set2.IntersectionWith(set1);
InterfaceTests.TestReadWriteCollectionGeneric(set2, new int[] { 1, 3, 5, 7, 9 }, true, null);
set1 = setOdds.Clone(); set2 = setDigits.Clone();
set3 = set1.Intersection(set2);
InterfaceTests.TestReadWriteCollectionGeneric(set3, new int[] { 1, 3, 5, 7, 9 }, true, null);
set1 = setOdds.Clone(); set2 = setDigits.Clone();
set3 = set2.Intersection(set1);
InterfaceTests.TestReadWriteCollectionGeneric(set3, new int[] { 1, 3, 5, 7, 9 }, true, null);
// Make sure intersection with itself works.
set1 = setDigits.Clone();
set1.IntersectionWith(set1);
InterfaceTests.TestReadWriteCollectionGeneric(set1, new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 }, true, null);
set1 = setDigits.Clone();
set3 = set1.Intersection(set1);
InterfaceTests.TestReadWriteCollectionGeneric(set3, new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 }, true, null);
}
[Test]
public void Union()
{
OrderedSet<int> setOdds = new OrderedSet<int>(new int[] { 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25 });
OrderedSet<int> setDigits = new OrderedSet<int>(new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 });
OrderedSet<int> set1, set2, set3;
// Algorithms work different depending on sizes, so try both ways.
set1 = setOdds.Clone(); set2 = setDigits.Clone();
set1.UnionWith(set2);
InterfaceTests.TestReadWriteCollectionGeneric(set1, new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 13, 15, 17, 19, 21, 23, 25 }, true, null);
set1 = setOdds.Clone(); set2 = setDigits.Clone();
set2.UnionWith(set1);
InterfaceTests.TestReadWriteCollectionGeneric(set2, new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 13, 15, 17, 19, 21, 23, 25 }, true, null);
set1 = setOdds.Clone(); set2 = setDigits.Clone();
set3 = set1.Union(set2);
InterfaceTests.TestReadWriteCollectionGeneric(set3, new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 13, 15, 17, 19, 21, 23, 25 }, true, null);
set1 = setOdds.Clone(); set2 = setDigits.Clone();
set3 = set2.Union(set1);
InterfaceTests.TestReadWriteCollectionGeneric(set3, new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 13, 15, 17, 19, 21, 23, 25 }, true, null);
// Make sure intersection with itself works.
set1 = setDigits.Clone();
set1.UnionWith(set1);
InterfaceTests.TestReadWriteCollectionGeneric(set1, new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 }, true, null);
set1 = setDigits.Clone();
set3 = set1.Union(set1);
InterfaceTests.TestReadWriteCollectionGeneric(set3, new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 }, true, null);
}
[Test]
public void SymmetricDifference()
{
OrderedSet<int> setOdds = new OrderedSet<int>(new int[] { 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25 });
OrderedSet<int> setDigits = new OrderedSet<int>(new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 });
OrderedSet<int> set1, set2, set3;
// Algorithms work different depending on sizes, so try both ways.
set1 = setOdds.Clone(); set2 = setDigits.Clone();
set1.SymmetricDifferenceWith(set2);
InterfaceTests.TestReadWriteCollectionGeneric(set1, new int[] { 2, 4, 6, 8, 11, 13, 15, 17, 19, 21, 23, 25 }, true, null);
set1 = setOdds.Clone(); set2 = setDigits.Clone();
set2.SymmetricDifferenceWith(set1);
InterfaceTests.TestReadWriteCollectionGeneric(set2, new int[] { 2, 4, 6, 8, 11, 13, 15, 17, 19, 21, 23, 25 }, true, null);
set1 = setOdds.Clone(); set2 = setDigits.Clone();
set3 = set1.SymmetricDifference(set2);
InterfaceTests.TestReadWriteCollectionGeneric(set3, new int[] { 2, 4, 6, 8, 11, 13, 15, 17, 19, 21, 23, 25 }, true, null);
set1 = setOdds.Clone(); set2 = setDigits.Clone();
set3 = set2.SymmetricDifference(set1);
InterfaceTests.TestReadWriteCollectionGeneric(set3, new int[] { 2, 4, 6, 8, 11, 13, 15, 17, 19, 21, 23, 25 }, true, null);
// Make sure intersection with itself works.
set1 = setDigits.Clone();
set1.SymmetricDifferenceWith(set1);
Assert.AreEqual(0, set1.Count);
set1 = setDigits.Clone();
set3 = set1.SymmetricDifference(set1);
Assert.AreEqual(0, set3.Count);
}
[Test]
public void Difference()
{
OrderedSet<int> setOdds = new OrderedSet<int>(new int[] { 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25 });
OrderedSet<int> setDigits = new OrderedSet<int>(new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 });
OrderedSet<int> set1, set2, set3;
// Algorithms work different depending on sizes, so try both ways.
set1 = setOdds.Clone(); set2 = setDigits.Clone();
set1.DifferenceWith(set2);
InterfaceTests.TestReadWriteCollectionGeneric(set1, new int[] { 11, 13, 15, 17, 19, 21, 23, 25 }, true, null);
set1 = setOdds.Clone(); set2 = setDigits.Clone();
set2.DifferenceWith(set1);
InterfaceTests.TestReadWriteCollectionGeneric(set2, new int[] { 2, 4, 6, 8 }, true, null);
set1 = setOdds.Clone(); set2 = setDigits.Clone();
set3 = set1.Difference(set2);
InterfaceTests.TestReadWriteCollectionGeneric(set3, new int[] { 11, 13, 15, 17, 19, 21, 23, 25 }, true, null);
set1 = setOdds.Clone(); set2 = setDigits.Clone();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -