/// e2e encoding/decoding tests use crate::{ ast::{DeBruijn, Name, Program}, parser, }; #[test] fn integer() { let bytes = include_bytes!("../test_data/basic/integer/integer.flat"); let code = include_str!("../test_data/basic/integer/integer.uplc"); let parsed_program = parser::program(code).unwrap(); let debruijn_program: Program = parsed_program.clone().try_into().unwrap(); let decoded_program: Program = Program::from_flat(bytes).unwrap(); assert_eq!(debruijn_program, decoded_program); let encoded_program = debruijn_program.to_flat().unwrap(); assert_eq!(encoded_program, bytes); let name_program: Program = decoded_program.try_into().unwrap(); assert_eq!(parsed_program, name_program); let pretty = name_program.to_pretty(); assert_eq!(pretty, code); } #[test] fn jpg() { let bytes = include_bytes!("../test_data/jpg/jpg.flat"); let code = include_str!("../test_data/jpg/jpg.uplc"); let parsed_program = parser::program(code).unwrap(); let debruijn_program: Program = parsed_program.clone().try_into().unwrap(); let decoded_program: Program = Program::from_flat(bytes).unwrap(); assert_eq!(debruijn_program, decoded_program); let encoded_program = debruijn_program.to_flat().unwrap(); assert_eq!(encoded_program, bytes); let name_program: Program = decoded_program.try_into().unwrap(); assert_eq!(parsed_program, name_program); let pretty = name_program.to_pretty(); assert_eq!(pretty, code); }