Skip to main content

codama_nodes/pda_seed_nodes/
variable_pda_seed_node.rs

1use crate::{CamelCaseString, Docs, TypeNode, VariablePdaSeedNode};
2
3impl VariablePdaSeedNode {
4    pub fn new<T, U>(name: T, r#type: U) -> Self
5    where
6        T: Into<CamelCaseString>,
7        U: Into<TypeNode>,
8    {
9        Self {
10            name: name.into(),
11            docs: Docs::default(),
12            r#type: Box::new(r#type.into()),
13        }
14    }
15}
16
17#[cfg(test)]
18mod tests {
19    use super::*;
20    use crate::{NumberTypeNode, U32};
21
22    #[test]
23    fn new() {
24        let node = VariablePdaSeedNode::new("my_seed", NumberTypeNode::le(U32));
25        assert_eq!(node.name, CamelCaseString::new("mySeed"));
26        assert_eq!(*node.r#type, TypeNode::Number(NumberTypeNode::le(U32)));
27    }
28
29    #[test]
30    fn direct_instantiation() {
31        let node = VariablePdaSeedNode {
32            name: "mySeed".into(),
33            docs: vec!["Hello".to_string()].into(),
34            r#type: Box::new(NumberTypeNode::le(U32).into()),
35        };
36        assert_eq!(node.name, CamelCaseString::new("mySeed"));
37        assert_eq!(*node.docs, vec!["Hello".to_string()]);
38        assert_eq!(*node.r#type, TypeNode::Number(NumberTypeNode::le(U32)));
39    }
40
41    #[test]
42    fn to_json() {
43        let node = VariablePdaSeedNode::new("mySeed", NumberTypeNode::le(U32));
44        let json = serde_json::to_string(&node).unwrap();
45        assert_eq!(
46            json,
47            r#"{"kind":"variablePdaSeedNode","name":"mySeed","type":{"kind":"numberTypeNode","format":"u32","endian":"le"}}"#
48        );
49    }
50
51    #[test]
52    fn from_json() {
53        let json = r#"{"kind":"variablePdaSeedNode","name":"mySeed","type":{"kind":"numberTypeNode","format":"u32","endian":"le"}}"#;
54        let node: VariablePdaSeedNode = serde_json::from_str(json).unwrap();
55        assert_eq!(
56            node,
57            VariablePdaSeedNode::new("mySeed", NumberTypeNode::le(U32))
58        );
59    }
60}