Ich bin neu in der Verwendung von CATCH, und ich frage mich, wie man testen würde, ob zwei std::vectors
gleich sind.Testen Sie, dass zwei std :: Vektoren sind gleich mit CATCH C++ Unit-Test-Framework
Mein sehr naiver Versuch ist dies:
#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]);
}
Gibt es einen besseren Weg, dies zu tun? Etwas wie Magie REQUIRE_VECTOR_EQUAL
?
Auch meine obige Lösung wird übergeben, wenn ein Array enthalten verdoppelt {1.0, 2.0, 3.0}
; Es ist in Ordnung, wenn zwei Vektoren nicht als gleichwertig betrachtet werden.
Sie können noch tun ' REQUIRE (vec_1 == vec_2); ' – Jarod42
@ Jarod42 Ja, danke, das funktioniert. Die einzige Sache ist, dass, wenn 'vec_1' und' vec_2' unterschiedliche Datentypen haben, ich einen Fehler bekomme, anstatt "false" zu sagen. – Akavall
@Akavall Es wird nicht kompiliert, wenn sie von verschiedenen Datentypen sind. So soll eine stark typisierte Sprache funktionieren. –