codama_nodes/discriminator_nodes/
field_discriminator_node.rs1use 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}