codama_nodes/contextual_value_nodes/
contextual_value_node.rs1use crate::{
2 AccountBumpValueNode, AccountValueNode, ArgumentValueNode, ConditionalValueNode, HasKind,
3 IdentityValueNode, PayerValueNode, PdaSeedValueNode, PdaValueNode, ProgramIdValueNode,
4 ResolverValueNode,
5};
6use codama_nodes_derive::{node_union, RegisteredNodes};
7
8#[derive(RegisteredNodes)]
9#[node_union]
10pub enum RegisteredContextualValueNode {
11 Account(AccountValueNode),
12 AccountBump(AccountBumpValueNode),
13 Argument(ArgumentValueNode),
14 Conditional(ConditionalValueNode),
15 Identity(IdentityValueNode),
16 Payer(PayerValueNode),
17 Pda(PdaValueNode),
18 ProgramId(ProgramIdValueNode),
19 Resolver(ResolverValueNode),
20
21 #[registered]
22 PdaSeed(PdaSeedValueNode),
23}
24
25#[cfg(test)]
26mod tests {
27 use super::*;
28
29 #[test]
30 fn kind_from_standalone() {
31 let node: ContextualValueNode = ProgramIdValueNode::new().into();
32 assert_eq!(node.kind(), "programIdValueNode");
33 }
34
35 #[test]
36 fn kind_from_registered() {
37 let node: RegisteredContextualValueNode = ProgramIdValueNode::new().into();
38 assert_eq!(node.kind(), "programIdValueNode");
39 }
40}