From dbd8a99a615a55ce00e2b9083c89f2c55bbf555e Mon Sep 17 00:00:00 2001 From: baldurk Date: Thu, 25 Jul 2019 12:25:40 +0100 Subject: [PATCH] Allow a custom epsilon for value comparisons in tests --- util/test/rdtest/util.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/util/test/rdtest/util.py b/util/test/rdtest/util.py index 5b3efea5e..4664e5fa7 100644 --- a/util/test/rdtest/util.py +++ b/util/test/rdtest/util.py @@ -240,7 +240,7 @@ def zip_compare(test_file: str, ref_file: str): FLT_EPSILON = 2.0*1.19209290E-07 -def value_compare(ref, data): +def value_compare(ref, data, eps=FLT_EPSILON): if type(ref) == float: if type(data) != float: return False @@ -259,7 +259,7 @@ def value_compare(ref, data): # Floats are equal if the absolute difference is less than epsilon times the largest. largest = max(abs(ref), abs(data)) - eps = largest * FLT_EPSILON if largest > 1.0 else FLT_EPSILON + eps = largest * eps if largest > 1.0 else eps return abs(ref-data) < eps elif type(ref) == list or type(ref) == tuple: # tuples and lists can be treated interchangeably @@ -271,7 +271,7 @@ def value_compare(ref, data): return False for i in range(len(ref)): - if not value_compare(ref[i], data[i]): + if not value_compare(ref[i], data[i], eps): return False return True @@ -285,7 +285,7 @@ def value_compare(ref, data): return False for i in ref.keys(): - if not value_compare(ref[i], data[i]): + if not value_compare(ref[i], data[i], eps): return False return True