public void TransformRange() { CompressingTreeList <int> list = new CompressingTreeList <int>((a, b) => a == b); list.AddRange(new[] { 0, 1, 1, 1, 0, 0 }); list.TransformRange(2, 3, i => 0); Assert.AreEqual(new[] { 0, 1, 0, 0, 0, 0 }, list.ToArray()); }
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); Assert.Throws <OverflowException>(delegate { list.InsertRange(2, billion, "C"); }); }
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()); }
public void Transform() { CompressingTreeList <int> list = new CompressingTreeList <int>((a, b) => a == b); list.AddRange(new[] { 0, 1, 1, 0 }); int calls = 0; list.Transform(i => { calls++; return(i + 1); }); Assert.AreEqual(3, calls); Assert.AreEqual(new[] { 1, 2, 2, 1 }, list.ToArray()); }
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()); }
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); }