#![cfg(feature = "nested")]

use hel_colored::{Colored, Styled};

#[test]
fn single_nested_ansi_string_at_a_time() {
	let res = "blue text".blue().underline();
	let res = format!("green {res} wrapping").green().italic();

	let should_be = "\x1b[0;38;2;50;225;50;3mgreen \
	\x1b[0;38;2;50;50;225;4mblue text\x1b[0;38;2;50;225;50;3m \
	wrapping\x1b[0m";

	println!("{}", should_be);
	assert_eq!(should_be, res.clone().to_string());

	let res = format!("Red {res} wrapping").red().strikethrough();

	let should_be = "\x1b[0;38;2;225;50;50;9mRed \
	\x1b[0;38;2;50;225;50;3mgreen \
	\x1b[0;38;2;50;50;225;4mblue text\x1b[0;38;2;50;225;50;3m \
	wrapping\x1b[0;38;2;225;50;50;9m \
	wrapping\x1b[0m";

	println!("{}", should_be);
	assert_eq!(should_be, res.to_string());
}

#[test]
fn multiple_nested_ansi_string_at_a_time() {
	let res = "blue text".blue();
	let res = format!("green {res} wrapping, another {res} wrapping").green();

	let should_be = "\u{1b}[0;38;2;50;225;50mgreen \
	\u{1b}[0;38;2;50;50;225mblue text\u{1b}[0;38;2;50;225;50m \
	wrapping, another \u{1b}[0;38;2;50;50;225mblue \
	text\u{1b}[0;38;2;50;225;50m wrapping\u{1b}[0m";

	println!("{}", should_be);
	assert_eq!(should_be, res.to_string());
}
