Skip to main content

codama_nodes/value_nodes/
array_value_node.rs

1use crate::{ArrayValueNode, ValueNode};
2
3impl ArrayValueNode {
4    pub fn new(items: Vec<ValueNode>) -> Self {
5        Self { items }
6    }
7}
8
9#[cfg(test)]
10mod tests {
11    use super::*;
12    use crate::NumberValueNode;
13
14    #[test]
15    fn new() {
16        let node = ArrayValueNode::new(vec![
17            NumberValueNode::new(1).into(),
18            NumberValueNode::new(2).into(),
19            NumberValueNode::new(3).into(),
20        ]);
21        assert_eq!(
22            node.items,
23            vec![
24                ValueNode::Number(NumberValueNode::new(1)),
25                ValueNode::Number(NumberValueNode::new(2)),
26                ValueNode::Number(NumberValueNode::new(3)),
27            ]
28        );
29    }
30
31    #[test]
32    fn to_json() {
33        let node = ArrayValueNode::new(vec![NumberValueNode::new(42u32).into()]);
34        let json = serde_json::to_string(&node).unwrap();
35        assert_eq!(
36            json,
37            r#"{"kind":"arrayValueNode","items":[{"kind":"numberValueNode","number":42}]}"#
38        );
39    }
40
41    #[test]
42    fn from_json() {
43        let json = r#"{"kind":"arrayValueNode","items":[{"kind":"numberValueNode","number":42}]}"#;
44        let node: ArrayValueNode = serde_json::from_str(json).unwrap();
45        assert_eq!(
46            node,
47            ArrayValueNode::new(vec![NumberValueNode::new(42u32).into()])
48        );
49    }
50}