Initial public release of Warp.
Repo-Sync-Origin: warpdotdev/warp-internal@12af1d983b
This commit is contained in:
@@ -0,0 +1,90 @@
|
||||
use super::format_gfm_table;
|
||||
|
||||
#[test]
|
||||
fn format_gfm_table_normalizes_column_widths() {
|
||||
let lines = vec![
|
||||
"| Short | Medium Length | This is much longer |".to_owned(),
|
||||
"| --- | --- | --- |".to_owned(),
|
||||
"| A | Hello world | X |".to_owned(),
|
||||
];
|
||||
let result = format_gfm_table(&lines);
|
||||
let result_lines: Vec<&str> = result.lines().collect();
|
||||
|
||||
assert_eq!(result_lines.len(), 3);
|
||||
// All rows should have the same length due to padding
|
||||
assert_eq!(result_lines[0].len(), result_lines[1].len());
|
||||
assert_eq!(result_lines[1].len(), result_lines[2].len());
|
||||
// Check content is preserved
|
||||
assert!(result_lines[0].contains("Short"));
|
||||
assert!(result_lines[0].contains("Medium Length"));
|
||||
assert!(result_lines[0].contains("This is much longer"));
|
||||
assert!(result_lines[2].contains("A"));
|
||||
assert!(result_lines[2].contains("Hello world"));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn format_gfm_table_preserves_alignment_markers() {
|
||||
let lines = vec![
|
||||
"| Left | Center | Right |".to_owned(),
|
||||
"| :--- | :---: | ---: |".to_owned(),
|
||||
"| A | B | C |".to_owned(),
|
||||
];
|
||||
let result = format_gfm_table(&lines);
|
||||
let sep_line = result.lines().nth(1).unwrap();
|
||||
|
||||
// Extract separator cells (trim leading/trailing pipes and split)
|
||||
let cells: Vec<&str> = sep_line
|
||||
.trim()
|
||||
.trim_matches('|')
|
||||
.split('|')
|
||||
.map(|c| c.trim())
|
||||
.collect();
|
||||
|
||||
assert_eq!(cells.len(), 3);
|
||||
// Left alignment: starts with dashes (no leading colon after trimming)
|
||||
assert!(
|
||||
cells[0].starts_with('-'),
|
||||
"Left column should be left-aligned"
|
||||
);
|
||||
// Center alignment: starts and ends with colon
|
||||
assert!(
|
||||
cells[1].starts_with(':') && cells[1].ends_with(':'),
|
||||
"Center column should be center-aligned"
|
||||
);
|
||||
// Right alignment: ends with colon but doesn't start with one
|
||||
assert!(
|
||||
!cells[2].starts_with(':') && cells[2].ends_with(':'),
|
||||
"Right column should be right-aligned"
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn format_gfm_table_handles_rows_with_fewer_columns() {
|
||||
let lines = vec![
|
||||
"| A | B | C |".to_owned(),
|
||||
"| --- | --- | --- |".to_owned(),
|
||||
"| X |".to_owned(), // Missing columns
|
||||
];
|
||||
let result = format_gfm_table(&lines);
|
||||
let result_lines: Vec<&str> = result.lines().collect();
|
||||
|
||||
// Should still produce valid output
|
||||
assert_eq!(result_lines.len(), 3);
|
||||
// Last row should be padded to have same structure
|
||||
assert_eq!(result_lines[0].len(), result_lines[2].len());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn format_gfm_table_handles_empty_cells() {
|
||||
let lines = vec![
|
||||
"| A | | C |".to_owned(),
|
||||
"| --- | --- | --- |".to_owned(),
|
||||
"| | B | |".to_owned(),
|
||||
];
|
||||
let result = format_gfm_table(&lines);
|
||||
|
||||
// Should produce aligned output with empty cells preserved
|
||||
assert!(result.contains("| A"));
|
||||
assert!(result.contains("| B"));
|
||||
assert!(result.contains("| C"));
|
||||
}
|
||||
Reference in New Issue
Block a user