codama_nodes/value_nodes/
value_node.rs

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