wavyte 0.2.1

Programmatic video composition and rendering engine in Rust (CPU backend, ffmpeg MP4 encoding)
Documentation
use std::io::Cursor;

use super::*;

#[test]
fn decode_image_png_dimensions_and_premul() {
    let src_rgba = vec![100u8, 50u8, 200u8, 128u8];
    let img = image::RgbaImage::from_raw(1, 1, src_rgba).unwrap();

    let mut buf = Vec::new();
    image::DynamicImage::ImageRgba8(img)
        .write_to(&mut Cursor::new(&mut buf), image::ImageFormat::Png)
        .unwrap();

    let prepared = decode_image(&buf).unwrap();
    assert_eq!(prepared.width, 1);
    assert_eq!(prepared.height, 1);
    assert_eq!(
        prepared.rgba8_premul.as_slice(),
        &[
            ((100u16 * 128 + 127) / 255) as u8,
            ((50u16 * 128 + 127) / 255) as u8,
            ((200u16 * 128 + 127) / 255) as u8,
            128u8
        ]
    );
}

#[test]
fn decode_svg_parse_ok_and_err() {
    let ok = br#"<svg xmlns="http://www.w3.org/2000/svg" width="1" height="1"></svg>"#;
    parse_svg(ok).unwrap();

    let bad = br#"<svg"#;
    assert!(parse_svg(bad).is_err());
}