From 39fa977f71cea8f641d801df23d9c76b85d4a861 Mon Sep 17 00:00:00 2001 From: Brett Smith Date: Thu, 4 Jun 2020 10:49:55 -0400 Subject: [PATCH] reports: Balance.le/ge_zero returns False when exactly at tolerance. --- conservancy_beancount/reports/core.py | 6 ++++-- tests/test_reports_balance.py | 4 ++++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/conservancy_beancount/reports/core.py b/conservancy_beancount/reports/core.py index 2c5aaf5..aab80c1 100644 --- a/conservancy_beancount/reports/core.py +++ b/conservancy_beancount/reports/core.py @@ -167,11 +167,13 @@ class Balance(Mapping[str, data.Amount]): def ge_zero(self) -> bool: """Returns true if all amounts in the balance >= 0, within tolerance.""" - return self._all_amounts(operator.ge, -self.tolerance) + op_func = operator.gt if self.tolerance else operator.ge + return self._all_amounts(op_func, -self.tolerance) def le_zero(self) -> bool: """Returns true if all amounts in the balance <= 0, within tolerance.""" - return self._all_amounts(operator.le, self.tolerance) + op_func = operator.lt if self.tolerance else operator.le + return self._all_amounts(op_func, self.tolerance) def format(self, fmt: Optional[str]='#,#00.00 ¤¤', diff --git a/tests/test_reports_balance.py b/tests/test_reports_balance.py index 8ab0a58..93a918f 100644 --- a/tests/test_reports_balance.py +++ b/tests/test_reports_balance.py @@ -112,6 +112,8 @@ def test_eq_zero(mapping, expected): ({'JPY': 10, 'BRL': 20}, True), ({'USD': '0.00015'}, True), ({'EUR': '-0.00052'}, True), + ({'RUB': core.Balance.TOLERANCE}, True), + ({'RUB': -core.Balance.TOLERANCE}, False), ]) def test_ge_zero(mapping, expected): balance = core.Balance(amounts_from_map(mapping)) @@ -129,6 +131,8 @@ def test_ge_zero(mapping, expected): ({'JPY': 10, 'BRL': 20}, False), ({'USD': '0.00015'}, True), ({'EUR': '-0.00052'}, True), + ({'RUB': core.Balance.TOLERANCE}, False), + ({'RUB': -core.Balance.TOLERANCE}, True), ]) def test_le_zero(mapping, expected): balance = core.Balance(amounts_from_map(mapping))