debug-et-diagnostics 0.3.1

set of macros and tools to colorfully debug and diagnose non-trivial code
Documentation
use debug_et_diagnostics::tag;

#[test]
fn test_tag_open() {
    assert_eq!(tag!(@open, "text"), "\u{1b}[1;48;5;16m\u{1b}[1;38;5;7m<\u{1b}[0m\u{1b}[1;48;5;16m\u{1b}[1;38;5;7mtext\u{1b}[0m\u{1b}[1;48;5;16m\u{1b}[1;38;5;7m>\u{1b}[0m");
    assert_eq!(tag!(@open, "text", 220), "\u{1b}[1;48;5;102m\u{1b}[1;38;5;220m<\u{1b}[0m\u{1b}[1;48;5;102m\u{1b}[1;38;5;220mtext\u{1b}[0m\u{1b}[1;48;5;102m\u{1b}[1;38;5;220m>\u{1b}[0m");
    assert_eq!(tag!(@open, "text", @color=auto), "\u{1b}[1;48;5;16m\u{1b}[1;38;5;7m<\u{1b}[0m\u{1b}[1;48;5;102m\u{1b}[1;38;5;160mtext\u{1b}[0m\u{1b}[1;48;5;16m\u{1b}[1;38;5;7m>\u{1b}[0m");
    assert_eq!(tag!(@open, "text", @color=fore), "\u{1b}[1;48;5;16m\u{1b}[1;38;5;7m<\u{1b}[0m\u{1b}[1;48;5;16m\u{1b}[1;38;5;7mtext\u{1b}[0m\u{1b}[1;48;5;16m\u{1b}[1;38;5;7m>\u{1b}[0m");
    assert_eq!(tag!(@open, "text", @color=220), "\u{1b}[1;48;5;16m\u{1b}[1;38;5;7m<\u{1b}[0m\u{1b}[1;48;5;102m\u{1b}[1;38;5;220mtext\u{1b}[0m\u{1b}[1;48;5;16m\u{1b}[1;38;5;7m>\u{1b}[0m");
    assert_eq!(tag!(@open, "text", 220, @color=auto), "\u{1b}[1;48;5;102m\u{1b}[1;38;5;220m<\u{1b}[0m\u{1b}[1;48;5;102m\u{1b}[1;38;5;160mtext\u{1b}[0m\u{1b}[1;48;5;102m\u{1b}[1;38;5;220m>\u{1b}[0m");
    assert_eq!(tag!(@open, "text", 220, @color=fore), "\u{1b}[1;48;5;102m\u{1b}[1;38;5;220m<\u{1b}[0m\u{1b}[1;48;5;102m\u{1b}[1;38;5;220mtext\u{1b}[0m\u{1b}[1;48;5;102m\u{1b}[1;38;5;220m>\u{1b}[0m");
    assert_eq!(tag!(@open, "text", 220, @color=220), "\u{1b}[1;48;5;102m\u{1b}[1;38;5;220m<\u{1b}[0m\u{1b}[1;48;5;102m\u{1b}[1;38;5;220mtext\u{1b}[0m\u{1b}[1;48;5;102m\u{1b}[1;38;5;220m>\u{1b}[0m");
}
#[test]
fn test_tag_close() {
    assert_eq!(tag!(@close, "text"), "\u{1b}[1;48;5;16m\u{1b}[1;38;5;7m</\u{1b}[0m\u{1b}[1;48;5;16m\u{1b}[1;38;5;7mtext\u{1b}[0m\u{1b}[1;48;5;16m\u{1b}[1;38;5;7m>\u{1b}[0m");
    assert_eq!(tag!(@close, "text", 220), "\u{1b}[1;48;5;102m\u{1b}[1;38;5;220m</\u{1b}[0m\u{1b}[1;48;5;102m\u{1b}[1;38;5;220mtext\u{1b}[0m\u{1b}[1;48;5;102m\u{1b}[1;38;5;220m>\u{1b}[0m");
    assert_eq!(tag!(@close, "text", @color=auto), "\u{1b}[1;48;5;16m\u{1b}[1;38;5;7m</\u{1b}[0m\u{1b}[1;48;5;102m\u{1b}[1;38;5;160mtext\u{1b}[0m\u{1b}[1;48;5;16m\u{1b}[1;38;5;7m>\u{1b}[0m");
    assert_eq!(tag!(@close, "text", @color=fore), "\u{1b}[1;48;5;16m\u{1b}[1;38;5;7m</\u{1b}[0m\u{1b}[1;48;5;16m\u{1b}[1;38;5;7mtext\u{1b}[0m\u{1b}[1;48;5;16m\u{1b}[1;38;5;7m>\u{1b}[0m");
    assert_eq!(tag!(@close, "text", @color=220), "\u{1b}[1;48;5;16m\u{1b}[1;38;5;7m</\u{1b}[0m\u{1b}[1;48;5;102m\u{1b}[1;38;5;220mtext\u{1b}[0m\u{1b}[1;48;5;16m\u{1b}[1;38;5;7m>\u{1b}[0m");
    assert_eq!(tag!(@close, "text", 220, @color=auto), "\u{1b}[1;48;5;102m\u{1b}[1;38;5;220m</\u{1b}[0m\u{1b}[1;48;5;102m\u{1b}[1;38;5;160mtext\u{1b}[0m\u{1b}[1;48;5;102m\u{1b}[1;38;5;220m>\u{1b}[0m");
    assert_eq!(tag!(@close, "text", 220, @color=fore), "\u{1b}[1;48;5;102m\u{1b}[1;38;5;220m</\u{1b}[0m\u{1b}[1;48;5;102m\u{1b}[1;38;5;220mtext\u{1b}[0m\u{1b}[1;48;5;102m\u{1b}[1;38;5;220m>\u{1b}[0m");
    assert_eq!(tag!(@close, "text", 220, @color=220), "\u{1b}[1;48;5;102m\u{1b}[1;38;5;220m</\u{1b}[0m\u{1b}[1;48;5;102m\u{1b}[1;38;5;220mtext\u{1b}[0m\u{1b}[1;48;5;102m\u{1b}[1;38;5;220m>\u{1b}[0m");
}
#[test]
fn test_tag_wrap() {
    assert_eq!(tag!(@wrap, "tag", "text"), "\u{1b}[1;48;5;16m\u{1b}[1;38;5;7m<\u{1b}[0m\u{1b}[1;48;5;16m\u{1b}[1;38;5;7mtag\u{1b}[0m\u{1b}[1;48;5;16m\u{1b}[1;38;5;7m>\u{1b}[0m\n    \u{1b}[1;48;5;16m\u{1b}[1;38;5;7mtext\u{1b}[0m\n\u{1b}[1;48;5;16m\u{1b}[1;38;5;7m</\u{1b}[0m\u{1b}[1;48;5;16m\u{1b}[1;38;5;7mtag\u{1b}[0m\u{1b}[1;48;5;16m\u{1b}[1;38;5;7m>\u{1b}[0m");
    assert_eq!(tag!(@wrap, "tag", "text", 220), "\u{1b}[1;48;5;102m\u{1b}[1;38;5;220m<\u{1b}[0m\u{1b}[1;48;5;102m\u{1b}[1;38;5;220mtag\u{1b}[0m\u{1b}[1;48;5;102m\u{1b}[1;38;5;220m>\u{1b}[0m\n    \u{1b}[1;48;5;102m\u{1b}[1;38;5;220mtext\u{1b}[0m\n\u{1b}[1;48;5;102m\u{1b}[1;38;5;220m</\u{1b}[0m\u{1b}[1;48;5;102m\u{1b}[1;38;5;220mtag\u{1b}[0m\u{1b}[1;48;5;102m\u{1b}[1;38;5;220m>\u{1b}[0m");
    assert_eq!(tag!(@wrap, "tag", "text", @color=auto), "\u{1b}[1;48;5;16m\u{1b}[1;38;5;7m<\u{1b}[0m\u{1b}[1;48;5;102m\u{1b}[1;38;5;95mtag\u{1b}[0m\u{1b}[1;48;5;16m\u{1b}[1;38;5;7m>\u{1b}[0m\n    \u{1b}[1;48;5;102m\u{1b}[1;38;5;160mtext\u{1b}[0m\n\u{1b}[1;48;5;16m\u{1b}[1;38;5;7m</\u{1b}[0m\u{1b}[1;48;5;102m\u{1b}[1;38;5;95mtag\u{1b}[0m\u{1b}[1;48;5;16m\u{1b}[1;38;5;7m>\u{1b}[0m");
    assert_eq!(tag!(@wrap, "tag", "text", @color=fore), "\u{1b}[1;48;5;16m\u{1b}[1;38;5;7m<\u{1b}[0m\u{1b}[1;48;5;16m\u{1b}[1;38;5;7mtag\u{1b}[0m\u{1b}[1;48;5;16m\u{1b}[1;38;5;7m>\u{1b}[0m\n    \u{1b}[1;48;5;16m\u{1b}[1;38;5;7mtext\u{1b}[0m\n\u{1b}[1;48;5;16m\u{1b}[1;38;5;7m</\u{1b}[0m\u{1b}[1;48;5;16m\u{1b}[1;38;5;7mtag\u{1b}[0m\u{1b}[1;48;5;16m\u{1b}[1;38;5;7m>\u{1b}[0m");
    assert_eq!(tag!(@wrap, "tag", "text", @color=220), "\u{1b}[1;48;5;102m\u{1b}[1;38;5;220m<\u{1b}[0m\u{1b}[1;48;5;102m\u{1b}[1;38;5;220mtext\u{1b}[0m\u{1b}[1;48;5;102m\u{1b}[1;38;5;220m>\u{1b}[0m\n    \u{1b}[1;48;5;102m\u{1b}[1;38;5;220mtext\u{1b}[0m\n\u{1b}[1;48;5;102m\u{1b}[1;38;5;220m</\u{1b}[0m\u{1b}[1;48;5;102m\u{1b}[1;38;5;220mtext\u{1b}[0m\u{1b}[1;48;5;102m\u{1b}[1;38;5;220m>\u{1b}[0m");
    assert_eq!(tag!(@wrap, "tag", "text", 220, @color=auto), "\u{1b}[1;48;5;102m\u{1b}[1;38;5;220m<\u{1b}[0m\u{1b}[1;48;5;102m\u{1b}[1;38;5;95mtag\u{1b}[0m\u{1b}[1;48;5;102m\u{1b}[1;38;5;220m>\u{1b}[0m\n    \u{1b}[1;48;5;102m\u{1b}[1;38;5;160mtext\u{1b}[0m\n\u{1b}[1;48;5;102m\u{1b}[1;38;5;220m</\u{1b}[0m\u{1b}[1;48;5;102m\u{1b}[1;38;5;95mtag\u{1b}[0m\u{1b}[1;48;5;102m\u{1b}[1;38;5;220m>\u{1b}[0m");
    assert_eq!(tag!(@wrap, "tag", "text", 220, @color=fore), "\u{1b}[1;48;5;102m\u{1b}[1;38;5;220m<\u{1b}[0m\u{1b}[1;48;5;102m\u{1b}[1;38;5;220mtag\u{1b}[0m\u{1b}[1;48;5;102m\u{1b}[1;38;5;220m>\u{1b}[0m\n    \u{1b}[1;48;5;102m\u{1b}[1;38;5;220mtext\u{1b}[0m\n\u{1b}[1;48;5;102m\u{1b}[1;38;5;220m</\u{1b}[0m\u{1b}[1;48;5;102m\u{1b}[1;38;5;220mtag\u{1b}[0m\u{1b}[1;48;5;102m\u{1b}[1;38;5;220m>\u{1b}[0m");
    assert_eq!(tag!(@wrap, "tag", "text", 220, @color=220), "\u{1b}[1;48;5;102m\u{1b}[1;38;5;220m<\u{1b}[0m\u{1b}[1;48;5;102m\u{1b}[1;38;5;220mtag\u{1b}[0m\u{1b}[1;48;5;102m\u{1b}[1;38;5;220m>\u{1b}[0m\n    \u{1b}[1;48;5;102m\u{1b}[1;38;5;220mtext\u{1b}[0m\n\u{1b}[1;48;5;102m\u{1b}[1;38;5;220m</\u{1b}[0m\u{1b}[1;48;5;102m\u{1b}[1;38;5;220mtag\u{1b}[0m\u{1b}[1;48;5;102m\u{1b}[1;38;5;220m>\u{1b}[0m");
}