/// <summary> /// Internal test function. /// </summary> private static bool CheckTypedRangeSet(TypedRangeSet set, int expectedRanges, Tuple[] expected) { if (set.RangeCount != expectedRanges) { Debug.WriteLine("Expected " + expectedRanges + " ranges, got " + set.RangeCount); return(false); } // Compare actual vs. expected. If we have more actual than expected we'll // throw on the array access. int expIndex = 0; foreach (TypedRangeSet.Tuple val in set) { if (val != expected[expIndex]) { Debug.WriteLine("Expected " + expected[expIndex] + ", got " + val); return(false); } expIndex++; } // See if we have more expected than actual. if (expIndex != expected.Length) { Debug.WriteLine("Expected " + expected.Length + " elements, found " + expIndex); return(false); } // The count is maintained separately, so check it. if (set.Count != expected.Length) { Debug.WriteLine("Expected Count=" + expected.Length + ", got " + set.Count); return(false); } return(true); }
/// <summary> /// Executes unit tests. /// </summary> /// <returns>True if all goes well.</returns> public static bool Test() { bool result = true; TypedRangeSet one = new TypedRangeSet(); one.Add(7, 100); one.Add(5, 100); one.Add(3, 100); one.Add(9, 100); one.Add(7, 100); one.Add(8, 100); one.Add(2, 100); one.Add(4, 100); result &= CheckTypedRangeSet(one, 2, new Tuple[] { new Tuple(2, 100), new Tuple(3, 100), new Tuple(4, 100), new Tuple(5, 100), new Tuple(7, 100), new Tuple(8, 100), new Tuple(9, 100) }); one.Remove(2); one.Remove(9); one.Remove(4); result &= CheckTypedRangeSet(one, 3, new Tuple[] { new Tuple(3, 100), new Tuple(5, 100), new Tuple(7, 100), new Tuple(8, 100) }); one.Clear(); one.Add(1, 200); one.Add(3, 100); one.Add(7, 100); one.Add(5, 100); one.Add(9, 100); one.Add(6, 100); one.Add(8, 100); one.Add(6, 200); one.Add(2, 200); one.Add(4, 300); one.Add(4, 100); result &= CheckTypedRangeSet(one, 4, new Tuple[] { new Tuple(1, 200), new Tuple(2, 200), new Tuple(3, 100), new Tuple(4, 100), new Tuple(5, 100), new Tuple(6, 200), new Tuple(7, 100), new Tuple(8, 100), new Tuple(9, 100) }); one.Add(6, 100); result &= CheckTypedRangeSet(one, 2, new Tuple[] { new Tuple(1, 200), new Tuple(2, 200), new Tuple(3, 100), new Tuple(4, 100), new Tuple(5, 100), new Tuple(6, 100), new Tuple(7, 100), new Tuple(8, 100), new Tuple(9, 100) }); Debug.WriteLine("TypedRangeSet: test complete (ok=" + result + ")"); return(result); }
// IEnumerator<Tuple> public void Dispose() { mSet = null; }
/// <summary> /// Constructor. /// </summary> /// <param name="set">TypedRangeSet to iterate over.</param> public TypedRangeSetIterator(TypedRangeSet set) { mSet = set; Reset(); }