codama_nodes/discriminator_nodes/
size_discriminator_node.rs

1use codama_nodes_derive::node;
2
3#[node]
4pub struct SizeDiscriminatorNode {
5    // Data.
6    pub size: usize,
7}
8
9impl From<SizeDiscriminatorNode> for crate::Node {
10    fn from(val: SizeDiscriminatorNode) -> Self {
11        crate::Node::Discriminator(val.into())
12    }
13}
14
15impl SizeDiscriminatorNode {
16    pub fn new(size: usize) -> Self {
17        Self { size }
18    }
19}
20
21#[cfg(test)]
22mod tests {
23    use super::*;
24
25    #[test]
26    fn new() {
27        let node = SizeDiscriminatorNode::new(42);
28        assert_eq!(node.size, 42);
29    }
30
31    #[test]
32    fn to_json() {
33        let node = SizeDiscriminatorNode::new(42);
34        let json = serde_json::to_string(&node).unwrap();
35        assert_eq!(json, r#"{"kind":"sizeDiscriminatorNode","size":42}"#);
36    }
37
38    #[test]
39    fn from_json() {
40        let json = r#"{"kind":"sizeDiscriminatorNode","size":42}"#;
41        let node: SizeDiscriminatorNode = serde_json::from_str(json).unwrap();
42        assert_eq!(node, SizeDiscriminatorNode::new(42));
43    }
44}