Jestem nowym użytkownikiem CATCH i zastanawiam się, w jaki sposób można by przetestować, czy dwa std::vectors
są sobie równe.Sprawdź, czy dwa std :: wektory są równe przy użyciu CATCH C++ w ramach testu jednostkowego
My bardzo naiwna próba jest taka:
#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]);
}
Czy istnieje lepszy sposób to zrobić? Niektóre rzeczy jak magia REQUIRE_VECTOR_EQUAL
?
Również powyższe rozwiązanie przechodzi, jeśli jedna z tablic zawiera podwójne: {1.0, 2.0, 3.0}
; Jest w porządku, jeśli dwa wektory nie są uważane za równe z tego powodu.
Można jeszcze zrobić ' REQUIRE (vec_1 == vec_2); ' – Jarod42
@ Jarod42 Tak, dziękuję, to działa. Jedyną rzeczą jest, że jeśli 'vec_1' i' vec_2' są różnych typów danych, pojawia się błąd, zamiast, powiedz 'false'. – Akavall
@Akavall To nie będzie kompilacji, jeśli są one z różnych typów danych. Tak powinien działać mocno napisany język. –