extern crate termint;
#[cfg(test)]
mod tests {
use termint::{
enums::{Color, Modifier},
modifiers,
text::Text,
widgets::{Span, ToSpan},
};
#[test]
fn span_new() {
let span = Span::new("New span");
assert_eq!(span.get(), "New span\x1b[0m");
let span = "New span".to_span();
assert_eq!(span.get(), "New span\x1b[0m");
}
#[test]
fn span_set_fg() {
let span = Span::new("Span fg").fg(Color::Red);
assert_eq!(span.get(), "\x1b[91mSpan fg\x1b[0m");
let mut span = "Span fg".fg(Color::Red);
assert_eq!(span.get(), "\x1b[91mSpan fg\x1b[0m");
span = span.fg(Color::Gray);
assert_eq!(span.get(), "\x1b[90mSpan fg\x1b[0m");
span = span.fg(Color::Rgb(50, 100, 150));
assert_eq!(
span.get(),
format!("\x1b[38;2;{};{};{}mSpan fg\x1b[0m", 50, 100, 150)
);
}
#[test]
fn span_set_bg() {
let span = Span::new("Span bg").bg(Color::White);
assert_eq!(span.get(), "\x1b[107mSpan bg\x1b[0m");
let mut span = "Span bg".bg(Color::White);
assert_eq!(span.get(), "\x1b[107mSpan bg\x1b[0m");
span = span.bg(Color::DarkBlue);
assert_eq!(span.get(), "\x1b[44mSpan bg\x1b[0m");
span = span.bg(Color::Rgb(50, 100, 150));
assert_eq!(
span.get(),
format!("\x1b[48;2;{};{};{}mSpan bg\x1b[0m", 50, 100, 150)
);
}
#[test]
fn span_modifier() {
let span = Span::new("Span modifier").modifier(
Modifier::BOLD
| Modifier::BLINK
| Modifier::ITALIC
| Modifier::INVERSED,
);
assert_eq!(span.get(), "\x1b[1;3;5;7mSpan modifier\x1b[0m");
let span = "Span modifier"
.modifier(modifiers!(BOLD, BLINK, ITALIC, INVERSED));
assert_eq!(span.get(), "\x1b[1;3;5;7mSpan modifier\x1b[0m");
let span = "Span modifier"
.modifier(modifiers!(BOLD, BLINK, ITALIC, INVERSED));
assert_eq!(span.get(), "\x1b[1;3;5;7mSpan modifier\x1b[0m");
}
#[test]
fn span_set_fg_bg() {
let span = Span::new("Span fg bg")
.fg(Color::Rgb(0, 150, 150))
.bg(Color::Rgb(255, 255, 0));
assert_eq!(
span.get(),
"\x1b[38;2;0;150;150m\x1b[48;2;255;255;0mSpan fg bg\x1b[0m"
);
let span = "Span fg bg"
.fg(Color::Rgb(0, 150, 150))
.bg(Color::Rgb(255, 255, 0));
assert_eq!(
span.get(),
"\x1b[38;2;0;150;150m\x1b[48;2;255;255;0mSpan fg bg\x1b[0m"
);
}
}