From 0b945df7e828b6e144f0f1b2db8bc0ada0efffb0 Mon Sep 17 00:00:00 2001 From: Bel LaPointe Date: Wed, 25 Oct 2023 08:06:41 -0600 Subject: [PATCH] test balances zeroing and unzeroing --- ledger/deltas.go | 3 +++ ledger/deltas_test.go | 17 +++++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/ledger/deltas.go b/ledger/deltas.go index b654e6f..31d598b 100644 --- a/ledger/deltas.go +++ b/ledger/deltas.go @@ -50,6 +50,9 @@ func (deltas Deltas) Balances() Balances { result[delta.Name][delta.Currency] += delta.Value if result[delta.Name][delta.Currency] < 0.000000001 && result[delta.Name][delta.Currency] > -0.000000001 { delete(result[delta.Name], delta.Currency) + if len(result[delta.Name]) == 0 { + delete(result, delta.Name) + } } } diff --git a/ledger/deltas_test.go b/ledger/deltas_test.go index 00526a2..3f13859 100644 --- a/ledger/deltas_test.go +++ b/ledger/deltas_test.go @@ -3,6 +3,23 @@ package ledger import "testing" func TestDeltas(t *testing.T) { + t.Run("balances", func(t *testing.T) { + deltas := Deltas{ + {Name: "a", Value: 0}, + {Name: "b", Value: 1}, + {Name: "b", Value: -.999999999999999999999999}, + {Name: "b", Value: 1.3}, + } + + balances := deltas.Balances() + if len(balances) != 1 { + t.Error(len(balances), balances) + } + if balances["b"][""] != 1.3 { + t.Error(balances["b"]) + } + }) + t.Run("register", func(t *testing.T) { deltas := Deltas{ {Date: "a", Value: 0.1},