//! `instances` 的断言:演示数据与窄窗退化。 use super::*; use super::super::layout::{frame_metrics, measure_cap_px, PaneKit, WidthClass}; #[test] fn demo_rows_overflow_the_visible_list() { // 列表列要能滚动:条目数必须让内容高过可视区(760 窗高 − 标题栏 48 − 页头 84 − 页边距) let visible = 760.0 - 48.0 - 84.0 - 2.0 * WidthClass::Expanded.gutter(); let row_height = 44.0 + Space::X3.dp(); let content = DEMO.len() as f32 * row_height; assert!( content > visible, "列表内容 {content} 不比可视区 {visible} 高,截图里看不到独立滚动条" ); } #[test] fn every_demo_entry_has_name_version_and_loader() { for entry in &DEMO { assert!(!entry.name.is_empty()); assert!(!entry.version.is_empty()); assert!(!entry.loader.is_empty()); } assert!(SELECTED < DEMO.len()); } #[test] fn detail_paragraph_is_long_enough_to_wrap() { // 行宽上限 ≈ 72 字符/行;写够几行才看得出断行位置 assert!(NOTE.len() > 200, "正文档太短,看不出行宽上限"); } #[test] fn narrow_widths_switch_the_page_to_one_column() { // 1180 / 900 → 两列;700 → 单列(整页切换) assert_eq!( frame_metrics(PaneKit::ListDetail, 1180.0).layout, PageLayout::ListDetail ); assert_eq!( frame_metrics(PaneKit::ListDetail, 700.0).layout, PageLayout::SingleColumn ); // 窄窗下详情不吃满窗口:正文列仍 ≤ 行宽上限 let narrow = frame_metrics(PaneKit::ListDetail, 700.0); assert!(narrow.column <= measure_cap_px() + f32::EPSILON); assert!(narrow.secondary.is_none()); }