codama_nodes/value_nodes/
some_value_node.rs1use crate::{SomeValueNode, ValueNode};
2
3impl SomeValueNode {
4 pub fn new<T>(value: T) -> Self
5 where
6 T: Into<ValueNode>,
7 {
8 Self {
9 value: Box::new(value.into()),
10 }
11 }
12}
13
14#[cfg(test)]
15mod tests {
16 use super::*;
17 use crate::NumberValueNode;
18
19 #[test]
20 fn new() {
21 let node = SomeValueNode::new(NumberValueNode::new(42));
22 assert_eq!(*node.value, ValueNode::Number(NumberValueNode::new(42)));
23 }
24
25 #[test]
26 fn to_json() {
27 let node = SomeValueNode::new(NumberValueNode::new(42));
28 let json = serde_json::to_string(&node).unwrap();
29 assert_eq!(
30 json,
31 r#"{"kind":"someValueNode","value":{"kind":"numberValueNode","number":42}}"#
32 );
33 }
34
35 #[test]
36 fn from_json() {
37 let json = r#"{"kind":"someValueNode","value":{"kind":"numberValueNode","number":42}}"#;
38 let node: SomeValueNode = serde_json::from_str(json).unwrap();
39 assert_eq!(node, SomeValueNode::new(NumberValueNode::new(42u32)));
40 }
41}