Как проверить, находятся ли две даты в пределах определенного допуска в NUnit? - PullRequest
2 голосов
/ 11 ноября 2008

Как проверить, находятся ли две даты в пределах определенного допуска в NUnit?

Ответы [ 4 ]

4 голосов
/ 11 ноября 2008

Возможно, вы захотите взглянуть на метод "Within", который живет на объекте Constraint.

Например:

Assert.That(DateTime.Now, Is.EqualTo(DateTime.Now.AddMilliseconds(1000)).Within(101));

Обычно он используется для определения допусков к двойным и плавающим значениям, но, поскольку в итоге DateTime является двойным, он может удовлетворить ваши потребности.

2 голосов
/ 13 июля 2011
TimeSpan tolerance = new TimeSpan(0,1,0);  // e.g. 1 minute

Assert.IsTrue((firstDateTime-SecondDateTime).Duration() > tolerance);
1 голос
/ 11 ноября 2008

Вычтите одно из другого, что даст вам значение TimeSpan, используйте свойства TotalXYZ (например, TotalMilliseconds), чтобы получить значение, используйте для него Math.Abs, чтобы преобразовать его в всегда положительное значение, и проверьте соответствие допустимому отклонению значение.

Например, если они должны находиться в пределах 10 миллисекунд друг от друга:

if (Math.Abs((dt1 - dt2).TotalMilliseconds) <= 10)
{
    CloseEnough();
}
1 голос
/ 11 ноября 2008

Преобразуйте ваше допуск в Ticks, а затем используйте ограничение And. Что-то вроде;

long ticks = mydate.Ticks;
long tolerance = 1000;
Assert.That( ticks, Is.LessThan( ticks + tolerance ) & Is.GreaterThan( ticks - tolerance ) );

Я бы создал метод расширения или свой собственный Assert для этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...