1pub mod model;
3
4#[cfg(test)]
5mod tests {
6 use super::model::*;
7 use serde_json::json;
8
9 #[test]
10 fn test_deserialize_minimal() {
11 let data = json!({
12 "v": "5.5.2",
13 "ip": 0,
14 "op": 60,
15 "fr": 60,
16 "w": 500,
17 "h": 500,
18 "layers": []
19 });
20 let lottie: LottieJson = serde_json::from_value(data).unwrap();
21 assert_eq!(lottie.w, 500);
22 }
23
24 #[test]
25 fn test_deserialize_shape_layer() {
26 let data = json!({
27 "v": "5.5.2",
28 "ip": 0, "op": 60, "fr": 60, "w": 100, "h": 100,
29 "layers": [
30 {
31 "ty": 4, "ind": 1,
33 "nm": "MyShape",
34 "ip": 0, "op": 60, "st": 0,
35 "ks": {}, "shapes": [
37 {
38 "ty": "rc",
39 "nm": "Rect",
40 "s": { "a": 0, "k": [100, 100] },
41 "p": { "a": 0, "k": [50, 50] },
42 "r": { "a": 0, "k": 0 }
43 },
44 {
45 "ty": "fl",
46 "c": { "a": 0, "k": [1, 0, 0, 1] },
47 "o": { "a": 0, "k": 100 }
48 }
49 ]
50 }
51 ]
52 });
53 let lottie: LottieJson = serde_json::from_value(data).unwrap();
54 let layer = &lottie.layers[0];
55 assert_eq!(layer.ty, 4);
56 if let Some(shapes) = &layer.shapes {
57 assert_eq!(shapes.len(), 2);
58 if let Shape::Rect(rect) = &shapes[0] {
59 assert_eq!(rect.nm.as_deref(), Some("Rect"));
60 } else {
61 panic!("Expected Rect, got {:?}", shapes[0]);
62 }
63 } else {
64 panic!("Expected shapes");
65 }
66 }
67}