/// <summary> /// Test whether the collection is ordered /// </summary> /// <param name="actual"></param> /// <returns></returns> protected override bool doMatch(IEnumerable actual) { object previous = null; int index = 0; foreach (var obj in actual) { object objToCompare = obj; if (obj == null) { throw new ArgumentNullException("actual", "Null value at index " + index.ToString()); } if (propertyName != null) { PropertyInfo prop = obj.GetType().GetProperty(propertyName); objToCompare = prop.GetValue(obj, null); if (objToCompare == null) { throw new ArgumentNullException("actual", "Null property value at index " + index.ToString()); } } if (previous != null) { //int comparisonResult = comparer.Compare(al[i], al[i + 1]); int comparisonResult = comparer.Compare(previous, objToCompare); if (descending && comparisonResult < 0) { return(false); } if (!descending && comparisonResult > 0) { return(false); } } previous = objToCompare; index++; } return(true); }