railroad 0.3.7

A library to create syntax-diagrams as Scalable Vector Graphics
Documentation
#![cfg(feature = "resvg")]

use railroad::{
    Diagram, Stylesheet, Terminal,
    render::{self, FitTo},
};

const PNG_MAGIC: &[u8; 8] = b"\x89PNG\r\n\x1a\n";

#[test]
fn render_to_png_produces_png_output() {
    let svg = Diagram::new_with_stylesheet(
        Terminal::new("render".to_owned()),
        &Stylesheet::LightRendersafe,
    )
    .to_string();

    let png = render::to_png(
        &svg,
        &FitTo::MaxSize {
            width: 128,
            height: 128,
        },
    )
    .unwrap();

    assert!(png.starts_with(PNG_MAGIC));
}

#[test]
fn render_api_reports_invalid_xml() {
    assert_eq!(FitTo::from_size(Some(320), None), FitTo::MaxWidth(320));
    assert!(matches!(
        render::to_png("not xml at all <<<", &FitTo::default()),
        Err(render::Error::XMLParse(_))
    ));
}