codama_nodes/discriminator_nodes/
size_discriminator_node.rs1use codama_nodes_derive::node;
2
3#[node]
4pub struct SizeDiscriminatorNode {
5 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}