codama_nodes/pda_seed_nodes/
constant_pda_seed_node.rs1use crate::{TypeNode, ValueNode};
2use codama_nodes_derive::node;
3
4#[node]
5pub struct ConstantPdaSeedNode {
6 pub r#type: TypeNode,
8 pub value: ValueNode,
9}
10
11impl From<ConstantPdaSeedNode> for crate::Node {
12 fn from(val: ConstantPdaSeedNode) -> Self {
13 crate::Node::PdaSeed(val.into())
14 }
15}
16
17impl ConstantPdaSeedNode {
18 pub fn new<T, U>(r#type: T, value: U) -> Self
19 where
20 T: Into<TypeNode>,
21 U: Into<ValueNode>,
22 {
23 Self {
24 r#type: r#type.into(),
25 value: value.into(),
26 }
27 }
28}
29
30#[cfg(test)]
31mod tests {
32 use super::*;
33 use crate::{NumberTypeNode, NumberValueNode, U64};
34
35 #[test]
36 fn new() {
37 let node = ConstantPdaSeedNode::new(NumberTypeNode::le(U64), NumberValueNode::new(42u64));
38 assert_eq!(node.r#type, TypeNode::Number(NumberTypeNode::le(U64)));
39 assert_eq!(node.value, ValueNode::Number(NumberValueNode::new(42u64)));
40 }
41
42 #[test]
43 fn to_json() {
44 let node = ConstantPdaSeedNode::new(NumberTypeNode::le(U64), NumberValueNode::new(42u64));
45 let json = serde_json::to_string(&node).unwrap();
46 assert_eq!(
47 json,
48 r#"{"kind":"constantPdaSeedNode","type":{"kind":"numberTypeNode","format":"u64","endian":"le"},"value":{"kind":"numberValueNode","number":42}}"#
49 );
50 }
51
52 #[test]
53 fn from_json() {
54 let json = r#"{"kind":"constantPdaSeedNode","type":{"kind":"numberTypeNode","format":"u64","endian":"le"},"value":{"kind":"numberValueNode","number":42}}"#;
55 let node: ConstantPdaSeedNode = serde_json::from_str(json).unwrap();
56 assert_eq!(
57 node,
58 ConstantPdaSeedNode::new(NumberTypeNode::le(U64), NumberValueNode::new(42u64))
59 );
60 }
61}