darned floats
This commit is contained in:
@@ -14,7 +14,7 @@ func (deltas Deltas) Like(like ...Like) Deltas {
|
|||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
func (deltas Deltas) Register() (map[string]Balances, error) {
|
func (deltas Deltas) Register() map[string]Balances {
|
||||||
dateToBalances := map[string]Balances{}
|
dateToBalances := map[string]Balances{}
|
||||||
for _, delta := range deltas {
|
for _, delta := range deltas {
|
||||||
if _, ok := dateToBalances[delta.Date]; !ok {
|
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]])
|
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)
|
result := make(Balances)
|
||||||
for _, delta := range deltas {
|
for _, delta := range deltas {
|
||||||
if _, ok := result[delta.Name]; !ok {
|
if _, ok := result[delta.Name]; !ok {
|
||||||
@@ -48,5 +48,5 @@ func (deltas Deltas) Balances() (Balances, error) {
|
|||||||
result[delta.Name][delta.Currency] += delta.Value
|
result[delta.Name][delta.Currency] += delta.Value
|
||||||
}
|
}
|
||||||
|
|
||||||
return result, nil
|
return result
|
||||||
}
|
}
|
||||||
|
|||||||
24
ledger/deltas_test.go
Normal file
24
ledger/deltas_test.go
Normal file
@@ -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"][""][""])
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
@@ -116,20 +116,14 @@ func TestFileTestdata(t *testing.T) {
|
|||||||
})
|
})
|
||||||
|
|
||||||
t.Run("balances", func(t *testing.T) {
|
t.Run("balances", func(t *testing.T) {
|
||||||
balances, err := deltas.Balances()
|
balances := deltas.Balances()
|
||||||
if err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
for k, v := range balances {
|
for k, v := range balances {
|
||||||
t.Logf("%s: %+v", k, v)
|
t.Logf("%s: %+v", k, v)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("balances like", func(t *testing.T) {
|
t.Run("balances like", func(t *testing.T) {
|
||||||
balances, err := deltas.Like(LikeName(`^AssetAccount:`)).Balances()
|
balances := deltas.Like(LikeName(`^AssetAccount:`)).Balances()
|
||||||
if err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
for k, v := range balances {
|
for k, v := range balances {
|
||||||
t.Logf("%s: %+v", k, v)
|
t.Logf("%s: %+v", k, v)
|
||||||
}
|
}
|
||||||
@@ -162,20 +156,14 @@ func TestFileTestdata(t *testing.T) {
|
|||||||
})
|
})
|
||||||
|
|
||||||
t.Run("balances", func(t *testing.T) {
|
t.Run("balances", func(t *testing.T) {
|
||||||
balances, err := deltas.Balances()
|
balances := deltas.Balances()
|
||||||
if err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
for k, v := range balances {
|
for k, v := range balances {
|
||||||
t.Logf("%s: %+v", k, v)
|
t.Logf("%s: %+v", k, v)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("balances like", func(t *testing.T) {
|
t.Run("balances like", func(t *testing.T) {
|
||||||
balances, err := deltas.Like(LikeName(`AssetAccount:Cash:Fidelity76`)).Balances()
|
balances := deltas.Like(LikeName(`AssetAccount:Cash:Fidelity76`)).Balances()
|
||||||
if err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
for k, v := range balances {
|
for k, v := range balances {
|
||||||
t.Logf("%s: %+v", k, v)
|
t.Logf("%s: %+v", k, v)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user