summaryrefslogtreecommitdiff
path: root/projects/SelfTest/UsageTests/Matchers.tests.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'projects/SelfTest/UsageTests/Matchers.tests.cpp')
-rw-r--r--projects/SelfTest/UsageTests/Matchers.tests.cpp58
1 files changed, 58 insertions, 0 deletions
diff --git a/projects/SelfTest/UsageTests/Matchers.tests.cpp b/projects/SelfTest/UsageTests/Matchers.tests.cpp
index dc4b701d..b0b5d58e 100644
--- a/projects/SelfTest/UsageTests/Matchers.tests.cpp
+++ b/projects/SelfTest/UsageTests/Matchers.tests.cpp
@@ -215,6 +215,16 @@ namespace { namespace MatchersTests {
v2.push_back(1);
v2.push_back(2);
+ std::vector<double> v3;
+ v3.push_back(1);
+ v3.push_back(2);
+ v3.push_back(3);
+
+ std::vector<double> v4;
+ v4.push_back(1 + 1e-8);
+ v4.push_back(2 + 1e-8);
+ v4.push_back(3 + 1e-8);
+
std::vector<int> empty;
SECTION("Contains (element)") {
@@ -267,6 +277,16 @@ namespace { namespace MatchersTests {
v2.push_back(1);
v2.push_back(2);
+ std::vector<double> v3;
+ v3.push_back(1);
+ v3.push_back(2);
+ v3.push_back(3);
+
+ std::vector<double> v4;
+ v4.push_back(1.1);
+ v4.push_back(2.1);
+ v4.push_back(3.1);
+
std::vector<int> empty;
SECTION("Contains (element)") {
@@ -440,6 +460,44 @@ namespace { namespace MatchersTests {
REQUIRE_THAT("foo", Predicate<const char*>([] (const char* const&) { return true; }));
}
+ TEST_CASE("Vector Approx matcher", "[matchers][approx][vector]") {
+ using Catch::Matchers::Approx;
+ SECTION("Empty vector is roughly equal to an empty vector") {
+ std::vector<double> empty;
+ REQUIRE_THAT(empty, Approx(empty));
+ }
+ SECTION("Vectors with elements") {
+ std::vector<double> v1({1., 2., 3.});
+ SECTION("A vector is approx equal to itself") {
+ REQUIRE_THAT(v1, Approx(v1));
+ }
+ std::vector<double> v2({1.5, 2.5, 3.5});
+ SECTION("Different length") {
+ auto temp(v1);
+ temp.push_back(4);
+ REQUIRE_THAT(v1, !Approx(temp));
+ }
+ SECTION("Same length, different elements") {
+ REQUIRE_THAT(v1, !Approx(v2));
+ REQUIRE_THAT(v1, Approx(v2).margin(0.5));
+ REQUIRE_THAT(v1, Approx(v2).epsilon(0.5));
+ REQUIRE_THAT(v1, Approx(v2).epsilon(0.1).scale(500));
+ }
+ }
+ }
+
+ TEST_CASE("Vector Approx matcher -- failing", "[matchers][approx][vector][.failing]") {
+ using Catch::Matchers::Approx;
+ SECTION("Empty and non empty vectors are not approx equal") {
+ std::vector<double> empty, t1({1, 2});
+ CHECK_THAT(empty, Approx(t1));
+ }
+ SECTION("Just different vectors") {
+ std::vector<double> v1({2., 4., 6.}), v2({1., 3., 5.});
+ CHECK_THAT(v1, Approx(v2));
+ }
+ }
+
} } // namespace MatchersTests
#endif // CATCH_CONFIG_DISABLE_MATCHERS