| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- package main
- import (
- "testing"
- "time"
- )
- // 验证提醒解析:带日期的完整格式
- func TestParseTodoReminderFull(t *testing.T) {
- item := parseTodoReminder("做作业 @ 2026-10-31 17:30")
- if item == nil {
- t.Fatal("应解析出提醒项")
- }
- if item.Text != "做作业" {
- t.Fatalf("文本错误: %q", item.Text)
- }
- want := time.Date(2026, 10, 31, 17, 30, 0, 0, time.Local)
- if !item.When.Equal(want) {
- t.Fatalf("时间错误: %v, want %v", item.When, want)
- }
- }
- // 验证提醒解析:无日期默认当天
- func TestParseTodoReminderToday(t *testing.T) {
- item := parseTodoReminder("开会 @ 15:00")
- if item == nil {
- t.Fatal("应解析出提醒项")
- }
- if item.Text != "开会" {
- t.Fatalf("文本错误: %q", item.Text)
- }
- now := time.Now()
- if item.When.Hour() != 15 || item.When.Minute() != 0 {
- t.Fatalf("时间错误: %v", item.When)
- }
- if item.When.Year() != now.Year() || item.When.Month() != now.Month() || item.When.Day() != now.Day() {
- t.Fatalf("应默认当天: %v", item.When)
- }
- }
- // 验证带 [x] 前缀的完成项也能解析出提醒
- func TestParseTodoReminderDone(t *testing.T) {
- item := parseTodoReminder("[x] 买牛奶 @ 08:30")
- if item == nil {
- t.Fatal("应解析出提醒项")
- }
- if item.Text != "买牛奶" {
- t.Fatalf("文本错误: %q", item.Text)
- }
- }
- // 验证无提醒标记的行返回 nil
- func TestParseTodoReminderNone(t *testing.T) {
- if item := parseTodoReminder("普通任务"); item != nil {
- t.Fatalf("无标记应返回 nil, 得到 %+v", item)
- }
- if item := parseTodoReminder("[x] 已完成"); item != nil {
- t.Fatalf("无标记完成项应返回 nil, 得到 %+v", item)
- }
- }
- // 验证非法格式返回 nil
- func TestParseTodoReminderInvalid(t *testing.T) {
- for _, line := range []string{"任务 @ 25:99", "任务 @ abc", "@ 10:00", "任务 @ 2026-13-01 10:00"} {
- if item := parseTodoReminder(line); item != nil {
- t.Fatalf("非法行 %q 应返回 nil, 得到 %+v", line, item)
- }
- }
- }
|