impl ledger.Register.Between
This commit is contained in:
@@ -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))
|
||||
|
||||
31
ledger/register_test.go
Normal file
31
ledger/register_test.go
Normal file
@@ -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")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user