use mozart_core::console_format;
#[test]
fn plain_text_no_tags() {
let result = console_format!("hello world");
assert_eq!(result, "hello world");
}
#[test]
fn plain_text_with_format_args() {
let x = 42;
let result = console_format!("value is {}", x);
assert_eq!(result, "value is 42");
}
#[test]
fn single_info_tag() {
// The output should contain the text (colored), verify it contains the raw text
let result = console_format!("done");
assert!(result.contains("done"), "expected 'done' in: {result}");
}
#[test]
fn single_tag_with_format_arg() {
let name = "foo";
let result = console_format!("Removing {name}");
assert!(
result.contains("Removing foo"),
"expected 'Removing foo' in: {result}"
);
}
#[test]
fn multiple_tags() {
let label = "pkg";
let version = "1.0";
let result = console_format!("{} : {}", label, version);
assert!(result.contains("pkg"), "expected 'pkg' in: {result}");
assert!(result.contains("1.0"), "expected '1.0' in: {result}");
assert!(result.contains(" : "), "expected ' : ' in: {result}");
}
#[test]
fn comment_tag() {
let result = console_format!("note");
assert!(result.contains("note"));
}
#[test]
fn error_tag() {
let result = console_format!("fail");
assert!(result.contains("fail"));
}
#[test]
fn question_tag() {
let result = console_format!("ask");
assert!(result.contains("ask"));
}
#[test]
fn highlight_tag() {
let result = console_format!("important");
assert!(result.contains("important"));
}
#[test]
fn warning_tag() {
let result = console_format!("caution");
assert!(result.contains("caution"));
}
#[test]
fn escaped_braces() {
let result = console_format!("{{literal}}");
assert!(
result.contains("{literal}"),
"expected '{{literal}}' in: {result}"
);
}
#[test]
fn tag_with_plain_before_after() {
let result = console_format!("before middle after");
assert!(result.contains("before "));
assert!(result.contains("middle"));
assert!(result.contains(" after"));
}
#[test]
fn unknown_tag_is_literal() {
let result = console_format!("text");
assert_eq!(result, "text");
}