#[cfg(test)]
mod tests {
use std::io::Cursor;
use tform::config::Config;
use tform::formatter::Formatter;
#[test]
fn test_format_to_markdown_heading() {
let config = Config::default();
let formatter = Formatter::new(config);
let input = "# My Title\nSome paragraph text.";
let output = formatter
.format_to_markdown(Cursor::new(input))
.expect("Failed to format to Markdown");
assert!(output.contains("# My Title"), "Heading not found in output.");
assert!(output.contains("Some paragraph text."), "Paragraph not found in output.");
}
#[test]
fn test_format_to_html_heading() {
let config = Config::default();
let formatter = Formatter::new(config);
let input = "# My Title\nSome paragraph text.";
let output = formatter
.format_to_html(Cursor::new(input))
.expect("Failed to format to HTML");
assert!(output.contains("<h1>My Title</h1>"), "Heading not found in HTML output.");
assert!(output.contains("<p>Some paragraph text.</p>"), "Paragraph not found in HTML output.");
}
#[test]
fn test_format_to_markdown_list() {
let config = Config::default();
let formatter = Formatter::new(config);
let input = "- item one\n- item two\n- item three";
let output = formatter
.format_to_markdown(Cursor::new(input))
.expect("Failed to format list to Markdown");
assert!(output.contains("- item one"), "List item 'item one' missing");
assert!(output.contains("- item two"), "List item 'item two' missing");
assert!(output.contains("- item three"), "List item 'item three' missing");
}
#[test]
fn test_format_to_html_list() {
let config = Config::default();
let formatter = Formatter::new(config);
let input = "- item one\n- item two\n- item three";
let output = formatter
.format_to_html(Cursor::new(input))
.expect("Failed to format list to HTML");
assert!(output.contains("<ul>"), "Missing <ul> tag");
assert!(output.contains("<li>item one</li>"), "Missing item one <li>");
assert!(output.contains("<li>item two</li>"), "Missing item two <li>");
assert!(output.contains("<li>item three</li>"), "Missing item three <li>");
assert!(output.contains("</ul>"), "Missing closing </ul> tag");
}
#[test]
fn test_format_to_markdown_code_block() {
let config = Config::default();
let formatter = Formatter::new(config);
let input = "```\nfn main() {\n println!(\"Hello, world!\");\n}\n```";
let output = formatter
.format_to_markdown(Cursor::new(input))
.expect("Failed to format code block to Markdown");
assert!(output.contains("```\nfn main() {"), "Code block formatting missing or incorrect");
assert!(output.contains("println!(\"Hello, world!\");"), "Expected code line missing");
assert!(output.contains("```\n\n"), "Code block not closed properly");
}
#[test]
fn test_format_to_html_code_block() {
let config = Config::default();
let formatter = Formatter::new(config);
let input = "```\nfn main() {\n println!(\"Hello, world!\");\n}\n```";
let output = formatter
.format_to_html(Cursor::new(input))
.expect("Failed to format code block to HTML");
assert!(output.contains("<pre><code>"), "Missing <pre><code> for code block");
assert!(output.contains("fn main() {"), "Expected code snippet not found");
assert!(output.contains("</code></pre>"), "Code block not closed properly");
}
#[test]
fn test_custom_config() {
let mut config = Config::default();
config.detect_headings = false;
let formatter = Formatter::new(config);
let input = "Not A Heading\nJust a line.";
let output = formatter
.format_to_markdown(Cursor::new(input))
.expect("Failed with custom config");
assert!(!output.contains("# Not A Heading"), "Heading was incorrectly formatted");
assert!(output.contains("Not A Heading"), "Expected text missing in output");
}
}