Skip to main content

codama_nodes/value_nodes/
some_value_node.rs

1use 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}