/// <summary> /// Returns all the selected rows index /// </summary> /// <returns></returns> public virtual int[] GetRowsIndex() { RangeMergerByRows merger = new RangeMergerByRows(); foreach (Range range in this) { merger.AddRange(range); } IList <int> indexes = merger.GetRowsIndex(); int[] ret = new int[indexes.Count]; indexes.CopyTo(ret, 0); /*foreach (int in merger.GetRowsIndex()) * { * * } * * * System.Collections.ArrayList indexList = new System.Collections.ArrayList(); * * for (int iRange = 0; iRange < this.Count; iRange++) * { * for (int r = this[iRange].Start.Row; r <= this[iRange].End.Row; r++) * { * if (indexList.Contains(r) == false) * indexList.Add(r); * } * } * int[] ret = new int[indexList.Count]; * indexList.CopyTo(ret, 0);*/ return(ret); }
public void AddRange_NotMerge() { RangeMergerByRows list = new RangeMergerByRows() .AddRange(new Range(1, 1, 1, 1)) .AddRange(new Range(3, 3, 3, 3)); Assert.AreEqual(2, list.GetSelectedRowRegions(0, 1).Count); }
public void AddRange_Merge_Intersecting() { RangeMergerByRows list = new RangeMergerByRows() .AddRange(new Range(1, 1, 1, 1)) .AddRange(new Range(1, 1, 2, 2)); Assert.AreEqual(1, list.GetSelectedRowRegions(0, 1).Count); Assert.AreEqual(new Range(1, 0, 2, 1), list.GetSelectedRowRegions(0, 1)[0]); }
public void AddRange_Merge_Overlaping() { RangeMergerByRows list = new RangeMergerByRows() .AddRange(new Range(1, 1, 5, 1)) .AddRange(new Range(3, 1, 8, 1)); Assert.AreEqual(1, list.GetSelectedRowRegions(0, 1).Count); Assert.AreEqual(new Range(1, 0, 8, 1), list.GetSelectedRowRegions(0, 1)[0]); }
public void RemoveRange_ResizeFromBottom() { RangeMergerByRows list = new RangeMergerByRows() .AddRange(new Range(1, 1, 2, 1)) .RemoveRange(new Range(1, 1, 1, 1)); Assert.AreEqual(1, list.GetSelectedRowRegions(0, 1).Count); Assert.AreEqual(new Range(2, 0, 2, 1), list.GetSelectedRowRegions(0, 1)[0]); }
public void RemoveRange_SplitIntoTwo() { RangeMergerByRows list = new RangeMergerByRows() .AddRange(new Range(1, 1, 3, 1)) .RemoveRange(new Range(2, 1, 2, 1)); Assert.AreEqual(2, list.GetSelectedRowRegions(0, 1).Count); Assert.AreEqual(new Range(1, 0, 1, 1), list.GetSelectedRowRegions(0, 1)[0]); Assert.AreEqual(new Range(3, 0, 3, 1), list.GetSelectedRowRegions(0, 1)[1]); }
public void RemoveRange_RemoveFromTopAndBottom() { RangeMergerByRows list = new RangeMergerByRows() .AddRange(new Range(1, 1, 2, 1)) .AddRange(new Range(4, 1, 5, 1)) .RemoveRange(new Range(2, 1, 4, 1)); List <Range> ranges = list.GetSelectedRowRegions(0, 1); Assert.AreEqual(2, ranges.Count); Assert.AreEqual(new Range(1, 0, 1, 1), ranges[0]); Assert.AreEqual(new Range(5, 0, 5, 1), ranges[1]); }
/// <summary> /// Returns all the selected rows index /// </summary> /// <returns></returns> public virtual int[] GetRowsIndex() { RangeMergerByRows merger = new RangeMergerByRows(); foreach (Range range in this) { merger.AddRange(range); } IList <int> indexes = merger.GetRowsIndex(); int[] ret = new int[indexes.Count]; indexes.CopyTo(ret, 0); return(ret); }
public void AddRange_Merge_WhenOverlapped() { // single addition causes to range many rows at once // add separate ranges RangeMergerByRows list = new RangeMergerByRows() .AddRange(new Range(1, 1, 1, 1)) .AddRange(new Range(3, 3, 3, 3)) .AddRange(new Range(5, 5, 5, 5)); Assert.AreEqual(3, list.GetSelectedRowRegions(0, 1).Count); // cause them all to merge list.AddRange(new Range(1, 1, 5, 1)); Assert.AreEqual(1, list.GetSelectedRowRegions(0, 1).Count); }