codama_nodes/value_nodes/
set_value_node.rs1use crate::{SetValueNode, ValueNode};
2
3impl SetValueNode {
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 = SetValueNode::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 = SetValueNode::new(vec![NumberValueNode::new(42u32).into()]);
34 let json = serde_json::to_string(&node).unwrap();
35 assert_eq!(
36 json,
37 r#"{"kind":"setValueNode","items":[{"kind":"numberValueNode","number":42}]}"#
38 );
39 }
40
41 #[test]
42 fn from_json() {
43 let json = r#"{"kind":"setValueNode","items":[{"kind":"numberValueNode","number":42}]}"#;
44 let node: SetValueNode = serde_json::from_str(json).unwrap();
45 assert_eq!(
46 node,
47 SetValueNode::new(vec![NumberValueNode::new(42u32).into()])
48 );
49 }
50}