codama_nodes/pda_seed_nodes/
variable_pda_seed_node.rs1use 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}