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}