ana-ledger/ana/legacy_contributions_test.go

54 lines
1.8 KiB
Go

package ana
import (
"testing"
"time"
"gogs.inhome.blapointe.com/ana-ledger/ledger"
)
func TestRegisterPrediction(t *testing.T) {
t.Run("contribution", func(t *testing.T) {
input := newTestRegister()
got, err := RegisterWithContributionPrediction(input, time.Hour*24*365)
if err != nil {
t.Fatal(err)
}
t.Logf("%+v", got)
if len(got) != len(input)+13 {
t.Error(len(got))
}
for _, date := range got.Dates() {
for _, name := range got.Names() {
t.Logf("%s | %s = %+v", date, name, got[date][name])
if ti, _ := dateToTime(date); ti.After(time.Now().Add(time.Hour*24*60)) && got[date][name]["XYZ"] == 0 {
t.Error("predicting future contributions lost unmodified currency", got[date][name])
}
}
}
})
}
func newTestRegister() map[string]ledger.Balances {
s := func(t time.Time) string {
return t.Format("2006-01")
}
day := time.Hour * 24
lastYear := time.Now().Add(-1 * day * time.Duration(time.Now().YearDay()))
return map[string]ledger.Balances{
s(lastYear.Add(day * 0)): ledger.Balances{"X": ledger.Balance{ledger.USD: 1}},
s(lastYear.Add(day * 32)): ledger.Balances{"X": ledger.Balance{ledger.USD: 2}},
s(lastYear.Add(day * 64)): ledger.Balances{"X": ledger.Balance{ledger.USD: 3}},
s(lastYear.Add(day * 94)): ledger.Balances{"X": ledger.Balance{ledger.USD: 4}},
s(lastYear.Add(day * 124)): ledger.Balances{"X": ledger.Balance{ledger.USD: 5}},
s(lastYear.Add(day * 154)): ledger.Balances{"X": ledger.Balance{ledger.USD: 6}},
s(lastYear.Add(day * 184)): ledger.Balances{"X": ledger.Balance{ledger.USD: 8}},
s(lastYear.Add(day * 214)): ledger.Balances{"X": ledger.Balance{ledger.USD: 10}},
s(lastYear.Add(day * 244)): ledger.Balances{"X": ledger.Balance{ledger.USD: 12}},
s(lastYear.Add(day * 274)): ledger.Balances{"X": ledger.Balance{ledger.USD: 16, "XYZ": 1}},
}
}