C # способ сделать Assert.AreEqual (.,. Delta), но возвращая bool - PullRequest
1 голос
/ 26 сентября 2019

Скажем, у нас есть класс Point.

public class Point {
    public double x;
    public double y;
    ...
    public isEqual(Point p) {
        // here we worry about epsilons
    }
}

Некоторые TestProject вычисляют, скажем, медиану треугольника и подтверждают (сравнивая координаты x и y), что возвращаемая точка верна.Но нам нужно ввести допуски.

Теперь мы прокляты, если мы это сделаем, прокляты, если мы этого не сделаем:

Сценарий 1

C # удобно перегружает Assert.AreEqual() для обработки допусков.Мы помещаем сравнение в TestProject.Мы используем Assert.AreEqual () и все хорошо.

Но если мы напишем десять разных тестов в десяти разных проектах, мы не будем инкапсулировать точечные сравнения.Это разбросано повсюду, что плохо.

Сценарий 2

Мы ставим сравнение вместе с классом Point.Теперь, когда нам нужно сравнить две точки, мы просто отправляем две точки в класс Point и получаем ответ.

Но мы больше не можем использовать Assert.AreEqual ().Все утверждения должны быть расположены в TestProject.

Мы должны использовать наш собственный компаратор.

Тогда возникает вопрос: как в C # выполнить Assert.AreEqual (), но вернутьBOOL

1 Ответ

0 голосов
/ 26 сентября 2019

Вы всегда можете попробовать что-то вроде следующего:

public class Point
{
    private const double TOLERANCE = 0.00001d;
    public double x;
    public double y;

    public isEqual(Point p)
    {
        return Math.Abs(x - p.x) <= TOLERANCE && Math.Abs(y - p.y) <= TOLERANCE;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...