📄 biglisttests.cs
字号:
list2[i] = 99 * i;
#if DEBUG
list2.Print();
#endif //DEBUG
}
for (i = 44; i < 88; ++i)
Assert.AreEqual(i * 2, list1[i]);
list1 = new BigList<int>();
list2 = new BigList<int>();
i = 0;
while (i < 55)
list1.Add(i++);
while (i < 100)
list2.Add(i++);
list3 = list1 + list2;
for (i = 0; i < 100; ++i)
list3[i] = i * 2;
for (i = 0; i < list1.Count; ++i)
Assert.AreEqual(i, list1[i]);
for (i = 0; i < list2.Count; ++i)
Assert.AreEqual(i + 55, list2[i]);
list1.Clear();
i = 0;
while (i < 100)
list1.Add(i++);
list1.AddRange(CreateList(100, 400));
for (i = 100; i < 200; ++i)
list1[i] = -1;
list2 = list1.GetRange(33, 200);
for (i = 0; i < list2.Count; ++i) {
if (i < 67 || i >= 167)
Assert.AreEqual(i + 33, list2[i]);
else
Assert.AreEqual(-1, list2[i]);
}
for (i = 22; i < 169; ++i)
list1[i] = 187 * i;
for (i = 0; i < list2.Count; ++i) {
if (i < 67 || i >= 167)
Assert.AreEqual(i + 33, list2[i]);
else
Assert.AreEqual(-1, list2[i]);
}
for (i = 168; i >= 22; --i)
Assert.AreEqual(187 * i, list1[i]);
list1.Clear();
list1.Add(1);
list1.Add(2);
list1.Add(3);
Assert.AreEqual(1, list1[0]);
Assert.AreEqual(2, list1[1]);
Assert.AreEqual(3, list1[2]);
list2 = list1.Clone();
list1[1] = 4;
list2[0] = 11;
Assert.AreEqual(11, list2[0]);
Assert.AreEqual(2, list2[1]);
Assert.AreEqual(3, list2[2]);
Assert.AreEqual(1, list1[0]);
Assert.AreEqual(4, list1[1]);
Assert.AreEqual(3, list1[2]);
}
[Test]
public void IndexerExceptions()
{
BigList<int> list1;
int x;
list1 = new BigList<int>();
try {
list1[0] = 1;
Assert.Fail("should throw");
}
catch (Exception e) {
Assert.IsTrue(e is ArgumentOutOfRangeException);
}
try {
x = list1[0];
Assert.Fail("should throw");
}
catch (Exception e) {
Assert.IsTrue(e is ArgumentOutOfRangeException);
}
list1 = new BigList<int>(new int[] { 1, 2, 3 });
list1 = new BigList<int>();
try {
list1[-1] = 1;
Assert.Fail("should throw");
}
catch (Exception e) {
Assert.IsTrue(e is ArgumentOutOfRangeException);
}
try {
x = list1[-1];
Assert.Fail("should throw");
}
catch (Exception e) {
Assert.IsTrue(e is ArgumentOutOfRangeException);
}
list1 = new BigList<int>();
try {
list1[3] = 1;
Assert.Fail("should throw");
}
catch (Exception e) {
Assert.IsTrue(e is ArgumentOutOfRangeException);
}
try {
x = list1[3];
Assert.Fail("should throw");
}
catch (Exception e) {
Assert.IsTrue(e is ArgumentOutOfRangeException);
}
list1 = new BigList<int>();
try {
list1[int.MaxValue] = 1;
Assert.Fail("should throw");
}
catch (Exception e) {
Assert.IsTrue(e is ArgumentOutOfRangeException);
}
try {
x = list1[int.MaxValue];
Assert.Fail("should throw");
}
catch (Exception e) {
Assert.IsTrue(e is ArgumentOutOfRangeException);
}
list1 = new BigList<int>();
try {
list1[int.MinValue] = 1;
Assert.Fail("should throw");
}
catch (Exception e) {
Assert.IsTrue(e is ArgumentOutOfRangeException);
}
try {
x = list1[int.MinValue];
Assert.Fail("should throw");
}
catch (Exception e) {
Assert.IsTrue(e is ArgumentOutOfRangeException);
}
}
[Test]
public void InsertItem()
{
BigList<int> list1, list2, list3;
list1 = new BigList<int>();
list1.Insert(0, 34);
Assert.AreEqual(1, list1.Count);
Assert.AreEqual(34, list1[0]);
list1.Insert(1, 78);
list1.Insert(0, 11);
list1.Insert(1, 13);
InterfaceTests.TestEnumerableElements<int>(list1, new int[] { 11, 13, 34, 78 });
#if DEBUG
list1.Validate();
#endif //DEBUG
list2 = CreateList(0, 100);
int j = 300;
for (int i = 0; i < list2.Count; i += 3)
list2.Insert(i, j++);
#if DEBUG
list2.Validate();
#endif //DEBUG
int k = 0;
j = 300;
for (int i = 0; i < list2.Count; ++i) {
if (i % 3 == 0) {
Assert.AreEqual(j++, list2[i]);
}
else {
Assert.AreEqual(k++, list2[i]);
}
}
list3 = new BigList<int>();
for (int i = 0; i < 32; ++i)
list3.Add(i);
list3.Insert(24, 101);
list3.Insert(16, 100);
list3.Insert(8, 102);
InterfaceTests.TestEnumerableElements<int>(list3, new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 102, 8, 9, 10, 11, 12, 13, 14, 15, 100, 16, 17, 18, 19, 20, 21, 22, 23, 101, 24, 25, 26, 27, 28, 29, 30, 31 });
}
[Test]
public void InsertList()
{
BigList<int> list2, list3;
list2 = CreateList(0, 20);
list3 = CreateList(-10, 10);
list2.InsertRange(0, list3);
list2.InsertRange(17, list3);
InterfaceTests.TestEnumerableElements<int>(list2, new int[] { -10, -9, -8, -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, -10, -9, -8, -7, -6, -5, -4, -3, -2, -1, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 });
#if DEBUG
list2.Validate();
#endif //DEBUG
list2 = CreateList(0, 20);
list3 = CreateList(-10, 2);
list2.InsertRange(0, list3);
list2.InsertRange(17, list3);
InterfaceTests.TestEnumerableElements<int>(list2, new int[] { -10, -9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, -10, -9, 15, 16, 17, 18, 19 });
#if DEBUG
list2.Validate();
#endif //DEBUG
}
[Test]
public void InsertEnumerable()
{
BigList<int> list2;
IEnumerable<int> e1;
list2 = CreateList(0, 20);
e1 = new int[] {-10, -9, -8, -7, -6, -5, -4, -3, -2, -1};
list2.InsertRange(0, e1);
list2.InsertRange(17, e1);
InterfaceTests.TestEnumerableElements<int>(list2, new int[] { -10, -9, -8, -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, -10, -9, -8, -7, -6, -5, -4, -3, -2, -1, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 });
#if DEBUG
list2.Validate();
#endif //DEBUG
list2 = CreateList(0, 20);
e1 = new int[] { -10, -9 };
list2.InsertRange(0, e1);
list2.InsertRange(17, e1);
InterfaceTests.TestEnumerableElements<int>(list2, new int[] { -10, -9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, -10, -9, 15, 16, 17, 18, 19 });
#if DEBUG
list2.Validate();
#endif //DEBUG
list2 = new BigList<int>(new int[] { 1, 2, 3, 4, 5 });
list2.InsertRange(2, new int[] { 9, 8});
InterfaceTests.TestEnumerableElements<int>(list2, new int[] { 1, 2, 9, 8, 3, 4, 5});
list2 = new BigList<int>();
list2.Add(1);
list2.Add(2);
list2.InsertRange(1, new int[] { 6, 5, 4 });
list2.InsertRange(2, new int[] { 9, 8 });
InterfaceTests.TestEnumerableElements<int>(list2, new int[] { 1, 6, 9, 8, 5, 4, 2 });
}
[Test]
public void InsertExceptions()
{
BigList<int> list1, list2;
list1 = CreateList(0, 10);
list2 = CreateList(4, 5);
try {
list1.Insert(-1, 5);
Assert.Fail("should throw");
}
catch (Exception e) {
Assert.IsTrue(e is ArgumentOutOfRangeException);
}
try {
list1.Insert(11, 5);
Assert.Fail("should throw");
}
catch (Exception e) {
Assert.IsTrue(e is ArgumentOutOfRangeException);
}
try {
list1.InsertRange(-1, list2);
Assert.Fail("should throw");
}
catch (Exception e) {
Assert.IsTrue(e is ArgumentOutOfRangeException);
}
try {
list1.InsertRange(11, list2);
Assert.Fail("should throw");
}
catch (Exception e) {
Assert.IsTrue(e is ArgumentOutOfRangeException);
}
try {
list1.InsertRange(-1, new int[] { 3, 4, 5 });
Assert.Fail("should throw");
}
catch (Exception e) {
Assert.IsTrue(e is ArgumentOutOfRangeException);
}
try {
list1.InsertRange(11, new int[] { 3, 4, 5 });
Assert.Fail("should throw");
}
catch (Exception e) {
Assert.IsTrue(e is ArgumentOutOfRangeException);
}
}
[Test]
public void RemoveAt()
{
BigList<int> list1 = new BigList<int>();
for (int i = 0; i < 100; ++i)
list1.Add(i);
for (int i = 0; i < 50; ++i)
list1.RemoveAt(50);
list1.RemoveAt(0);
for (int i = 1; i < list1.Count; i += 2)
list1.RemoveAt(i);
InterfaceTests.TestEnumerableElements<int>(list1, new int[] { 1, 3, 4, 6, 7, 9, 10, 12, 13, 15, 16, 18, 19, 21, 22, 24, 25, 27, 28, 30, 31, 33, 34, 36, 37, 39, 40, 42, 43, 45, 46, 48, 49 });
list1 = CreateList(0, 100);
for (int i = 0; i < 50; ++i)
list1.RemoveAt(50);
list1.RemoveAt(0);
for (int i = 1; i < list1.Count; i += 2)
list1.RemoveAt(i);
InterfaceTests.TestEnumerableElements<int>(list1, new int[] { 1, 3, 4, 6, 7, 9, 10, 12, 13, 15, 16, 18, 19, 21, 22, 24, 25, 27, 28, 30, 31, 33, 34, 36, 37, 39, 40, 42, 43, 45, 46, 48, 49 });
}
[Test]
public void RemoveRange()
{
BigList<int> list1 = new BigList<int>();
for (int i = 0; i < 200; ++i)
list1.Add(i);
list1.RemoveRange(0, 5);
list1.RemoveRange(194, 1);
list1.RemoveRange(50, 0);
list1.RemoveRange(30, 25);
list1.RemoveRange(120, 37);
InterfaceTests.TestEnumerableElements<int>(list1, new int[] { 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
32, 33, 34, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 187, 188, 189,
190, 191, 192, 193, 194, 195, 196, 197, 198 });
list1 = CreateList(0, 200);
list1.RemoveRange(0, 5);
list1.RemoveRange(194, 1);
list1.RemoveRange(50, 0);
list1.RemoveRange(30, 25);
list1.RemoveRange(120, 37);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -