use revue::prelude::*;
#[test]
fn test_text_builder() {
let text = Text::new("Test")
.fg(Color::RED)
.bold()
.align(Alignment::Center);
assert_eq!(text.content(), "Test");
}
#[test]
fn test_text_empty_content() {
let text = Text::new("");
assert_eq!(text.content(), "");
}
#[test]
fn test_text_whitespace_only() {
let text = Text::new(" ");
assert_eq!(text.content(), " ");
}
#[test]
fn test_text_newlines() {
let text = Text::new("line1\nline2\nline3");
assert_eq!(text.content(), "line1\nline2\nline3");
}
#[test]
fn test_text_tabs() {
let text = Text::new("col1\tcol2");
assert_eq!(text.content(), "col1\tcol2");
}
#[test]
fn test_text_special_characters() {
let special = "!@#$%^&*()_+-=[]{}|;':\",./<>?";
let text = Text::new(special);
assert_eq!(text.content(), special);
}
#[test]
fn test_text_emoji() {
let emoji = "😀😁😂🤣";
let text = Text::new(emoji);
assert_eq!(text.content(), emoji);
}
#[test]
fn test_text_mixed_unicode() {
let mixed = "Hello 世界! 🌍";
let text = Text::new(mixed);
assert_eq!(text.content(), mixed);
}
#[test]
fn test_text_zero_width_joiners() {
let text = Text::new("e\u{200d}"); assert_eq!(text.content(), "e\u{200d}");
}
#[test]
fn test_text_very_long_single_line() {
let long = "x".repeat(10000);
let text = Text::new(&long);
assert_eq!(text.content(), long);
}
#[test]
fn test_text_null_bytes_not_allowed() {
let text = Text::new("valid string");
assert_eq!(text.content(), "valid string");
}
#[test]
fn test_text_with_styled_modifiers() {
let text = Text::new(" ").bold().italic();
assert_eq!(text.content(), " ");
}
#[test]
fn test_text_builder_chaining() {
let text = Text::new("Test")
.fg(Color::RED)
.bg(Color::BLUE)
.bold()
.italic()
.underline()
.dim();
assert_eq!(text.content(), "Test");
}
#[test]
fn test_text_all_alignments() {
for align in &[Alignment::Left, Alignment::Center, Alignment::Right] {
let text = Text::new("Test").align(*align);
assert_eq!(text.content(), "Test");
}
}
#[test]
fn test_text_with_ansi_codes() {
let ansi = "\x1b[31mRed text\x1b[0m";
let text = Text::new(ansi);
assert_eq!(text.content(), ansi);
}
#[test]
fn test_text_combining_diacritics() {
let text = Text::new("café"); assert_eq!(text.content(), "café");
let text2 = Text::new("cafe\u{301}"); assert_eq!(text2.content(), "cafe\u{301}");
}