impl ledger.Register.Between
parent
0c50ee5a89
commit
d93a3560da
|
|
@ -36,3 +36,13 @@ func NewInterestPredictor(namePattern string, currencyPattern string, apy float6
|
||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func NewContributionPredictor(reg ledger.Register) Predictor {
|
||||||
|
monthlyRate := getMonthlyContributionRate(reg)
|
||||||
|
return func(given ledger.Balances, delta time.Duration) ledger.Balances {
|
||||||
|
panic(nil)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func getMonthlyContributionRate(reg ledger.Register) map[string]ledger.Balance {
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@ package ledger
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"maps"
|
||||||
"slices"
|
"slices"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
@ -50,6 +51,18 @@ func (register Register) Dates() []string {
|
||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (register Register) Between(start, end time.Time) Register {
|
||||||
|
result := make(Register)
|
||||||
|
for k := range register {
|
||||||
|
t := mustDateToTime(k)
|
||||||
|
if t.Before(start) || t.After(end) {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
result[k] = maps.Clone(register[k])
|
||||||
|
}
|
||||||
|
return result
|
||||||
|
}
|
||||||
|
|
||||||
func (register Register) Times() []time.Time {
|
func (register Register) Times() []time.Time {
|
||||||
dates := register.Dates()
|
dates := register.Dates()
|
||||||
result := make([]time.Time, len(dates))
|
result := make([]time.Time, len(dates))
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,31 @@
|
||||||
|
package ledger
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestRegisterBetween(t *testing.T) {
|
||||||
|
reg := make(Register)
|
||||||
|
reg["2001-01"] = make(Balances)
|
||||||
|
reg["2002-01"] = make(Balances)
|
||||||
|
reg["2003-01"] = make(Balances)
|
||||||
|
reg["2004-01"] = make(Balances)
|
||||||
|
reg["2005-01"] = make(Balances)
|
||||||
|
|
||||||
|
start, _ := time.ParseInLocation("2006-01", "2002-01", time.Local)
|
||||||
|
end, _ := time.ParseInLocation("2006-01", "2004-01", time.Local)
|
||||||
|
got := reg.Between(start, end)
|
||||||
|
if len(got) != 3 {
|
||||||
|
t.Error(len(got))
|
||||||
|
}
|
||||||
|
if _, ok := got["2002-01"]; !ok {
|
||||||
|
t.Error("2002-01")
|
||||||
|
}
|
||||||
|
if _, ok := got["2003-01"]; !ok {
|
||||||
|
t.Error("2003-01")
|
||||||
|
}
|
||||||
|
if _, ok := got["2004-01"]; !ok {
|
||||||
|
t.Error("2004-01")
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue