You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
64 lines
1.9 KiB
64 lines
1.9 KiB
package comm
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
func TestMemoryRelativeRange(t *testing.T) {
|
|
loc := time.UTC
|
|
// 2026-09-05 是周六
|
|
now := time.Date(2026, 9, 5, 12, 0, 0, 0, loc)
|
|
|
|
cases := []struct{ kind, start, end string }{
|
|
{"today", "2026-09-05", "2026-09-05"},
|
|
{"yesterday", "2026-09-04", "2026-09-04"},
|
|
// ISO 周:周一起,所以本周是 08-31(周一) ~ 09-06(周日)
|
|
{"this_week", "2026-08-31", "2026-09-06"},
|
|
{"last_week", "2026-08-24", "2026-08-30"},
|
|
{"this_month", "2026-09-01", "2026-09-30"},
|
|
{"last_month", "2026-08-01", "2026-08-31"},
|
|
{"next_7_days", "2026-09-05", "2026-09-12"},
|
|
{"last_7_days", "2026-08-29", "2026-09-05"},
|
|
}
|
|
for _, c := range cases {
|
|
s, e, err := MemoryRelativeRange(c.kind, now)
|
|
if err != nil {
|
|
t.Errorf("%s: 报错 %v", c.kind, err)
|
|
continue
|
|
}
|
|
if s != c.start || e != c.end {
|
|
t.Errorf("%s: 期望 %s~%s 得到 %s~%s", c.kind, c.start, c.end, s, e)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestMemoryRelativeRange_Unknown(t *testing.T) {
|
|
if _, _, err := MemoryRelativeRange("last_fortnight", time.Now()); err == nil {
|
|
t.Error("不认识的范围必须报错,不能静默返回一个区间")
|
|
}
|
|
}
|
|
|
|
func TestNormalizeMemoryCategories(t *testing.T) {
|
|
got, bad := NormalizeMemoryCategories([]string{"todo", "TODO", " idea ", "nonsense", ""})
|
|
if bad != "nonsense" {
|
|
t.Errorf("应报出第一个非法分类 nonsense,得到 %q", bad)
|
|
}
|
|
// 大小写与空格都要归一
|
|
want := []string{"todo", "todo", "idea"}
|
|
if len(got) != len(want) {
|
|
t.Fatalf("期望 %d 个合法分类,得到 %d: %v", len(want), len(got), got)
|
|
}
|
|
for i := range want {
|
|
if got[i] != want[i] {
|
|
t.Errorf("第 %d 个:期望 %s 得到 %s", i, want[i], got[i])
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestNormalizeMemoryCategories_AllValid(t *testing.T) {
|
|
_, bad := NormalizeMemoryCategories([]string{"todo", "alarm", "idea", "expense"})
|
|
if bad != "" {
|
|
t.Errorf("全部合法时不该报错,却得到 %q", bad)
|
|
}
|
|
}
|
|
|