Skip to main content

fkm_proxy/
lib.rs

1pub mod utils;
2pub use utils::client::{Consts, Options, spawn_connector};
3
4pub fn get_version() -> u32 {
5    parse_version(env!("CARGO_PKG_VERSION"))
6}
7
8pub fn get_version_str(ver: &u32) -> String {
9    let s3 = ver & 0b1111111111;
10    let s2 = (ver >> 10) & 0b1111111111;
11    let s1 = (ver >> 20) & 0b1111111111;
12
13    format!("{s1}.{s2}.{s3}")
14}
15
16fn parse_version(ver: &str) -> u32 {
17    ver.split('.')
18        .fold(0, |acc, x| (acc << 10) + x.parse::<u32>().unwrap())
19}
20
21#[cfg(test)]
22mod tests {
23    use super::*;
24
25    #[test]
26    fn test_simple() {
27        assert_eq!(parse_version("1.2.3"), (1 << 20) + (2 << 10) + 3);
28    }
29
30    #[test]
31    fn test_bigger() {
32        assert_eq!(parse_version("12.2.3"), (12 << 20) + (2 << 10) + 3);
33    }
34
35    #[test]
36    fn test_gt() {
37        assert_eq!(parse_version("12.2.3") > parse_version("1.22.3"), true);
38    }
39
40    #[test]
41    fn test_lt() {
42        assert_eq!(parse_version("12.2.3") < parse_version("12.22.3"), true);
43    }
44
45    #[test]
46    fn test_convertback_simple() {
47        assert_eq!(get_version_str(&parse_version("1.2.3")) == "1.2.3", true);
48    }
49
50    #[test]
51    fn test_convertback_bigger() {
52        assert_eq!(
53            get_version_str(&parse_version("270.410.934")) == "270.410.934",
54            true
55        );
56    }
57
58    #[test]
59    fn test_current_version() {
60        assert_eq!(
61            get_version_str(&get_version()) == env!("CARGO_PKG_VERSION"),
62            true
63        );
64    }
65}