Skip to main content

scripting/
format.rs

1pub use scripting_format::*;
2
3#[cfg(test)]
4mod tests {
5    use super::*;
6
7    #[test]
8    fn test_global_header_roundtrip() {
9        let header = GlobalHeader::new(ContextType::EntityCreate, EntityType::Transaction, 5, 0);
10        let bytes = header.as_bytes();
11        let parsed = GlobalHeader::from_bytes(bytes).unwrap();
12        assert_eq!(parsed.magic, MAGIC_NOMI);
13        assert_eq!(parsed.version, FORMAT_VERSION);
14        assert_eq!(parsed.context_type, ContextType::EntityCreate as u8);
15        assert_eq!(parsed.primary_entity_type, EntityType::Transaction as u8);
16        assert_eq!(parsed.input_entity_count, 5);
17    }
18
19    #[test]
20    fn test_entity_header_roundtrip() {
21        let id = [1u8; 16];
22        let header = EntityHeader::new(
23            EntityType::Split,
24            Operation::Create,
25            EntityFlags::make(true, false),
26            id,
27            0,
28            100,
29            64,
30        );
31        let bytes = header.to_bytes();
32        let parsed = EntityHeader::from_bytes(&bytes).unwrap();
33        assert_eq!(parsed.entity_type, EntityType::Split as u8);
34        assert_eq!(parsed.operation, Operation::Create as u8);
35        assert!(EntityFlags::is_primary(parsed.flags));
36        assert!(!EntityFlags::is_context(parsed.flags));
37        assert_eq!(parsed.parent_idx, 0);
38    }
39
40    #[test]
41    fn test_output_header_roundtrip() {
42        let header = OutputHeader::new(10);
43        let bytes = header.to_bytes();
44        let parsed = OutputHeader::from_bytes(&bytes).unwrap();
45        assert_eq!(parsed.magic, MAGIC_OUTP);
46        assert_eq!(parsed.output_start_idx, 10);
47    }
48}