public static void FindIndex() { var distributedArray = new BigArray <int>(); for (int i = 0; i < MaxBlockSize * 2; i++) { distributedArray.Add(i); } for (int i = 0; i < MaxBlockSize * 2; i++) //For mistakes with duplicate elements { distributedArray.Add(i); } //If MaxBlockSize is change, we need to change this code Assert.AreEqual(MaxBlockSize, MaxBlockSize); Assert.AreEqual(distributedArray.FindIndex(IsEqual5000), 5000); Assert.AreEqual(distributedArray.FindIndex(MaxBlockSize * 4 - 1, IsEqual5000), -1); Assert.AreEqual(distributedArray.FindIndex(0, 4999, IsEqual5000), -1); Assert.AreEqual(distributedArray.FindIndex(IsEqual128000), -1); Assert.AreEqual(distributedArray.FindIndex(5001, 1000, IsEqual5000), -1); var emptyArray = new BigArray <int>(); Assert.AreEqual(emptyArray.FindIndex(IsEqual0), -1); //Exceptions Assert.IsTrue(ExceptionManager.IsThrowFuncException <ArgumentNullException, Predicate <int>, int> (distributedArray.FindIndex, null)); Assert.IsTrue(ExceptionManager.IsThrowFuncException <ArgumentOutOfRangeException, int, Predicate <int>, int> (distributedArray.FindIndex, distributedArray.Count, IsEqual0)); Assert.IsTrue(ExceptionManager.IsThrowFuncException <ArgumentOutOfRangeException, int, Predicate <int>, int> (distributedArray.FindIndex, -1, IsEqual0)); Assert.IsTrue(ExceptionManager.IsThrowFuncException <ArgumentOutOfRangeException, int, int, Predicate <int>, int> (distributedArray.FindIndex, distributedArray.Count - 1, 2, IsEqual0)); Assert.IsTrue(ExceptionManager.IsThrowFuncException <ArgumentOutOfRangeException, int, int, Predicate <int>, int> (distributedArray.FindIndex, -1, 1, IsEqual0)); Assert.IsTrue(ExceptionManager.IsThrowFuncException <ArgumentOutOfRangeException, int, int, Predicate <int>, int> (distributedArray.FindIndex, 1, -1, IsEqual0)); }