use ascfix::cli::Mode;
use ascfix::config::Config;
use ascfix::modes::process_by_mode;
#[cfg(test)]
mod malformed_fixture_tests {
use super::*;
fn process_fixture_content(content: &str, mode: &Mode, repair_fences: bool) -> String {
let config = Config::default();
process_by_mode(mode, content, repair_fences, &config)
}
#[test]
fn test_malformed_broken_box() {
let content = include_str!("data/integration/dirty/malformed_broken_box.md");
let result = process_fixture_content(content, &Mode::Diagram, false);
assert!(!result.is_empty());
}
#[test]
fn test_malformed_broken_arrows() {
let content = include_str!("data/integration/dirty/malformed_broken_arrows.md");
let result = process_fixture_content(content, &Mode::Diagram, false);
assert!(!result.is_empty());
assert!(result.contains("│A │") || result.contains("│A │"));
}
#[test]
fn test_malformed_broken_tables() {
let dirty_content = include_str!("data/integration/dirty/malformed_broken_tables.md");
let expected_clean = include_str!("data/integration/clean/malformed_broken_tables.md");
let result = process_fixture_content(dirty_content, &Mode::Safe, false);
assert_eq!(result.trim(), expected_clean.trim());
}
#[test]
fn test_malformed_broken_fences() {
let content = include_str!("data/integration/dirty/malformed_broken_fences.md");
let result = process_fixture_content(content, &Mode::Diagram, true);
assert!(!result.is_empty());
assert!(result.contains("```"));
}
#[test]
fn test_edge_case_minimal() {
let content = include_str!("data/integration/edge_case_minimal.md");
let result = process_fixture_content(content, &Mode::Diagram, false);
assert!(!result.is_empty());
}
#[test]
fn test_malformed_overlapping() {
let content = include_str!("data/integration/dirty/malformed_overlapping.md");
let result = process_fixture_content(content, &Mode::Diagram, false);
assert!(!result.is_empty());
}
#[test]
fn test_malformed_nested() {
let content = include_str!("data/integration/dirty/malformed_nested.md");
let result = process_fixture_content(content, &Mode::Diagram, false);
assert!(!result.is_empty());
assert!(result.contains("┌"));
}
#[test]
fn test_malformed_box_alignment() {
let dirty_content = include_str!("data/integration/dirty/malformed_box_alignment.md");
let expected_clean = include_str!("data/integration/clean/malformed_box_alignment.md");
let result = process_fixture_content(dirty_content, &Mode::Diagram, false);
assert_eq!(result.trim(), expected_clean.trim());
}
#[test]
fn test_complex_nested_with_labels() {
let content = include_str!("data/integration/complex_nested_with_labels.md");
let result = process_fixture_content(content, &Mode::Diagram, false);
assert!(!result.is_empty());
assert!(result.contains("┌"));
assert!(result.contains("└"));
}
#[test]
fn test_complex_connection_lines() {
let content = include_str!("data/integration/complex_connection_lines.md");
let result = process_fixture_content(content, &Mode::Diagram, false);
assert!(!result.is_empty());
assert!(result.contains("┌"));
assert!(result.contains("└"));
assert!(result.contains("─"));
assert!(result.contains("│"));
}
#[test]
fn test_complex_mixed_content() {
let content = include_str!("data/integration/complex_mixed_content.md");
let result = process_fixture_content(content, &Mode::Diagram, true);
assert!(!result.is_empty());
assert!(result.contains('┌'));
assert!(result.contains('|'));
assert!(result.contains("```"));
}
#[test]
fn test_complex_unicode_diagrams() {
let content = include_str!("data/integration/complex_unicode_diagrams.md");
let result = process_fixture_content(content, &Mode::Diagram, false);
assert!(!result.is_empty());
assert!(result.contains("╔") || result.contains("╭"));
}
#[test]
fn test_complex_large_diagram() {
let content = include_str!("data/integration/complex_large_diagram.md");
let result = process_fixture_content(content, &Mode::Diagram, false);
assert!(!result.is_empty());
assert!(result.contains("┌"));
assert!(result.lines().count() > 10);
}
#[test]
fn test_edge_case_minimal_extended() {
let content = include_str!("data/integration/edge_case_minimal_extended.md");
let result = process_fixture_content(content, &Mode::Diagram, false);
assert!(!result.is_empty());
}
#[test]
fn test_complex_overlapping_elements() {
let content = include_str!("data/integration/complex_overlapping_elements.md");
let result = process_fixture_content(content, &Mode::Diagram, false);
assert!(!result.is_empty());
assert!(result.contains("┌"));
}
#[test]
fn test_complex_arrow_patterns() {
let content = include_str!("data/integration/complex_arrow_patterns.md");
let result = process_fixture_content(content, &Mode::Diagram, false);
assert!(!result.is_empty());
assert!(result.contains('─') || result.contains('>') || result.contains('▶'));
}
#[test]
fn test_complex_mixed_box_styles() {
let content = include_str!("data/integration/complex_mixed_box_styles.md");
let result = process_fixture_content(content, &Mode::Diagram, false);
assert!(!result.is_empty());
assert!(result.contains('┌') || result.contains('╔') || result.contains('╭'));
}
#[test]
fn test_complex_table_issues() {
let content = include_str!("data/integration/complex_table_issues.md");
let result = process_fixture_content(content, &Mode::Safe, false);
assert!(!result.is_empty());
assert!(result.contains('|'));
assert!(result.contains("Header") || result.contains("Column"));
}
#[test]
fn test_complex_code_fence_issues() {
let content = include_str!("data/integration/complex_code_fence_issues.md");
let result = process_fixture_content(content, &Mode::Diagram, true);
assert!(!result.is_empty());
assert!(result.contains("```") || result.contains("~~~"));
}
#[test]
fn test_complex_links_in_diagrams() {
let content = include_str!("data/integration/complex_links_in_diagrams.md");
let result = process_fixture_content(content, &Mode::Diagram, false);
assert!(!result.is_empty());
assert!(result.contains('[') || result.contains(']'));
assert!(result.contains('┌'));
}
#[test]
fn test_stress_large_table() {
let content = include_str!("data/integration/stress_large_table.md");
let result = process_fixture_content(content, &Mode::Safe, false);
assert!(!result.is_empty());
assert!(result.contains('|'));
assert!(result.contains("Component"));
}
#[test]
fn test_regression_github_flavored() {
let content = include_str!("data/integration/regression_github_flavored.md");
let result = process_fixture_content(content, &Mode::Diagram, false);
assert!(!result.is_empty());
assert!(result.contains('┌') || result.contains('-') || result.contains('`'));
}
#[test]
fn test_domain_devops_pipeline() {
let content = include_str!("data/integration/domain_devops_pipeline.md");
let result = process_fixture_content(content, &Mode::Diagram, false);
assert!(!result.is_empty());
assert!(result.contains('┌'));
assert!(result.contains('─'));
}
#[test]
fn test_domain_data_structures() {
let content = include_str!("data/integration/domain_data_structures.md");
let result = process_fixture_content(content, &Mode::Diagram, false);
assert!(!result.is_empty());
assert!(result.contains('┌'));
assert!(result.contains('└'));
}
#[test]
fn test_domain_networking_osi() {
let content = include_str!("data/integration/domain_networking_osi.md");
let result = process_fixture_content(content, &Mode::Diagram, false);
assert!(!result.is_empty());
assert!(result.contains('┌'));
assert!(result.contains('|'));
}
#[test]
fn test_boundary_max_nesting() {
let content = include_str!("data/integration/boundary_max_nesting.md");
let result = process_fixture_content(content, &Mode::Diagram, false);
assert!(!result.is_empty());
assert!(result.contains('┌'));
}
#[test]
fn test_edge_case_mathematical() {
let content = include_str!("data/integration/edge_case_mathematical.md");
let result = process_fixture_content(content, &Mode::Diagram, false);
assert!(!result.is_empty());
assert!(result.contains('┌') || result.contains('∫') || result.contains('∑'));
}
#[test]
fn test_international_multilingual() {
let content = include_str!("data/integration/international_multilingual.md");
let result = process_fixture_content(content, &Mode::Diagram, false);
assert!(!result.is_empty());
assert!(result.contains('┌'));
}
#[test]
fn test_error_recovery_corrupted() {
let content = include_str!("data/integration/dirty/error_recovery_corrupted.md");
let result = process_fixture_content(content, &Mode::Diagram, true);
assert!(!result.is_empty());
}
#[test]
fn test_whitespace_handling() {
let content = include_str!("data/integration/whitespace_handling.md");
let result = process_fixture_content(content, &Mode::Diagram, false);
assert!(!result.is_empty());
assert!(result.contains('┌'));
}
#[test]
fn test_realworld_api_docs() {
let content = include_str!("data/integration/realworld_api_docs.md");
let result = process_fixture_content(content, &Mode::Diagram, false);
assert!(!result.is_empty());
assert!(result.contains('┌'));
assert!(result.contains('|'));
}
#[test]
fn test_realworld_database_schema() {
let content = include_str!("data/integration/realworld_database_schema.md");
let result = process_fixture_content(content, &Mode::Diagram, false);
assert!(!result.is_empty());
assert!(result.contains('┌'));
assert!(result.contains("PK") || result.contains("FK"));
}
#[test]
fn test_realworld_security_architecture() {
let content = include_str!("data/integration/realworld_security_architecture.md");
let result = process_fixture_content(content, &Mode::Diagram, false);
assert!(!result.is_empty());
assert!(result.contains('┌'));
}
#[test]
fn test_realworld_ml_pipeline() {
let content = include_str!("data/integration/realworld_ml_pipeline.md");
let result = process_fixture_content(content, &Mode::Diagram, false);
assert!(!result.is_empty());
assert!(result.contains('┌'));
assert!(result.contains('|'));
}
#[test]
fn test_llm_arrow_inconsistency() {
let dirty_content = include_str!("data/integration/dirty/llm_arrow_inconsistency.md");
let expected_clean = include_str!("data/integration/clean/llm_arrow_inconsistency.md");
let result = process_fixture_content(dirty_content, &Mode::Diagram, false);
assert_eq!(result.trim(), expected_clean.trim());
}
#[test]
fn test_llm_mixed_box_styles() {
let dirty_content = include_str!("data/integration/dirty/llm_mixed_box_styles.md");
let expected_clean = include_str!("data/integration/clean/llm_mixed_box_styles.md");
let result = process_fixture_content(dirty_content, &Mode::Diagram, false);
assert_eq!(result.trim(), expected_clean.trim());
}
#[test]
fn test_llm_side_by_side() {
let dirty_content = include_str!("data/integration/dirty/llm_side_by_side.md");
let expected_clean = include_str!("data/integration/clean/llm_side_by_side.md");
let result = process_fixture_content(dirty_content, &Mode::Diagram, false);
assert_eq!(result.trim(), expected_clean.trim());
}
#[test]
fn test_llm_fence_repair() {
let dirty_content = include_str!("data/integration/dirty/llm_fence_repair.md");
let expected_clean = include_str!("data/integration/clean/llm_fence_repair.md");
let result = process_fixture_content(dirty_content, &Mode::Diagram, true);
assert_eq!(result.trim(), expected_clean.trim());
}
#[test]
fn test_llm_unicode_mixed() {
let dirty_content = include_str!("data/integration/dirty/llm_unicode_mixed.md");
let expected_clean = include_str!("data/integration/clean/llm_unicode_mixed.md");
let result = process_fixture_content(dirty_content, &Mode::Diagram, false);
assert_eq!(result.trim(), expected_clean.trim());
}
#[test]
fn test_llm_list_normalization() {
let dirty_content = include_str!("data/integration/dirty/llm_list_normalization.md");
let expected_clean = include_str!("data/integration/clean/llm_list_normalization.md");
let result = process_fixture_content(dirty_content, &Mode::Safe, false);
assert_eq!(result.trim(), expected_clean.trim());
}
#[test]
fn test_llm_lists_no_blank_lines() {
let dirty_content = include_str!("data/integration/dirty/llm_lists_no_blank_lines.md");
let expected_clean = include_str!("data/integration/clean/llm_lists_no_blank_lines.md");
let result = process_fixture_content(dirty_content, &Mode::Safe, false);
assert_eq!(result.trim(), expected_clean.trim());
}
#[test]
fn test_llm_connection_paths() {
let dirty_content = include_str!("data/integration/dirty/llm_connection_paths.md");
let expected_clean = include_str!("data/integration/clean/llm_connection_paths.md");
let result = process_fixture_content(dirty_content, &Mode::Diagram, false);
assert_eq!(result.trim(), expected_clean.trim());
}
#[test]
fn test_llm_mixed_tables_diagrams() {
let dirty_content = include_str!("data/integration/dirty/llm_mixed_tables_diagrams.md");
let expected_clean = include_str!("data/integration/clean/llm_mixed_tables_diagrams.md");
let result = process_fixture_content(dirty_content, &Mode::Diagram, false);
assert_eq!(result.trim(), expected_clean.trim());
}
#[test]
fn test_llm_unicode_tables_mixed() {
let dirty_content = include_str!("data/integration/dirty/llm_unicode_tables_mixed.md");
let expected_clean = include_str!("data/integration/clean/llm_unicode_tables_mixed.md");
let result = process_fixture_content(dirty_content, &Mode::Diagram, false);
assert_eq!(result.trim(), expected_clean.trim());
}
#[test]
fn test_llm_diagrams_with_code() {
let dirty_content = include_str!("data/integration/dirty/llm_diagrams_with_code.md");
let expected_clean = include_str!("data/integration/clean/llm_diagrams_with_code.md");
let result = process_fixture_content(dirty_content, &Mode::Diagram, true);
assert_eq!(result.trim(), expected_clean.trim());
}
#[test]
fn test_llm_everything_mixed() {
let dirty_content = include_str!("data/integration/dirty/llm_everything_mixed.md");
let expected_clean = include_str!("data/integration/clean/llm_everything_mixed.md");
let result = process_fixture_content(dirty_content, &Mode::Diagram, true);
assert_eq!(result.trim(), expected_clean.trim());
}
#[test]
fn test_malformed_wrapped_cells() {
let dirty_content = include_str!("data/integration/dirty/malformed_wrapped_cells.md");
let expected_clean = include_str!("data/integration/clean/malformed_wrapped_cells.md");
let result = process_fixture_content(dirty_content, &Mode::Safe, false);
assert_eq!(result.trim(), expected_clean.trim());
}
#[test]
fn test_malformed_wrapped_with_code() {
let content = include_str!("data/integration/dirty/malformed_wrapped_with_code.md");
let result = process_fixture_content(content, &Mode::Safe, false);
assert!(
result.contains("```python"),
"Python code block should be preserved"
);
assert!(
result.contains("```rust"),
"Rust code block should be preserved"
);
assert!(
result.contains("```sql"),
"SQL code block should be preserved"
);
assert!(
result.contains("def hello():"),
"Code content should be preserved"
);
}
#[test]
fn test_malformed_wrapped_with_links() {
let dirty_content = include_str!("data/integration/dirty/malformed_wrapped_with_links.md");
let expected_clean = include_str!("data/integration/clean/malformed_wrapped_with_links.md");
let result = process_fixture_content(dirty_content, &Mode::Safe, false);
assert_eq!(result.trim(), expected_clean.trim());
}
#[test]
fn test_all_fixtures_exist() {
let fixtures = vec![
include_str!("data/integration/dirty/malformed_broken_box.md"),
include_str!("data/integration/dirty/malformed_broken_arrows.md"),
include_str!("data/integration/dirty/malformed_broken_tables.md"),
include_str!("data/integration/dirty/malformed_broken_fences.md"),
include_str!("data/integration/edge_case_minimal.md"),
include_str!("data/integration/dirty/malformed_overlapping.md"),
include_str!("data/integration/dirty/malformed_nested.md"),
include_str!("data/integration/dirty/malformed_box_alignment.md"),
include_str!("data/integration/complex_nested_with_labels.md"),
include_str!("data/integration/complex_connection_lines.md"),
include_str!("data/integration/complex_mixed_content.md"),
include_str!("data/integration/complex_unicode_diagrams.md"),
include_str!("data/integration/complex_large_diagram.md"),
include_str!("data/integration/edge_case_minimal_extended.md"),
include_str!("data/integration/complex_overlapping_elements.md"),
include_str!("data/integration/complex_arrow_patterns.md"),
include_str!("data/integration/complex_mixed_box_styles.md"),
include_str!("data/integration/complex_table_issues.md"),
include_str!("data/integration/complex_code_fence_issues.md"),
include_str!("data/integration/complex_links_in_diagrams.md"),
include_str!("data/integration/stress_large_table.md"),
include_str!("data/integration/regression_github_flavored.md"),
include_str!("data/integration/domain_devops_pipeline.md"),
include_str!("data/integration/domain_data_structures.md"),
include_str!("data/integration/domain_networking_osi.md"),
include_str!("data/integration/boundary_max_nesting.md"),
include_str!("data/integration/edge_case_mathematical.md"),
include_str!("data/integration/international_multilingual.md"),
include_str!("data/integration/dirty/error_recovery_corrupted.md"),
include_str!("data/integration/whitespace_handling.md"),
include_str!("data/integration/realworld_api_docs.md"),
include_str!("data/integration/realworld_database_schema.md"),
include_str!("data/integration/realworld_security_architecture.md"),
include_str!("data/integration/realworld_ml_pipeline.md"),
];
for fixture in fixtures {
assert!(!fixture.is_empty(), "Fixture file should not be empty");
assert!(fixture.contains('#'), "Fixture should have header comment");
}
#[allow(clippy::no_effect_underscore_binding)]
{
let _dirty_tables = include_str!("data/integration/dirty/malformed_broken_tables.md");
let _clean_tables = include_str!("data/integration/clean/malformed_broken_tables.md");
let _dirty_boxes = include_str!("data/integration/dirty/malformed_box_alignment.md");
let _clean_boxes = include_str!("data/integration/clean/malformed_box_alignment.md");
let _dirty_wrapped = include_str!("data/integration/dirty/malformed_wrapped_cells.md");
let _clean_wrapped = include_str!("data/integration/clean/malformed_wrapped_cells.md");
let _dirty_nested =
include_str!("data/integration/dirty/complex_nested_with_labels.md");
let _clean_nested =
include_str!("data/integration/clean/complex_nested_with_labels.md");
let _edge_arrows = include_str!("data/integration/dirty/malformed_broken_arrows.md");
let _edge_box = include_str!("data/integration/dirty/malformed_broken_box.md");
let _edge_fences = include_str!("data/integration/dirty/malformed_broken_fences.md");
let _edge_overlapping = include_str!("data/integration/dirty/malformed_overlapping.md");
let _edge_nesting = include_str!("data/integration/dirty/malformed_nested.md");
let _edge_corrupted =
include_str!("data/integration/dirty/error_recovery_corrupted.md");
}
}
}