Название: [РЕШЕНО] Непонятка в юнит-тесте Отправлено: Vamireh от Февраль 25, 2014, 23:29 Почему
Код: qFuzzyIsNull(0.6 * 8.0 - 0.4 * 12.0) = true Код: QCOMPARE(0.6 * 8.0 - 0.4 * 12.0, 0.0); С другими числами (во всяком случае из тестов) проходит. Т.е. как бы по уму класс тест проходит, но формально - нет. Вопроса, собственно нет, и так все понятно. Но как бы пройти этот тест из такой функции: Код: double foo(double a, double b, double c, double d) { Название: Re: Непонятка в юнит-тесте Отправлено: Fat-Zer от Февраль 26, 2014, 01:33 из доков
Цитировать QCOMPARE ... In the case of comparing floats and doubles, qFuzzyCompare() is used for comparing. This means that comparing to 0 will likely fail. One solution to this is to compare to 1, and add 1 to the produced output. Баг с отказом девелоперов переделывать qFuzzyCompare(): https://bugreports.qt-project.org/browse/QTBUG-16819 ещё, как вариант, QVERIFY(qFuzzyIsNull(0.6 * 8.0 - 0.4 * 12.0)). ЗЫ: как я понял, в следующем релизе, 5.3.0, могут пофиксить... могу ошибаться... ЗЗЫ: нет, я ошибаюсь, пока такого нет... стоило бы баг запостить с просьбой, чтобы qCompare() для double/float использовала бы qFloatDistance() из QTBUG-32632 вместо qFuzzyCompare(). Название: Re: Непонятка в юнит-тесте Отправлено: Vamireh от Март 21, 2014, 11:17 Забыл про тему эту. QVERIFY, кстати, не помог. Сделал по тупому: сравниваю QString::number(). Грубо, но для моей задачи сойдет.
|