use sourceannot::ControlCharStyle;
use super::test_render_simple;
#[test]
fn test_simple() {
let source = b"123\n456";
let snippet =
sourceannot::Snippet::with_latin1(0, source, 4, ControlCharStyle::Replacement, true);
test_render_simple(&snippet, 0..1, "123", "^ ", "ttt");
test_render_simple(&snippet, 1..2, "123", " ^ ", "ttt");
test_render_simple(&snippet, 2..3, "123", " ^", "ttt");
test_render_simple(&snippet, 3..4, "123", " ^", "ttt");
test_render_simple(&snippet, 4..5, "456", "^ ", "ttt");
test_render_simple(&snippet, 5..6, "456", " ^ ", "ttt");
test_render_simple(&snippet, 6..7, "456", " ^", "ttt");
test_render_simple(&snippet, 7..7, "456", " ^", "ttt");
let source = b"123\n456\n";
let snippet =
sourceannot::Snippet::with_latin1(0, source, 4, ControlCharStyle::Replacement, true);
test_render_simple(&snippet, 0..1, "123", "^ ", "ttt");
test_render_simple(&snippet, 1..2, "123", " ^ ", "ttt");
test_render_simple(&snippet, 2..3, "123", " ^", "ttt");
test_render_simple(&snippet, 3..4, "123", " ^", "ttt");
test_render_simple(&snippet, 4..5, "456", "^ ", "ttt");
test_render_simple(&snippet, 5..6, "456", " ^ ", "ttt");
test_render_simple(&snippet, 6..7, "456", " ^", "ttt");
test_render_simple(&snippet, 7..8, "456", " ^", "ttt");
test_render_simple(&snippet, 8..8, "", "^", "");
}
#[test]
fn test_non_ascii_char() {
let source = b"123\n4\xFF6";
let snippet =
sourceannot::Snippet::with_latin1(0, source, 4, ControlCharStyle::Replacement, true);
test_render_simple(&snippet, 4..5, "4\u{FF}6", "^ ", "ttt");
test_render_simple(&snippet, 5..6, "4\u{FF}6", " ^ ", "ttt");
test_render_simple(&snippet, 6..7, "4\u{FF}6", " ^", "ttt");
}
#[test]
fn test_tab() {
let source = b"123\n4\t6";
let snippet =
sourceannot::Snippet::with_latin1(0, source, 3, ControlCharStyle::Replacement, true);
test_render_simple(&snippet, 4..5, "4 6", "^ ", "ttttt");
test_render_simple(&snippet, 5..6, "4 6", " ^^^ ", "ttttt");
test_render_simple(&snippet, 6..7, "4 6", " ^", "ttttt");
let snippet =
sourceannot::Snippet::with_latin1(0, source, 4, ControlCharStyle::Replacement, true);
test_render_simple(&snippet, 4..5, "4 6", "^ ", "tttttt");
test_render_simple(&snippet, 5..6, "4 6", " ^^^^ ", "tttttt");
test_render_simple(&snippet, 6..7, "4 6", " ^", "tttttt");
let snippet =
sourceannot::Snippet::with_latin1(0, source, 0, ControlCharStyle::Replacement, true);
test_render_simple(&snippet, 4..5, "46", "^ ", "tt");
test_render_simple(&snippet, 5..6, "46", " ^", "tt");
test_render_simple(&snippet, 6..7, "46", " ^", "tt");
}
#[test]
fn test_line_breaks() {
let source = b"123\r\n4\r6\r\n";
let snippet =
sourceannot::Snippet::with_latin1(0, source, 4, ControlCharStyle::Codepoint, true);
test_render_simple(&snippet, 0..1, "123", "^ ", "ttt");
test_render_simple(&snippet, 1..2, "123", " ^ ", "ttt");
test_render_simple(&snippet, 2..3, "123", " ^", "ttt");
test_render_simple(&snippet, 3..4, "123", " ^", "ttt");
test_render_simple(&snippet, 4..5, "123", " ^", "ttt");
test_render_simple(&snippet, 3..5, "123", " ^", "ttt");
test_render_simple(&snippet, 5..6, "4<U+000D>6", "^ ", "tTTTTTTTTt");
test_render_simple(&snippet, 6..7, "4<U+000D>6", " ^^^^^^^^ ", "tTTTTTTTTt");
test_render_simple(&snippet, 7..8, "4<U+000D>6", " ^", "tTTTTTTTTt");
test_render_simple(&snippet, 8..9, "4<U+000D>6", " ^", "tTTTTTTTTt");
test_render_simple(&snippet, 9..10, "4<U+000D>6", " ^", "tTTTTTTTTt");
test_render_simple(&snippet, 8..10, "4<U+000D>6", " ^", "tTTTTTTTTt");
test_render_simple(&snippet, 10..10, "", "^", "");
}
#[test]
fn test_control_char_replacement() {
let source = b"123\n4\x006";
let snippet =
sourceannot::Snippet::with_latin1(0, source, 4, ControlCharStyle::Replacement, true);
test_render_simple(&snippet, 4..5, "4\u{2400}6", "^ ", "tTt");
test_render_simple(&snippet, 5..6, "4\u{2400}6", " ^ ", "tTt");
test_render_simple(&snippet, 6..7, "4\u{2400}6", " ^", "tTt");
let snippet =
sourceannot::Snippet::with_latin1(0, source, 4, ControlCharStyle::Replacement, false);
test_render_simple(&snippet, 4..5, "4\u{2400}6", "^ ", "ttt");
test_render_simple(&snippet, 5..6, "4\u{2400}6", " ^ ", "ttt");
test_render_simple(&snippet, 6..7, "4\u{2400}6", " ^", "ttt");
}
#[test]
fn test_control_char_codepoint() {
let source = b"123\n4\x006";
let snippet =
sourceannot::Snippet::with_latin1(0, source, 4, ControlCharStyle::Codepoint, true);
test_render_simple(&snippet, 4..5, "4<U+0000>6", "^ ", "tTTTTTTTTt");
test_render_simple(&snippet, 5..6, "4<U+0000>6", " ^^^^^^^^ ", "tTTTTTTTTt");
test_render_simple(&snippet, 6..7, "4<U+0000>6", " ^", "tTTTTTTTTt");
let snippet =
sourceannot::Snippet::with_latin1(0, source, 4, ControlCharStyle::Codepoint, false);
test_render_simple(&snippet, 4..5, "4<U+0000>6", "^ ", "tttttttttt");
test_render_simple(&snippet, 5..6, "4<U+0000>6", " ^^^^^^^^ ", "tttttttttt");
test_render_simple(&snippet, 6..7, "4<U+0000>6", " ^", "tttttttttt");
}