ptex 0.3.0

High-level Ptex bindings over ptex-sys
Documentation
use anyhow::Result;

#[test]
fn ptex_res() -> Result<()> {
    let res = ptex::Res::from_uv(3, 4);
    let base = 2_i32;
    assert_eq!(res.u(), base.pow(3));
    assert_eq!(res.v(), base.pow(4));

    let res = res.clone_swapped();
    assert_eq!(res.u(), base.pow(4));
    assert_eq!(res.v(), base.pow(3));

    let size = res.size();
    assert_eq!(size, base.pow(3 + 4) as usize);
    assert_eq!(size, base.pow(3 + 4) as usize);

    let mut res = res.clone();
    res.swap_uv();
    assert_eq!(res.u(), base.pow(3));
    assert_eq!(res.v(), base.pow(4));

    let clamp_res = ptex::Res::from_uv(1, 2);
    res.clamp(clamp_res);
    assert_eq!(res.u(), base.pow(1));
    assert_eq!(res.v(), base.pow(2));

    let res = ptex::Res::from_uv(3, 4);
    let tile_res = ptex::Res::from_uv(2, 2);
    let tilesu = res.ntilesu(tile_res);
    assert_eq!(tilesu, 2);

    let tilesv = res.ntilesv(tile_res);
    assert_eq!(tilesv, 4);

    let tiles = res.ntiles(tile_res);
    assert_eq!(tiles, 8);

    Ok(())
}