Я хочу запустить несколько модульных тестов в своем приложении OpenGL. Это вызывало у меня несколько проблем в прошлом (разница в отрисовке OpenGL между двумя компьютерами ) но теперь я знаю, что я могу и не могу делать.
Вот небольшой тест, который я написал для проверки рендеринга:
QImage display(grabFrameBuffer());
QImage wanted(PATH_TO_RESSOURCES + "/file_010.bmp");
int Qimage_width = display.width();
int Qimage_height = display.height();
for(int i = 1; i < Qimage_width; i++) {
for(int j = 1; j < Qimage_height; j++) {
if(QColor(display.pixel(i, j)).name() != QColor(wanted.pixel(i, j)).name()) {
qDebug() << "different pixel detected" << i << j;
}
}
}
QVERIFY(wanted == display);
QVERIFY() завершается ошибкой, но сообщение "different pixel detected" << i << j
никогда не отображается. Если я сравню файлы с Photoshop (см. фото .stackexchange), я не могу найти другой пиксель. Я немного потерян.
Редактировать: я использую Qt 5.2, и если я вручную изменяю один пиксель в файле_010.bmp, отображается сообщение об ошибке "different pixel detected" << i << j
.
#00ff00
), если код отличается, пиксель не совпадает. - person Thomas Ayoub   schedule 06.05.2014operator==
будет считать изображения неравными, если формат отличается. Я подозреваю, чтоgrabFrameBuffer()
может дать вам изображение в формате, отличном от чтения BMP. - person Reto Koradi   schedule 06.05.2014QImage(+ PATH_TO_RESSOURCES, ...
также есть что-то похожее на случайный знак+
. Не уверен, как это компилируется. Не могли бы вы просто сравнить сwanted
, что вы уже прочитали выше? - person Reto Koradi   schedule 06.05.2014wanted
. + PATH... является опечаткой, аoperator==
работает с некоторыми другими файлами bmp по сравнению с Grabframebuffer(). - person Thomas Ayoub   schedule 06.05.2014QImage::operator==
показывает, что он вернет false, если высота, ширина или формат двух изображений не идентичны. Даже еслиdifferent pixel detected
никогда не распечатывается, любая из этих вещей может отличаться. - person RA.   schedule 06.05.2014QVERIFY
не работает. Вам нужно перепроверить, что высота, ширина и формат идентичны. Кроме того, вы не проверяете все пиксели в циклеfor
— индексы должны начинаться с0
, а не с1
. - person RA.   schedule 06.05.2014