codama_nodes/value_nodes/
value_node.rs1use crate::{
2 ArrayValueNode, BooleanValueNode, BytesValueNode, ConstantValueNode, EnumValueNode, HasKind,
3 MapEntryValueNode, MapValueNode, NoneValueNode, NumberValueNode, PublicKeyValueNode,
4 SetValueNode, SomeValueNode, StringValueNode, StructFieldValueNode, StructValueNode,
5 TupleValueNode,
6};
7use codama_nodes_derive::{node_union, RegisteredNodes};
8
9#[derive(RegisteredNodes)]
10#[node_union]
11pub enum RegisteredValueNode {
12 Array(ArrayValueNode),
13 Boolean(BooleanValueNode),
14 Bytes(BytesValueNode),
15 Constant(ConstantValueNode),
16 Enum(EnumValueNode),
17 Map(MapValueNode),
18 None(NoneValueNode),
19 Number(NumberValueNode),
20 PublicKey(PublicKeyValueNode),
21 Set(SetValueNode),
22 Some(SomeValueNode),
23 String(StringValueNode),
24 Struct(StructValueNode),
25 Tuple(TupleValueNode),
26
27 #[registered]
28 StructField(StructFieldValueNode),
29 #[registered]
30 MapEntry(MapEntryValueNode),
31}
32
33#[cfg(test)]
34mod tests {
35 use super::*;
36
37 #[test]
38 fn kind_from_standalone() {
39 let node: ValueNode = NoneValueNode::new().into();
40 assert_eq!(node.kind(), "noneValueNode");
41 }
42
43 #[test]
44 fn kind_from_registered() {
45 let node: RegisteredValueNode = NoneValueNode::new().into();
46 assert_eq!(node.kind(), "noneValueNode");
47 }
48}