From 39fa977f71cea8f641d801df23d9c76b85d4a861 2020-06-04 14:49:55 From: Brett Smith Date: 2020-06-04 14:49:55 Subject: [PATCH] reports: Balance.le/ge_zero returns False when exactly at tolerance. --- diff --git a/conservancy_beancount/reports/core.py b/conservancy_beancount/reports/core.py index 2c5aaf5096ad2f205e97e29f81276bd155c3aa47..aab80c13a4f5fd06afc83b69f0f55570d3dc34c8 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 8ab0a587b9cd9eb7089af14fcfd544200009a73d..93a918f14c0ac0a04de5dabbdd1645436dc3394d 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))