aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tests/validation/CL/HarrisCorners.cpp2
-rw-r--r--tests/validation/Validation.cpp26
-rw-r--r--tests/validation/Validation.h2
3 files changed, 20 insertions, 10 deletions
diff --git a/tests/validation/CL/HarrisCorners.cpp b/tests/validation/CL/HarrisCorners.cpp
index dca2c79baf..6370c4d972 100644
--- a/tests/validation/CL/HarrisCorners.cpp
+++ b/tests/validation/CL/HarrisCorners.cpp
@@ -178,7 +178,7 @@ BOOST_DATA_TEST_CASE(RunSmall, Small2DShapes() * BorderModes() * boost::unit_tes
// Validate output
dst.map();
- validate(dst, ref_dst);
+ validate(dst, ref_dst, 1);
dst.unmap();
}
diff --git a/tests/validation/Validation.cpp b/tests/validation/Validation.cpp
index 887c7c45d8..d321e63d77 100644
--- a/tests/validation/Validation.cpp
+++ b/tests/validation/Validation.cpp
@@ -442,9 +442,11 @@ void validate(float target, float ref, float tolerance_abs_error, float toleranc
BOOST_TEST(equal);
}
-void validate(IArray<KeyPoint> &target, IArray<KeyPoint> &ref)
+void validate(IArray<KeyPoint> &target, IArray<KeyPoint> &ref, int64_t tolerance)
{
- BOOST_TEST(target.num_values() == ref.num_values());
+ int64_t num_mismatches = 0;
+
+ BOOST_TEST_WARN(target.num_values() == ref.num_values());
for(size_t i = 0; i < target.num_values(); ++i)
{
@@ -453,14 +455,22 @@ void validate(IArray<KeyPoint> &target, IArray<KeyPoint> &ref)
return key.x == target.at(i).x && key.y == target.at(i).y;
});
- BOOST_TEST(ref_val != ref.buffer() + ref.num_values());
- BOOST_TEST(target.at(i).tracking_status == ref_val->tracking_status);
+ const KeyPoint &key = target.at(i);
- validate(target.at(i).strength, ref_val->strength);
- validate(target.at(i).scale, ref_val->scale);
- validate(target.at(i).orientation, ref_val->orientation);
- validate(target.at(i).error, ref_val->error);
+ if((ref_val == ref.buffer() + ref.num_values()) || !(is_equal(key.strength, ref_val->strength) && is_equal(key.scale, ref_val->scale) && is_equal(key.orientation, ref_val->orientation)
+ && is_equal(key.tracking_status, ref_val->tracking_status) && is_equal(key.error, ref_val->error)))
+ {
+ ++num_mismatches;
+
+ BOOST_TEST_WARN(is_equal(key.strength, ref_val->strength));
+ BOOST_TEST_WARN(is_equal(key.scale, ref_val->scale));
+ BOOST_TEST_WARN(is_equal(key.orientation, ref_val->orientation));
+ BOOST_TEST_WARN(is_equal(key.tracking_status, ref_val->tracking_status));
+ BOOST_TEST_WARN(is_equal(key.error, ref_val->error));
+ }
}
+
+ BOOST_TEST(num_mismatches <= tolerance);
}
} // namespace validation
} // namespace test
diff --git a/tests/validation/Validation.h b/tests/validation/Validation.h
index f95859d029..57013312e1 100644
--- a/tests/validation/Validation.h
+++ b/tests/validation/Validation.h
@@ -186,7 +186,7 @@ void validate_min_max_loc(T min, T ref_min, T max, T ref_max,
*
* - All values should match
*/
-void validate(IArray<KeyPoint> &target, IArray<KeyPoint> &ref);
+void validate(IArray<KeyPoint> &target, IArray<KeyPoint> &ref, int64_t tolerance = 0);
} // namespace validation
} // namespace test
} // namespace arm_compute