Сравните вектор двойников с помощью CatchC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Сравните вектор двойников с помощью Catch

Сообщение Anonymous »

Я использую среду модульного тестирования Catch и хочу сравнить вектор двойных значений. В этом другом ответе предлагается использовать Approx для сравнения значений с плавающей запятой/двойных значений, но это не работает для их вектора. Есть ли удобный способ сделать это?

РЕДАКТИРОВАТЬ: пример

С помощью следующего кода:

Код: Выделить всё

#define CATCH_CONFIG_MAIN
#include "catch.hpp"

TEST_CASE("Compare Vectors", "[vector]") {
std::vector vec1 = {0, 1, 2, 3};
std::vector vec2 = {0, 1, 2, 4};
REQUIRE(vec1 == vec2);
}
Тест не пройден со следующим отчетом:

Код: Выделить всё

-------------------------------------------------------------------------------
Compare Vectors
-------------------------------------------------------------------------------
test/UnitTests/test_Example/example.cc:4
...............................................................................

test/UnitTests/test_Example/example.cc:7: FAILED:
REQUIRE( vec1 == vec2 )
with expansion:
{ 0, 1, 2, 3 } == { 0, 1, 2, 4 }

===============================================================================
test cases: 1 | 1 failed
assertions: 1 | 1 failed
Но если я изменю код следующим образом, я бы хотел, чтобы тест прошел, но, очевидно, этого не происходит.

Код: Выделить всё

#define CATCH_CONFIG_MAIN
#include "catch.hpp"

TEST_CASE("Compare Vectors", "[vector]") {
std::vector vec1 = {0, 1, 2, 3};
std::vector vec2 = {0, 1, 2, 3.000001};
REQUIRE(vec1 == vec2);
}
Я мог бы перебрать элементы и сравнить их один за другим, но в случае несоответствия будет сложнее определить источник ошибки .

Подробнее здесь: https://stackoverflow.com/questions/418 ... sing-catch
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»