From d87213a5f17e3a6b6cd8a385d97e93203c3cb25b Mon Sep 17 00:00:00 2001 From: Eddie Hebert Date: Wed, 27 Mar 2013 13:36:59 -0400 Subject: [PATCH] MAINT: Adds floating point tolerance to risk metric comparison tests. In preparation of changing how risk metrics are calculated, this makes the checking of results more tolerant to floating point rounding, since upcoming changes change the results by a neglible margin. --- tests/test_risk_compare_batch_iterative.py | 44 +++++++++++++++------- 1 file changed, 30 insertions(+), 14 deletions(-) diff --git a/tests/test_risk_compare_batch_iterative.py b/tests/test_risk_compare_batch_iterative.py index c6ad2701..4de3fab3 100644 --- a/tests/test_risk_compare_batch_iterative.py +++ b/tests/test_risk_compare_batch_iterative.py @@ -13,7 +13,7 @@ # See the License for the specific language governing permissions and # limitations under the License. - +import numbers import unittest import datetime import pytz @@ -97,12 +97,16 @@ class RiskCompareIterativeToBatch(unittest.TestCase): self.assertEqual( risk_metrics_original.treasury_period_return, risk_metrics_refactor.treasury_period_return) - self.assertEqual( + np.testing.assert_allclose( risk_metrics_original.benchmark_returns, - risk_metrics_refactor.benchmark_returns) - self.assertEqual( + risk_metrics_refactor.benchmark_returns, + rtol=0.001 + ) + np.testing.assert_allclose( risk_metrics_original.algorithm_returns, - risk_metrics_refactor.algorithm_returns) + risk_metrics_refactor.algorithm_returns, + rtol=0.001 + ) risk_original_dict = risk_metrics_original.to_dict() risk_refactor_dict = risk_metrics_refactor.to_dict() self.assertEqual(set(risk_original_dict.keys()), @@ -122,12 +126,24 @@ class RiskCompareIterativeToBatch(unittest.TestCase): truth=risk_original_dict[measure], returned=risk_refactor_dict[measure])) else: - np.testing.assert_equal( - risk_original_dict[measure], - risk_refactor_dict[measure], - err_msg_format.format( - iter=i, - measure=measure, - truth=risk_original_dict[measure], - returned=risk_refactor_dict[measure]) - ) + if isinstance(risk_original_dict[measure], numbers.Real): + np.testing.assert_allclose( + risk_original_dict[measure], + risk_refactor_dict[measure], + rtol=0.001, + err_msg=err_msg_format.format( + iter=i, + measure=measure, + truth=risk_original_dict[measure], + returned=risk_refactor_dict[measure]) + ) + else: + np.testing.assert_equal( + risk_original_dict[measure], + risk_refactor_dict[measure], + err_msg=err_msg_format.format( + iter=i, + measure=measure, + truth=risk_original_dict[measure], + returned=risk_refactor_dict[measure]) + )