codama_nodes/contextual_value_nodes/
contextual_value_node.rs

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