Я новичок в использовании CATCH, и мне интересно, как можно было бы проверить, равны ли два std::vectors
.Испытайте, что два std :: вектора равны с помощью модульной тестовой среды CATCH C++
Моя очень наивная попытка это:
#define CATCH_CONFIG_MAIN
#include "catch.hpp"
#include <vector>
TEST_CASE("are vectors equal", "vectors")
{
std::vector<int> vec_1 = {1,2,3};
std::vector<int> vec_2 = {1,2,3};
REQUIRE (vec_1.size() == vec_2.size());
for (int i = 0; i < vec_1.size(); ++i)
REQUIRE (vec_1[i] == vec_2[i]);
}
Есть ли лучший способ сделать это? Что-то вроде магии REQUIRE_VECTOR_EQUAL
?
Кроме того, мое решение выше, если один массив содержит дублеты {1.0, 2.0, 3.0}
; Это нормально, если из-за этого два вектора не считаются равными.
Вы можете еще сделать ' REQUIRE (vec_1 == vec_2); ' – Jarod42
@ Jarod42 Да, спасибо, это действительно работает. Единственное, что если 'vec_1' и' vec_2' имеют разные типы данных, я получаю ошибку, а не, скажем, 'false'. – Akavall
@Akavall Это не скомпилируется, если они имеют разные типы данных. Вот как должен работать строго типизированный язык. –