"""测试脚本"""
from mcp_reminder.storage import JSONStorage
from mcp_reminder.models import Alarm, Todo, parse_time
from datetime import datetime, timedelta
def test_storage():
"""测试存储功能"""
print("=" * 50)
print("测试存储功能")
print("=" * 50)
storage = JSONStorage("data")
# 测试添加闹钟
print("\n1. 测试添加闹钟")
future_time = (datetime.now() + timedelta(minutes=2)).isoformat()
alarm = Alarm(time=future_time, description="测试闹钟")
storage.add_alarm(alarm)
print(f"[OK] 添加闹钟成功: {alarm.time}, 描述: {alarm.description}")
# 测试添加待办
print("\n2. 测试添加待办事项")
todo = Todo(
title="完成MCP服务开发",
description="编写代码和文档",
remind_time=(datetime.now() + timedelta(minutes=1)).isoformat()
)
storage.add_todo(todo)
print(f"[OK] 添加待办成功: {todo.title}, 提醒时间: {todo.remind_time}")
# 测试时间解析
print("\n3. 测试时间解析")
test_times = [
"2025-09-02 14:30",
"明天",
"2小时后",
]
for time_str in test_times:
parsed = parse_time(time_str)
print(f" {time_str} -> {parsed}")
# 测试模糊匹配
print("\n4. 测试待办标题模糊匹配")
match = storage.find_todo_by_title("MCP服务")
if match:
print(f"[OK] 匹配成功: {match.title}")
else:
print("[ERROR] 未匹配到")
# 测试列出所有待办
print("\n5. 列出所有待办事项")
todos = storage.load_todos()
print(f" 共有 {len(todos)} 个待办:")
for t in todos:
print(f" - [{t.status}] {t.title}")
# 测试完成待办
print("\n6. 测试完成待办")
if match:
match.status = "completed"
storage.update_todo(match)
print(f"[OK] 已完成待办: {match.title}")
print("\n" + "=" * 50)
print("所有测试完成!")
print("=" * 50)
if __name__ == "__main__":
test_storage()