gltf_v1_json/
image.rs

1use gltf_v1_derive::Validate;
2use serde_derive::{Deserialize, Serialize};
3
4use crate::extensions;
5
6#[derive(Clone, Debug, Deserialize, Serialize, Validate, Default)]
7pub struct Image {
8    pub uri: String,
9    #[serde(skip_serializing_if = "Option::is_none")]
10    pub name: Option<String>,
11    #[serde(default, skip_serializing_if = "Option::is_none")]
12    pub extensions: Option<extensions::image::Image>,
13}
14
15#[test]
16fn test_image_deserialize() {
17    let data = r#"{
18            "name": "user-defined image name",
19            "uri" : "image.png",
20            "extensions" : {
21               "extension_name" : {
22                  "extension specific" : "value"
23               }
24            },
25            "extras" : {
26                "Application specific" : "The extra object can contain any properties."
27            }
28        }"#;
29    let image: Result<Image, _> = serde_json::from_str(data);
30    let image_unwrap = image.unwrap();
31    println!("{}", serde_json::to_string(&image_unwrap).unwrap());
32    assert_eq!(
33        Some("user-defined image name".to_string()),
34        image_unwrap.name
35    );
36}