flarmnet 0.2.0

FlarmNet file decoder/encoder
Documentation
use std::string::FromUtf8Error;

pub fn decrypt(s: &str) -> Result<String, FromUtf8Error> {
    let bytes: Vec<_> = s.bytes().map(|b| b.wrapping_sub(1)).collect();
    String::from_utf8(bytes)
}

pub fn encrypt(s: &str) -> Result<String, FromUtf8Error> {
    let bytes: Vec<_> = s.bytes().map(|b| b.wrapping_add(1)).collect();
    String::from_utf8(bytes)
}

#[cfg(test)]
mod tests {
    use super::{decrypt, encrypt};

    #[test]
    fn decryption_works() {
        assert_eq!(
            decrypt("=@ynm!wfstjpo>#2/1#!fodpejoh>#VUG.9#@?=GMBSNOFU!Wfstjpo>#11:44f#?=GMBSNEBUB!GmbsnJE>#111111#?").unwrap(),
            "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<FLARMNET Version=\"00933e\">\n<FLARMDATA FlarmID=\"000000\">\n"
        );
    }

    #[test]
    fn encryption_works() {
        assert_eq!(
            encrypt("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<FLARMNET Version=\"00933e\">\n<FLARMDATA FlarmID=\"000000\">\n").unwrap(),
            "=@ynm!wfstjpo>#2/1#!fodpejoh>#VUG.9#@?=GMBSNOFU!Wfstjpo>#11:44f#?=GMBSNEBUB!GmbsnJE>#111111#?"
        );
    }
}