mirror of https://github.com/icsharpcode/ILSpy.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
107 lines
3.0 KiB
107 lines
3.0 KiB
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt) |
|
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt) |
|
|
|
using System; |
|
using System.Linq; |
|
using NUnit.Framework; |
|
|
|
namespace ICSharpCode.AvalonEdit.Utils |
|
{ |
|
[TestFixture] |
|
public class CompressingTreeListTests |
|
{ |
|
[Test] |
|
public void EmptyTreeList() |
|
{ |
|
CompressingTreeList<string> list = new CompressingTreeList<string>(string.Equals); |
|
Assert.AreEqual(0, list.Count); |
|
foreach (string v in list) { |
|
Assert.Fail(); |
|
} |
|
string[] arr = new string[0]; |
|
list.CopyTo(arr, 0); |
|
} |
|
|
|
[Test] |
|
public void CheckAdd10BillionElements() |
|
{ |
|
const int billion = 1000000000; |
|
CompressingTreeList<string> list = new CompressingTreeList<string>(string.Equals); |
|
list.InsertRange(0, billion, "A"); |
|
list.InsertRange(1, billion, "B"); |
|
Assert.AreEqual(2 * billion, list.Count); |
|
try { |
|
list.InsertRange(2, billion, "C"); |
|
Assert.Fail("Expected OverflowException"); |
|
} catch (OverflowException) { |
|
// expected |
|
} |
|
} |
|
|
|
[Test] |
|
public void AddRepeated() |
|
{ |
|
CompressingTreeList<int> list = new CompressingTreeList<int>((a, b) => a == b); |
|
list.Add(42); |
|
list.Add(42); |
|
list.Add(42); |
|
list.Insert(0, 42); |
|
list.Insert(1, 42); |
|
Assert.AreEqual(new[] { 42, 42, 42, 42, 42 }, list.ToArray()); |
|
} |
|
|
|
[Test] |
|
public void RemoveRange() |
|
{ |
|
CompressingTreeList<int> list = new CompressingTreeList<int>((a, b) => a == b); |
|
for (int i = 1; i <= 3; i++) { |
|
list.InsertRange(list.Count, 2, i); |
|
} |
|
Assert.AreEqual(new[] { 1, 1, 2, 2, 3, 3 }, list.ToArray()); |
|
list.RemoveRange(1, 4); |
|
Assert.AreEqual(new[] { 1, 3 }, list.ToArray()); |
|
list.Insert(1, 1); |
|
list.InsertRange(2, 2, 2); |
|
list.Insert(4, 1); |
|
Assert.AreEqual(new[] { 1, 1, 2, 2, 1, 3 }, list.ToArray()); |
|
list.RemoveRange(2, 2); |
|
Assert.AreEqual(new[] { 1, 1, 1, 3 }, list.ToArray()); |
|
} |
|
|
|
[Test] |
|
public void RemoveAtEnd() |
|
{ |
|
CompressingTreeList<int> list = new CompressingTreeList<int>((a, b) => a == b); |
|
for (int i = 1; i <= 3; i++) { |
|
list.InsertRange(list.Count, 2, i); |
|
} |
|
Assert.AreEqual(new[] { 1, 1, 2, 2, 3, 3 }, list.ToArray()); |
|
list.RemoveRange(3, 3); |
|
Assert.AreEqual(new[] { 1, 1, 2 }, list.ToArray()); |
|
} |
|
|
|
[Test] |
|
public void RemoveAtStart() |
|
{ |
|
CompressingTreeList<int> list = new CompressingTreeList<int>((a, b) => a == b); |
|
for (int i = 1; i <= 3; i++) { |
|
list.InsertRange(list.Count, 2, i); |
|
} |
|
Assert.AreEqual(new[] { 1, 1, 2, 2, 3, 3 }, list.ToArray()); |
|
list.RemoveRange(0, 1); |
|
Assert.AreEqual(new[] { 1, 2, 2, 3, 3 }, list.ToArray()); |
|
} |
|
|
|
[Test] |
|
public void RemoveAtStart2() |
|
{ |
|
CompressingTreeList<int> list = new CompressingTreeList<int>((a, b) => a == b); |
|
for (int i = 1; i <= 3; i++) { |
|
list.InsertRange(list.Count, 2, i); |
|
} |
|
Assert.AreEqual(new[] { 1, 1, 2, 2, 3, 3 }, list.ToArray()); |
|
list.RemoveRange(0, 3); |
|
Assert.AreEqual(new[] { 2, 3, 3 }, list.ToArray()); |
|
} |
|
} |
|
}
|
|
|