fkm-proxy 0.3.0

Fkm proxy client & server
Documentation
pub mod utils;
pub use utils::client::{Consts, Options, spawn_connector};

pub fn get_version() -> u32 {
    parse_version(env!("CARGO_PKG_VERSION"))
}

pub fn get_version_str(ver: &u32) -> String {
    let s3 = ver & 0b1111111111;
    let s2 = (ver >> 10) & 0b1111111111;
    let s1 = (ver >> 20) & 0b1111111111;

    format!("{s1}.{s2}.{s3}")
}

fn parse_version(ver: &str) -> u32 {
    ver.split('.')
        .fold(0, |acc, x| (acc << 10) + x.parse::<u32>().unwrap())
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn test_simple() {
        assert_eq!(parse_version("1.2.3"), (1 << 20) + (2 << 10) + 3);
    }

    #[test]
    fn test_bigger() {
        assert_eq!(parse_version("12.2.3"), (12 << 20) + (2 << 10) + 3);
    }

    #[test]
    fn test_gt() {
        assert_eq!(parse_version("12.2.3") > parse_version("1.22.3"), true);
    }

    #[test]
    fn test_lt() {
        assert_eq!(parse_version("12.2.3") < parse_version("12.22.3"), true);
    }

    #[test]
    fn test_convertback_simple() {
        assert_eq!(get_version_str(&parse_version("1.2.3")) == "1.2.3", true);
    }

    #[test]
    fn test_convertback_bigger() {
        assert_eq!(
            get_version_str(&parse_version("270.410.934")) == "270.410.934",
            true
        );
    }

    #[test]
    fn test_current_version() {
        assert_eq!(
            get_version_str(&get_version()) == env!("CARGO_PKG_VERSION"),
            true
        );
    }
}