Сравните вектор двойников с помощью 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

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