2012-03-20 3 views
0

В настоящее время я создаю единичный набор тестов для своего приложения, используя QTestLib. Это, как правило, довольно прямолинейно, но я зациклился на том, как проверить аргументы «return». Например, если у меня есть функция:QTestLib - Проверка аргументов неконстантных ссылок

double pointLineSegmentDistance(const QVector2D& start, 
           const QVector2D& end, 
           const QVector2D& point, 
           bool& withinBounds); 

Функция присваивает withinBounds ограниченного состояние анализа расстояния сегмента. Как я могу сделать макрос QCOMPARE/QVERIFY проанализировать его состояние?

ответ

2

Просто передать локальную переменную в качестве аргумента и проверить/сравнить его значение впоследствии:

bool withinBounds = false; 
const double distance = pointLineSegmentDistance(..., withinBounds); 
QCOMPARE(distance + 1.0, 2.0); //qFuzzyCompare doesn't work well with 0.0 
QVERIFY(withinBounds); 
+0

Ой кровавый ад, очевидно! Ну, ответ поможет другому будущему придурке ... – cmannett85

+1

Строка [QCOMPARE] (http://qt-project.org/doc/qt-4.8/qtest.html#QCOMPARE) должна быть фактически: QCOMPARE (расстояние + 1.0, ожидаемый + 1.0) для обработки нулевых значений. – JadziaMD

+0

JadziaMD: Верно, спасибо, ответ отредактирован. –