package ana import ( "fmt" "maps" "testing" "time" "gogs.inhome.blapointe.com/ana-ledger/ledger" ) func TestPredictionPredict(t *testing.T) { inc := func(b ledger.Balances, _ time.Duration) ledger.Balances { result := make(ledger.Balances) for k, v := range b { result[k] = maps.Clone(v) for k2, v2 := range result[k] { result[k][k2] = v2 + 1 } } return result } double := func(b ledger.Balances, _ time.Duration) ledger.Balances { result := make(ledger.Balances) for k, v := range b { result[k] = maps.Clone(v) for k2, v2 := range result[k] { result[k][k2] = v2 * 2 } } return result } from := time.Now() these := []time.Time{time.Now().Add(time.Hour * 24 * 365 / 12)} theseK := these[0].Format("2006-01") _, _ = inc, double cases := map[string]struct { prediction Prediction given ledger.Balances want ledger.Register }{ "empty": { want: ledger.Register{theseK: {}}, }, } for name, d := range cases { c := d t.Run(name, func(t *testing.T) { got := c.prediction.predict(c.given, from, these) if fmt.Sprintf("%+v", got) != fmt.Sprintf("%+v", c.want) { t.Errorf("want\n\t%+v, got\n\t%+v", c.want, got) } }) } }