Когда я делаю подобные вещи, я обычно просто очищаю страницу, чтобы получить список DateTime
, создаю клон списка, сортирую клонированный список и затем сравниваю его с оригиналом, используя CollectionAssert.AreEqual()
. Если исходный список не был отсортирован правильно, сравнение не удастся. Пример ...
[Test]
public void CompareDatesFail()
{
// dates are NOT in order
DateTime[] dates = { ParseDate("15-01-2020"), ParseDate("15-03-2020"), ParseDate("15-02-2020") };
VerifyDatesAreSorted(dates);
}
[Test]
public void CompareDatesPass()
{
// dates are in order
DateTime[] dates = { ParseDate("15-01-2020"), ParseDate("15-02-2020"), ParseDate("15-03-2020") };
VerifyDatesAreSorted(dates);
}
Поскольку вы, вероятно, будете выполнять парсинг DateTime
большого количества строк, я создал метод, который обрабатывает это в одном месте.
/// <summary>
/// Returns the DateTime for the provided dd-MM-yyyy formatted string
/// </summary>
/// <param name="dateTimeString">The dd-MM-yyyy formatted string</param>
/// <returns>A DateTime instance</returns>
public DateTime ParseDate(string dateTimeString)
{
return DateTime.ParseExact(dateTimeString, "dd-MM-yyyy", CultureInfo.InvariantCulture);
}
Поскольку эта проверка, вероятно, будет происходить несколько раз, оберните код в метод.
/// <summary>
/// Verifies that the provided array of DateTime instances are sorted
/// </summary>
/// <param name="dates">An array of DateTime instances</param>
public void VerifyDatesAreSorted(DateTime[] dates)
{
DateTime[] sortedDates = (DateTime[])dates.Clone();
Array.Sort(sortedDates);
CollectionAssert.AreEqual(sortedDates, dates, "Verify dates are sorted");
}
Некоторые ссылки
DateTime.ParseExact Method
Пользовательская дата и строки формата времени