[go: up one dir, main page]

gltf-json 1.4.1

JSON parsing for the gltf crate
Documentation
use std::{fs, io};

use gltf_json::validation::{Error, Validate};
use gltf_json::Path;

fn import_json(filename: &str) -> gltf_json::Root {
    let file = fs::File::open(filename).unwrap();
    let reader = io::BufReader::new(file);
    gltf_json::Root::from_reader(reader).unwrap()
}

#[test]
fn test_accessor_bounds_validate() {
    // file with missing min/max values
    let json = import_json("tests/minimal_accessor_invalid.gltf");
    let mut errs = vec![];
    json.validate(&json, gltf_json::Path::new, &mut |path, err| {
        errs.push((path(), err))
    });
    assert_eq!(
        errs,
        [
            (
                Path("meshes[0].primitives[0].attributes[\"POSITION\"].min".into()),
                Error::Missing
            ),
            (
                Path("meshes[0].primitives[0].attributes[\"POSITION\"].max".into()),
                Error::Invalid
            )
        ]
    );
}

#[test]
fn test_non_sparse_accessor_without_buffer_view_validate() {
    let json = import_json("tests/non_sparse_accessor_without_buffer_view.gltf");
    let mut errs = vec![];
    json.validate(&json, gltf_json::Path::new, &mut |path, err| {
        errs.push((path(), err))
    });
    assert_eq!(
        errs,
        [(Path("accessors[0].bufferView".into()), Error::Missing)]
    );
}