public static void CopyToTest() { string[] anArray = new string[] { "one", "two", "three", "four" }; CiccioList <string> collection = new CiccioList <string>((IEnumerable <string>)anArray); string[] aCopy = new string[collection.Count]; collection.CopyTo(aCopy, 0); for (int i = 0; i < anArray.Length; ++i) { Assert.Equal(anArray[i], aCopy[i]); } // copy observable collection starting in middle, where array is larger than source. aCopy = new string[collection.Count + 2]; int offsetIndex = 1; collection.CopyTo(aCopy, offsetIndex); for (int i = 0; i < aCopy.Length; i++) { string value = aCopy[i]; if (i == 0) { Assert.True(null == value, "Should not have a value since we did not start copying there."); } else if (i == (aCopy.Length - 1)) { Assert.True(null == value, "Should not have a value since the collection is shorter than the copy array.."); } else { int indexInCollection = i - offsetIndex; Assert.Equal(collection[indexInCollection], aCopy[i]); } } }
public static void CopyToTest_Negative() { string[] anArray = new string[] { "one", "two", "three", "four" }; CiccioList <string> collection = new CiccioList <string>(anArray); int[] iArrInvalidValues = new int[] { -1, -2, -100, -1000, -10000, -100000, -1000000, -10000000, -100000000, -1000000000, int.MinValue }; foreach (var index in iArrInvalidValues) { string[] aCopy = new string[collection.Count]; AssertExtensions.Throws <ArgumentOutOfRangeException>("destinationIndex", "dstIndex", () => collection.CopyTo(aCopy, index)); } int[] iArrLargeValues = new int[] { collection.Count, int.MaxValue, int.MaxValue / 2, int.MaxValue / 10 }; foreach (var index in iArrLargeValues) { string[] aCopy = new string[collection.Count]; AssertExtensions.Throws <ArgumentException>("destinationArray", null, () => collection.CopyTo(aCopy, index)); } AssertExtensions.Throws <ArgumentNullException>("destinationArray", "dest", () => collection.CopyTo(null, 1)); string[] copy = new string[collection.Count - 1]; AssertExtensions.Throws <ArgumentException>("destinationArray", "", () => collection.CopyTo(copy, 0)); copy = new string[0]; AssertExtensions.Throws <ArgumentException>("destinationArray", "", () => collection.CopyTo(copy, 0)); }