use panache::format;
#[test]
fn image_with_class() {
let input = "{.large}\n";
let output = format(input, None, None);
assert!(output.contains("{.large}"));
}
#[test]
fn image_with_id() {
let input = "{#fig-results}\n";
let output = format(input, None, None);
assert!(output.contains("{#fig-results}"));
}
#[test]
fn image_with_multiple_classes() {
let input = "{.large .center .border}\n";
let output = format(input, None, None);
assert!(output.contains("{.large .center .border}"));
}
#[test]
fn image_with_full_attributes() {
let input = "{#fig-1 .large width=\"80%\" height=\"auto\"}\n";
let output = format(input, None, None);
eprintln!("Output: {}", output);
assert!(output.contains("{#fig-1 .large"));
assert!(output.contains("width="));
assert!(output.contains("80%"));
assert!(output.contains("height="));
assert!(output.contains("auto"));
}
#[test]
fn image_without_attributes() {
let input = "\n";
let output = format(input, None, None);
assert!(output.contains(""));
assert!(!output.contains("{"));
}
#[test]
fn multiple_images_with_attributes() {
let cfg = panache::ConfigBuilder::default().line_width(200).build();
let input = "{#fig-a} and {#fig-b}\n";
let output = format(input, Some(cfg), None);
eprintln!("Output: {}", output);
assert!(output.contains(""));
assert!(output.contains("fig-a"));
assert!(output.contains("and"));
assert!(output.contains(""));
assert!(output.contains("fig-b"));
}
#[test]
fn image_attributes_in_paragraph() {
let input = "See {.inline width=50%} for details.\n";
let output = format(input, None, None);
assert!(output.contains("{.inline width=50%}"));
}
#[test]
fn image_space_before_attributes() {
let input = " {.large}\n";
let output = format(input, None, None);
assert!(output.contains(""));
assert!(output.contains("{.large}"));
}
#[test]
fn image_in_implicit_figure() {
let input = "{#fig-1 .wide}\n";
let output = format(input, None, None);
assert!(output.contains("{#fig-1 .wide}"));
}
#[test]
fn image_with_title_and_attributes() {
let input = "{.class}\n";
let output = format(input, None, None);
assert!(output.contains("{.class}"));
}
#[test]
fn idempotent_formatting() {
let input = "{#id .class key=value}\n";
let first = format(input, None, None);
let second = format(&first, None, None);
assert_eq!(first, second);
}
#[test]
fn image_attributes_with_wrapping() {
let cfg = panache::ConfigBuilder::default().line_width(40).build();
let input = "This is a long paragraph with an {.small} that should wrap at the configured width.\n";
let output = format(input, Some(cfg), None);
assert!(output.contains("{.small}"));
}