#[cfg(test)]
mod tests {
use crate::render::mode::stream::StreamRenderer;
#[test]
fn no_origin_means_plain_line() {
let mut buf = Vec::new();
{
let mut r = StreamRenderer::new(&mut buf, false, false);
r.render("app.log", "hello").unwrap();
r.flush().unwrap();
}
assert_eq!(String::from_utf8(buf).unwrap(), "hello\n");
}
#[test]
fn origin_is_prefixed_with_pipe_when_enabled() {
let mut buf = Vec::new();
{
let mut r = StreamRenderer::new(&mut buf, true, false);
r.render("app.log", "hello").unwrap();
}
assert_eq!(String::from_utf8(buf).unwrap(), "app.log | hello\n");
}
#[test]
fn with_color_emits_sgr_sequences() {
let mut buf = Vec::new();
{
let mut r = StreamRenderer::new(&mut buf, true, true);
r.render("app.log", "hello").unwrap();
}
let out = String::from_utf8(buf).unwrap();
assert!(out.contains("\x1b["));
assert!(out.ends_with("hello\n"));
}
#[test]
fn multiple_lines_preserve_order() {
let mut buf = Vec::new();
{
let mut r = StreamRenderer::new(&mut buf, false, false);
r.render("a", "1").unwrap();
r.render("a", "2").unwrap();
r.render("a", "3").unwrap();
}
assert_eq!(String::from_utf8(buf).unwrap(), "1\n2\n3\n");
}
}