//! 「General」分组自己的断言(M100 **新增**:`settings/tests.rs` 那 7 条全是跨 section 的, //! 一条 section 断言都没有;这 3 条是新增,不是搬移)。 //! //! **归 language+appearance 线**。接真控件那天要改**两个**文件(M101 r2 删掉了原先的第 3 处跨 //! section 绊线):`settings/general.rs` + 本文件 `the_general_group_is_still_demo_rows`。 use super::super::general; use unlucky_design::icons::IconKind; /// 这一组的行集合(标签 + 值)。改文案就是改观感,所以逐条钉住,而不是「非空就行」。 /// /// 抓得住:① 四条线并行合并时把别人的行粘到本文件(四份 `GROUP` 长得几乎一样,最容易整块贴错); /// ② 漏掉/多出一条行;③ 标签与值错位(`("Theme", "Follow system")` 被写成 `("Theme", "Instances")`)。 /// 抓不住:值对不对(`"Follow system"` 是不是当前系统主题的真相)——那是接线后真数据源的事。 #[test] fn the_general_group_shows_language_theme_startup_and_close() { let rows: Vec<(&str, &str)> = general::GROUP.rows.to_vec(); assert_eq!( rows, vec![ ("Language", "English (System)"), ("Theme", "Follow system"), ("Startup page", "Instances"), ("Close button", "Exit to tray"), ] ); } /// 左列图标(`IconKind::Settings`)。分组图标是左列的语义标签,换掉就是换观感。 #[test] fn the_general_group_keeps_its_icon() { assert_eq!(general::GROUP.icon, IconKind::Settings); } /// **绊线**:这一组还没接真控件,画的是演示行。 /// /// 抓得住:language+appearance 线接上了 `body` 却没更新这里的期望(那会让本文件静默变成假绿)。 /// 抓不住:界面上真控件长什么样。 /// /// 接真控件时:把 `is_none()` 改成 `is_some()`,**只改这一行**(M101 r2 起不必再去 /// `tests/mod.rs` 报到:那条跨 section 聚合绊线已删)。 #[test] fn the_general_group_is_still_demo_rows() { assert!( general::GROUP.body.is_none(), "General 还没接真控件:接了就改本断言" ); }