diff options
-rw-r--r-- | tests/validation/CL/HarrisCorners.cpp | 2 | ||||
-rw-r--r-- | tests/validation/Validation.cpp | 26 | ||||
-rw-r--r-- | tests/validation/Validation.h | 2 |
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 |