From 6cc34f7f42f9b955d05525ab536324aa85946114 Mon Sep 17 00:00:00 2001 From: Bel LaPointe Date: Wed, 25 Oct 2023 07:36:44 -0600 Subject: [PATCH] darned floats --- ledger/deltas.go | 8 ++++---- ledger/deltas_test.go | 24 ++++++++++++++++++++++++ ledger/file_test.go | 20 ++++---------------- 3 files changed, 32 insertions(+), 20 deletions(-) create mode 100644 ledger/deltas_test.go diff --git a/ledger/deltas.go b/ledger/deltas.go index d69d280..4e779e1 100644 --- a/ledger/deltas.go +++ b/ledger/deltas.go @@ -14,7 +14,7 @@ func (deltas Deltas) Like(like ...Like) Deltas { return result } -func (deltas Deltas) Register() (map[string]Balances, error) { +func (deltas Deltas) Register() map[string]Balances { dateToBalances := map[string]Balances{} for _, delta := range deltas { if _, ok := dateToBalances[delta.Date]; !ok { @@ -33,10 +33,10 @@ func (deltas Deltas) Register() (map[string]Balances, error) { } dateToBalances[dates[i]].PushAll(dateToBalances[dates[i-1]]) } - return dateToBalances, nil + return dateToBalances } -func (deltas Deltas) Balances() (Balances, error) { +func (deltas Deltas) Balances() Balances { result := make(Balances) for _, delta := range deltas { if _, ok := result[delta.Name]; !ok { @@ -48,5 +48,5 @@ func (deltas Deltas) Balances() (Balances, error) { result[delta.Name][delta.Currency] += delta.Value } - return result, nil + return result } diff --git a/ledger/deltas_test.go b/ledger/deltas_test.go new file mode 100644 index 0000000..00526a2 --- /dev/null +++ b/ledger/deltas_test.go @@ -0,0 +1,24 @@ +package ledger + +import "testing" + +func TestDeltas(t *testing.T) { + t.Run("register", func(t *testing.T) { + deltas := Deltas{ + {Date: "a", Value: 0.1}, + {Date: "a", Value: 2.2}, + {Date: "b", Value: 4.3}, + } + got := deltas.Register() + t.Logf("%+v", got) + if len(got) != 2 { + t.Error(len(got)) + } + if int(10*got["a"][""][""]) != 23 { + t.Error(got["a"][""][""]) + } + if int(10*got["b"][""][""]) != 66 { + t.Error(got["b"][""][""]) + } + }) +} diff --git a/ledger/file_test.go b/ledger/file_test.go index c9eebd1..251910e 100644 --- a/ledger/file_test.go +++ b/ledger/file_test.go @@ -116,20 +116,14 @@ func TestFileTestdata(t *testing.T) { }) t.Run("balances", func(t *testing.T) { - balances, err := deltas.Balances() - if err != nil { - t.Fatal(err) - } + balances := deltas.Balances() for k, v := range balances { t.Logf("%s: %+v", k, v) } }) t.Run("balances like", func(t *testing.T) { - balances, err := deltas.Like(LikeName(`^AssetAccount:`)).Balances() - if err != nil { - t.Fatal(err) - } + balances := deltas.Like(LikeName(`^AssetAccount:`)).Balances() for k, v := range balances { t.Logf("%s: %+v", k, v) } @@ -162,20 +156,14 @@ func TestFileTestdata(t *testing.T) { }) t.Run("balances", func(t *testing.T) { - balances, err := deltas.Balances() - if err != nil { - t.Fatal(err) - } + balances := deltas.Balances() for k, v := range balances { t.Logf("%s: %+v", k, v) } }) t.Run("balances like", func(t *testing.T) { - balances, err := deltas.Like(LikeName(`AssetAccount:Cash:Fidelity76`)).Balances() - if err != nil { - t.Fatal(err) - } + balances := deltas.Like(LikeName(`AssetAccount:Cash:Fidelity76`)).Balances() for k, v := range balances { t.Logf("%s: %+v", k, v) }