Skip to main content

codama_nodes/discriminator_nodes/
field_discriminator_node.rs

1use crate::{CamelCaseString, FieldDiscriminatorNode};
2
3impl FieldDiscriminatorNode {
4    pub fn new<T>(name: T, offset: u64) -> Self
5    where
6        T: Into<CamelCaseString>,
7    {
8        Self {
9            name: name.into(),
10            offset,
11        }
12    }
13}
14
15#[cfg(test)]
16mod tests {
17    use super::*;
18
19    #[test]
20    fn new() {
21        let node = FieldDiscriminatorNode::new("my_field", 0);
22        assert_eq!(node.name, CamelCaseString::new("myField"));
23        assert_eq!(node.offset, 0);
24    }
25
26    #[test]
27    fn to_json() {
28        let node = FieldDiscriminatorNode::new("myField", 0);
29        let json = serde_json::to_string(&node).unwrap();
30        assert_eq!(
31            json,
32            r#"{"kind":"fieldDiscriminatorNode","name":"myField","offset":0}"#
33        );
34    }
35
36    #[test]
37    fn from_json() {
38        let json = r#"{"kind":"fieldDiscriminatorNode","name":"myField","offset":0}"#;
39        let node: FieldDiscriminatorNode = serde_json::from_str(json).unwrap();
40        assert_eq!(node, FieldDiscriminatorNode::new("myField", 0));
41    }
42}