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}