from desktop_mark.models import Annotation, AnnotationProject, AnnotationType, Rect, WindowInfo from desktop_mark.storage import project_from_dict, project_to_dict def test_project_json_round_trip() -> None: project = AnnotationProject( window=WindowInfo(123, "记事本", "notepad.exe", Rect(1, 2, 300, 400)), custom_window_name="登录页", window_description="用户登录窗口", annotations=[ Annotation( id="a1", rect=Rect(10, 20, 30, 40), control_name="用户名输入框", description="输入登录用户名", type=AnnotationType.INPUT, actions=["input_text"], ) ], ) restored = project_from_dict(project_to_dict(project)) assert restored == project