impl ledger.Register.Between
parent
0c50ee5a89
commit
d93a3560da
|
|
@ -36,3 +36,13 @@ func NewInterestPredictor(namePattern string, currencyPattern string, apy float6
|
|||
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 (
|
||||
"fmt"
|
||||
"maps"
|
||||
"slices"
|
||||
"time"
|
||||
)
|
||||
|
|
@ -50,6 +51,18 @@ func (register Register) Dates() []string {
|
|||
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 {
|
||||
dates := register.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