mirror of
https://github.com/Xevion/Pac-Man.git
synced 2025-12-07 20:07:46 -06:00
test: add more formatting tests
This commit is contained in:
@@ -19,7 +19,7 @@ fn get_formatted_output() -> impl IntoIterator<Item = String> {
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_formatting_alignment() {
|
||||
fn test_complex_formatting_alignment() {
|
||||
let mut colon_positions = vec![];
|
||||
let mut first_decimal_positions = vec![];
|
||||
let mut second_decimal_positions = vec![];
|
||||
@@ -93,3 +93,80 @@ fn test_formatting_alignment() {
|
||||
second_unit_positions
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_format_timing_display_basic() {
|
||||
let timing_data = vec![
|
||||
("render".to_string(), Duration::from_micros(1500), Duration::from_micros(200)),
|
||||
("input".to_string(), Duration::from_micros(300), Duration::from_micros(50)),
|
||||
("physics".to_string(), Duration::from_nanos(750), Duration::from_nanos(100)),
|
||||
];
|
||||
|
||||
let formatted = format_timing_display(timing_data);
|
||||
|
||||
// Should have 3 lines (one for each system)
|
||||
assert_eq!(formatted.len(), 3);
|
||||
|
||||
// Each line should contain the system name
|
||||
assert!(formatted.iter().any(|line| line.contains("render")));
|
||||
assert!(formatted.iter().any(|line| line.contains("input")));
|
||||
assert!(formatted.iter().any(|line| line.contains("physics")));
|
||||
|
||||
// Each line should contain timing information with proper units
|
||||
for line in formatted.iter() {
|
||||
assert!(line.contains(":"), "Line should contain colon separator: {}", line);
|
||||
assert!(line.contains("±"), "Line should contain ± symbol: {}", line);
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_format_timing_display_empty() {
|
||||
let timing_data = vec![];
|
||||
let formatted = format_timing_display(timing_data);
|
||||
assert!(formatted.is_empty());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_format_timing_display_units() {
|
||||
let timing_data = vec![
|
||||
("seconds".to_string(), Duration::from_secs(2), Duration::from_millis(100)),
|
||||
("millis".to_string(), Duration::from_millis(15), Duration::from_micros(200)),
|
||||
("micros".to_string(), Duration::from_micros(500), Duration::from_nanos(50)),
|
||||
("nanos".to_string(), Duration::from_nanos(250), Duration::from_nanos(25)),
|
||||
];
|
||||
|
||||
let formatted = format_timing_display(timing_data);
|
||||
|
||||
// Check that appropriate units are used
|
||||
let all_lines = formatted.join(" ");
|
||||
assert!(all_lines.contains("s"), "Should contain seconds unit");
|
||||
assert!(all_lines.contains("ms"), "Should contain milliseconds unit");
|
||||
assert!(all_lines.contains("µs"), "Should contain microseconds unit");
|
||||
assert!(all_lines.contains("ns"), "Should contain nanoseconds unit");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_format_timing_display_alignment() {
|
||||
let timing_data = vec![
|
||||
("short".to_string(), Duration::from_micros(100), Duration::from_micros(10)),
|
||||
(
|
||||
"very_long_name".to_string(),
|
||||
Duration::from_micros(200),
|
||||
Duration::from_micros(20),
|
||||
),
|
||||
];
|
||||
|
||||
let formatted = format_timing_display(timing_data);
|
||||
|
||||
// Find colon positions - they should be aligned
|
||||
let colon_positions: Vec<usize> = formatted.iter().map(|line| line.find(':').unwrap_or(0)).collect();
|
||||
|
||||
// All colons should be at the same position (aligned)
|
||||
if colon_positions.len() > 1 {
|
||||
let first_pos = colon_positions[0];
|
||||
assert!(
|
||||
colon_positions.iter().all(|&pos| pos == first_pos),
|
||||
"Colons should be aligned at the same position"
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user