📄 listbasetests.cs
字号:
[Test]
public void Find()
{
ReadWriteArrayList<int> list1 = new ReadWriteArrayList<int>(new int[] { 4, 8, 1, 3, 4, 9 });
bool found;
int result;
Assert.AreEqual(1, list1.Find(delegate(int x) { return (x & 1) == 1; }));
found = list1.TryFind(delegate(int x) { return (x & 1) == 1; }, out result);
Assert.IsTrue(found);
Assert.AreEqual(1, result);
Assert.AreEqual(4, list1.Find(delegate(int x) { return (x & 1) == 0; }));
found = list1.TryFind(delegate(int x) { return (x & 1) == 0; }, out result);
Assert.IsTrue(found);
Assert.AreEqual(4, result);
Assert.AreEqual(0, list1.Find(delegate(int x) { return x > 10; }));
found = list1.TryFind(delegate(int x) { return x > 10; }, out result);
Assert.IsFalse(found);
Assert.AreEqual(0, result);
list1 = new ReadWriteArrayList<int>(new int[] { 4, 0, 1, 3, 4, 9 });
Assert.AreEqual(0, list1.Find(delegate(int x) { return x < 3; }));
found = list1.TryFind(delegate(int x) { return x < 3; }, out result);
Assert.IsTrue(found);
Assert.AreEqual(0, result);
Assert.AreEqual(0, list1.Find(delegate(int x) { return x > 10; }));
found = list1.TryFind(delegate(int x) { return x > 10; }, out result);
Assert.IsFalse(found);
Assert.AreEqual(0, result);
list1 = new ReadWriteArrayList<int>(new int[0]);
Assert.AreEqual(0, list1.Find(delegate(int x) { return x < 3; }));
found = list1.TryFind(delegate(int x) { return x < 3; }, out result);
Assert.IsFalse(found);
Assert.AreEqual(0, result);
}
[Test]
public void FindLast()
{
ReadWriteArrayList<int> list1 = new ReadWriteArrayList<int>(new int[] { 4, 8, 1, 3, 2, 9 });
bool found;
int result;
Assert.AreEqual(9, list1.FindLast(delegate(int x) { return (x & 1) == 1; }));
found = list1.TryFindLast(delegate(int x) { return (x & 1) == 1; }, out result);
Assert.IsTrue(found);
Assert.AreEqual(9, result);
Assert.AreEqual(2, list1.FindLast(delegate(int x) { return (x & 1) == 0; }));
found = list1.TryFindLast(delegate(int x) { return (x & 1) == 0; }, out result);
Assert.IsTrue(found);
Assert.AreEqual(2, result);
Assert.AreEqual(0, list1.FindLast(delegate(int x) { return x > 10; }));
found = list1.TryFindLast(delegate(int x) { return x > 10; }, out result);
Assert.IsFalse(found);
Assert.AreEqual(0, result);
list1 = new ReadWriteArrayList<int>(new int[] { 4, 8, 1, 3, 0, 9 });
Assert.AreEqual(0, list1.FindLast(delegate(int x) { return x < 3; }));
found = list1.TryFindLast(delegate(int x) { return x < 3; }, out result);
Assert.IsTrue(found);
Assert.AreEqual(0, result);
Assert.AreEqual(0, list1.FindLast(delegate(int x) { return x > 10; }));
found = list1.TryFindLast(delegate(int x) { return x > 10; }, out result);
Assert.IsFalse(found);
Assert.AreEqual(0, result);
list1 = new ReadWriteArrayList<int>(new int[0]);
Assert.AreEqual(0, list1.FindLast(delegate(int x) { return x < 3; }));
found = list1.TryFindLast(delegate(int x) { return x < 3; }, out result);
Assert.IsFalse(found);
Assert.AreEqual(0, result);
}
[Test]
public void FindAll()
{
ReadWriteArrayList<int> list1 = new ReadWriteArrayList<int>(new int[] { 4, 8, 1, 3, 6, 9 });
IEnumerable<int> found;
found = list1.FindAll(delegate(int x) { return (x & 1) == 1; });
InterfaceTests.TestEnumerableElements(found, new int[] { 1, 3, 9 });
found = list1.FindAll(delegate(int x) { return (x & 1) == 0; });
InterfaceTests.TestEnumerableElements(found, new int[] { 4, 8, 6 });
found = list1.FindAll(delegate(int x) { return x > 10; });
InterfaceTests.TestEnumerableElements(found, new int[] { });
found = list1.FindAll(delegate(int x) { return x < 10; });
InterfaceTests.TestEnumerableElements(found, new int[] { 4, 8, 1, 3, 6, 9 });
list1 = new ReadWriteArrayList<int>(new int[0]);
found = list1.FindAll(delegate(int x) { return (x & 1) == 1; });
InterfaceTests.TestEnumerableElements(found, new int[] { });
}
[Test]
public void FindIndex()
{
ReadWriteArrayList<int> list1 = new ReadWriteArrayList<int>(new int[] { 4, 2, 1, 3, 9, 4 });
Assert.AreEqual(2, list1.FindIndex(delegate(int x) { return (x & 1) == 1; }));
Assert.AreEqual(0, list1.FindIndex(delegate(int x) { return (x & 1) == 0; }));
Assert.AreEqual(-1, list1.FindIndex(delegate(int x) { return x > 10; }));
Assert.AreEqual(4, list1.FindIndex(delegate(int x) { return x > 5; }));
Assert.AreEqual(3, list1.FindIndex(3, delegate(int x) { return (x & 1) == 1; }));
Assert.AreEqual(5, list1.FindIndex(3, delegate(int x) { return (x & 1) == 0; }));
Assert.AreEqual(-1, list1.FindIndex(5, delegate(int x) { return (x & 1) == 1; }));
Assert.AreEqual(2, list1.FindIndex(1, 4, delegate(int x) { return (x & 1) == 1; }));
Assert.AreEqual(3, list1.FindIndex(3, 2, delegate(int x) { return (x & 1) == 1; }));
Assert.AreEqual(-1, list1.FindIndex(3, 2, delegate(int x) { return (x & 1) == 0; }));
Assert.AreEqual(-1, list1.FindIndex(3, 0, delegate(int x) { return (x & 1) == 1; }));
list1 = new ReadWriteArrayList<int>(new int[] { 4, 0, 1, 3, 4, 9 });
Assert.AreEqual(1, list1.FindIndex(delegate(int x) { return x < 3; }));
Assert.AreEqual(-1, list1.FindIndex(delegate(int x) { return x > 10; }));
list1 = new ReadWriteArrayList<int>(new int[0]);
Assert.AreEqual(-1, list1.FindIndex(delegate(int x) { return x < 3; }));
}
[Test]
public void FindLastIndex()
{
ReadWriteArrayList<int> list1 = new ReadWriteArrayList<int>(new int[] { 4, 2, 1, 3, 9, 4 });
Assert.AreEqual(4, list1.FindLastIndex(delegate(int x) { return (x & 1) == 1; }));
Assert.AreEqual(5, list1.FindLastIndex(delegate(int x) { return (x & 1) == 0; }));
Assert.AreEqual(-1, list1.FindLastIndex(delegate(int x) { return x > 10; }));
Assert.AreEqual(2, list1.FindLastIndex(delegate(int x) { return x < 3; }));
Assert.AreEqual(3, list1.FindLastIndex(3, delegate(int x) { return (x & 1) == 1; }));
Assert.AreEqual(1, list1.FindLastIndex(3, delegate(int x) { return (x & 1) == 0; }));
Assert.AreEqual(-1, list1.FindLastIndex(1, delegate(int x) { return (x & 1) == 1; }));
Assert.AreEqual(1, list1.FindLastIndex(1, delegate(int x) { return (x & 1) == 0; }));
Assert.AreEqual(-1, list1.FindLastIndex(3, delegate(int x) { return x > 10; }));
Assert.AreEqual(0, list1.FindLastIndex(3, delegate(int x) { return x > 3; }));
list1 = new ReadWriteArrayList<int>(new int[] { 4, 0, 8, 3, 4, 9 });
Assert.AreEqual(3, list1.FindLastIndex(delegate(int x) { return x < 4; }));
Assert.AreEqual(1, list1.FindLastIndex(delegate(int x) { return x < 1; }));
Assert.AreEqual(-1, list1.FindLastIndex(delegate(int x) { return x > 10; }));
Assert.AreEqual(3, list1.FindLastIndex(3, 1, delegate(int x) { return (x & 1) == 1; }));
Assert.AreEqual(-1, list1.FindLastIndex(3, 1, delegate(int x) { return (x & 1) == 0; }));
Assert.AreEqual(4, list1.FindLastIndex(5, 3, delegate(int x) { return (x & 1) == 0; }));
Assert.AreEqual(2, list1.FindLastIndex(3, 3, delegate(int x) { return (x & 1) == 0; }));
Assert.AreEqual(2, list1.FindLastIndex(4, 4, delegate(int x) { return x > 7; }));
Assert.AreEqual(-1, list1.FindLastIndex(3, 4, delegate(int x) { return x > 8; }));
list1 = new ReadWriteArrayList<int>(new int[0]);
Assert.AreEqual(-1, list1.FindLastIndex(delegate(int x) { return x < 3; }));
}
[Test]
public void IndexOf()
{
ReadWriteArrayList<int> list = new ReadWriteArrayList<int>(new int[] { 4, 8, 1, 1, 4, 9, 7, 11, 4, 9, 1, 7, 19, 1, 7 });
int index;
index = list.IndexOf(1);
Assert.AreEqual(2, index);
index = list.IndexOf(4);
Assert.AreEqual(0, index);
index = list.IndexOf(9);
Assert.AreEqual(5, index);
index = list.IndexOf(12);
Assert.AreEqual(-1, index);
index = list.IndexOf(1, 10);
Assert.AreEqual(10, index);
index = list.IndexOf(1, 11);
Assert.AreEqual(13, index);
index = list.IndexOf(1, 10);
Assert.AreEqual(10, index);
index = list.IndexOf(7, 12);
Assert.AreEqual(14, index);
index = list.IndexOf(9, 3, 3);
Assert.AreEqual(5, index);
index = list.IndexOf(9, 3, 2);
Assert.AreEqual(-1, index);
index = list.IndexOf(4, 5, 5);
Assert.AreEqual(8, index);
index = list.IndexOf(7, 11, 4);
Assert.AreEqual(11, index);
index = list.IndexOf(7, 12, 3);
Assert.AreEqual(14, index);
list = new ReadWriteArrayList<int>(new int[0]);
index = list.IndexOf(1);
Assert.AreEqual(-1, index);
}
// Just overrides equal -- no comparison, ordering, or hash code.
#pragma warning disable 659 // missing GetHashCode
sealed class MyDouble
{
double val;
public MyDouble(double value)
{
val = value;
}
public override bool Equals(object obj)
{
return (obj is MyDouble && ((MyDouble)obj).val == this.val);
}
}
#pragma warning restore 659
[Test]
public void IndexOf2()
{
ReadWriteArrayList<MyDouble> list = new ReadWriteArrayList<MyDouble>(new MyDouble[] { new MyDouble(4), new MyDouble(8), new MyDouble(1), new MyDouble(1), new MyDouble(4), new MyDouble(9) });
int index;
index = list.IndexOf(new MyDouble(1));
Assert.AreEqual(2, index);
index = list.IndexOf(new MyDouble(1.1));
Assert.IsTrue(index < 0);
index = list.IndexOf(new MyDouble(4), 2);
Assert.AreEqual(4, index);
index = list.IndexOf(new MyDouble(8), 2);
Assert.IsTrue(index < 0);
index = list.IndexOf(new MyDouble(1), 1, 3);
Assert.AreEqual(2, index);
index = list.IndexOf(new MyDouble(4), 1, 3);
Assert.IsTrue(index < 0);
}
[Test]
public void LastIndexOf()
{
// 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
ReadWriteArrayList<int> list = new ReadWriteArrayList<int>(new int[] { 4, 8, 1, 1, 4, 9, 7, 11, 4, 9, 1, 7, 19, 1, 7 });
int index;
index = list.LastIndexOf(1);
Assert.AreEqual(13, index);
index = list.LastIndexOf(4);
Assert.AreEqual(8, index);
index = list.LastIndexOf(9);
Assert.AreEqual(9, index);
index = list.LastIndexOf(12);
Assert.AreEqual(-1, index);
index = list.LastIndexOf(1, 13);
Assert.AreEqual(13, index);
index = list.LastIndexOf(1, 12);
Assert.AreEqual(10, index);
index = list.LastIndexOf(1, 1);
Assert.AreEqual(-1, index);
index = list.LastIndexOf(7, 12);
Assert.AreEqual(11, index);
index = list.LastIndexOf(7, 6);
Assert.AreEqual(6, index);
index = list.LastIndexOf(9, 5, 3);
Assert.AreEqual(5, index);
index = list.LastIndexOf(9, 8, 5);
Assert.AreEqual(5, index);
index = list.LastIndexOf(9, 3, 2);
Assert.AreEqual(-1, index);
index = list.LastIndexOf(4, 5, 6);
Assert.AreEqual(4, index);
index = list.LastIndexOf(4, 3, 4);
Assert.AreEqual(0, index);
index = list.LastIndexOf(1, 14, 3);
Assert.AreEqual(13, index);
index = list.LastIndexOf(1, 0, 0);
Assert.AreEqual(-1, index);
index = list.LastIndexOf(1, 14, 0);
Assert.AreEqual(-1, index);
list = new ReadWriteArrayList<int>(new int[0]);
index = list.LastIndexOf(1);
Assert.AreEqual(-1, index);
}
[Test]
public void LastIndexOf2()
{
ReadWriteArrayList<MyDouble> list = new ReadWriteArrayList<MyDouble>(new MyDouble[] { new MyDouble(4), new MyDouble(8), new MyDouble(1), new MyDouble(1), new MyDouble(4), new MyDouble(9) });
int index;
index = list.LastIndexOf(new MyDouble(1));
Assert.AreEqual(3, index);
index = list.LastIndexOf(new MyDouble(1.1));
Assert.IsTrue(index < 0);
index = list.LastIndexOf(new MyDouble(4), 2);
Assert.AreEqual(0, index);
index = list.LastIndexOf(new MyDouble(9), 2);
Assert.IsTrue(index < 0);
index = list.LastIndexOf(new MyDouble(1), 4, 3);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -