cranpose-render-wgpu 0.1.167

WGPU renderer backend for Cranpose
Documentation
use super::{ATLAS_SIZE_STEP, AtlasPacker, padded_dimension};

#[test]
fn padded_dimensions_step_by_an_eighth_of_their_magnitude_and_never_exceed_the_limit() {
    assert_eq!(padded_dimension(1, 4096), ATLAS_SIZE_STEP);
    assert_eq!(padded_dimension(17, 4096), 32);
    assert_eq!(padded_dimension(300, 4096), 320);
    assert_eq!(padded_dimension(1080, 4096), 1280);
    assert_eq!(padded_dimension(2072, 4096), 2560);
    assert_eq!(padded_dimension(4000, 4096), 4096);
    assert_eq!(padded_dimension(2100, 3000), 2560);
    assert_eq!(padded_dimension(2900, 3000), 3000);
    assert_eq!(padded_dimension(24, 20), 20);
}

#[test]
fn a_packer_with_a_shelf_width_opens_shelves_below_instead_of_widening() {
    let mut packer = AtlasPacker::new(4096).with_shelf_width(100);
    let placed: Vec<(u32, u32)> = (0..4)
        .filter_map(|_| packer.place(40, 30))
        .map(|placement| (placement.x, placement.y))
        .collect();
    assert_eq!(placed, vec![(0, 0), (40, 0), (0, 30), (40, 30)]);
    let wide = packer
        .place(300, 10)
        .expect("wider than a shelf still fits");
    assert_eq!((wide.x, wide.y), (0, 60), "it opens a shelf of its own");
    assert_eq!(packer.atlases.len(), 1);
    assert_eq!(
        (packer.atlases[0].width, packer.atlases[0].height),
        (300, 70)
    );
    assert_eq!(
        AtlasPacker::new(64).with_shelf_width(1000).shelf_width,
        64,
        "a shelf never runs past the limit"
    );
}