h_version/
lib.rs

1//! # H-Version
2//!
3//! 'H-Version' is a version comparing library that meant to be used for H foundation projects
4
5mod version;
6pub use version::Version;
7#[cfg(test)]
8mod tests {
9    use std::cmp::Ordering::Equal;
10    use crate::*;
11    #[test]
12    fn version_test() {
13        let v1 = Version::parse("1.2.3-alpha+001");
14        let v2 = Version::parse("1.2.3-beta+002");
15        let v3 = Version::parse("2023.03.01");
16        let v4 = Version::parse("2.sjf.5djf");
17        let v5 = Version::parse("1:2.3.4");
18        let v6 = Version::parse("1.0.0-SNAPSHOT");
19
20        assert_eq!(v1 < v2, true); // true
21        assert_eq!(v1 > v3, false); // false
22        assert_eq!(v4 == v4, true); // true
23        assert_eq!(v5 > v1, true); // true
24        assert_eq!(v6 < v1, true); // true
25    }
26    #[test]
27    fn printing(){
28        let v1 = Version::parse("1.2.3-alpha+001");
29        let v2 = Version::parse("2023.03.01");
30        let v3 = Version::parse("2.sjf.5djf");
31        let v4 = Version::parse("1:2.3.4");
32        let v5 = Version::parse("1.0.0-SNAPSHOT");
33
34        let v1_display = format!("{}", v1);
35        assert_eq!(v1_display, "1.2.3-alpha+001");
36        let v1_debug = format!("{:?}", v1);
37        assert_eq!(v1_debug, "epoch:0 components:[\"1\", \"2\", \"3\"] pre_release:alpha build_metadata:0");
38
39        let v2_display = format!("{}", v2);
40        assert_eq!(v2_display, "2023.03.01");
41        let v2_debug = format!("{:?}", v2);
42        assert_eq!(v2_debug, "epoch:0 components:[\"2023\", \"03\", \"01\"] pre_release: build_metadata:0");
43
44        let v3_display = format!("{}", v3);
45        assert_eq!(v3_display, "2.sjf.5djf");
46        let v3_debug = format!("{:?}", v3);
47        assert_eq!(v3_debug, "epoch:0 components:[\"2\", \"sjf\", \"5djf\"] pre_release: build_metadata:0");
48
49        let v4_display = format!("{}", v4);
50        assert_eq!(v4_display, "1:2.3.4");
51        let v4_debug = format!("{:?}", v4);
52        assert_eq!(v4_debug, "epoch:1 components:[\"2\", \"3\", \"4\"] pre_release: build_metadata:1");
53
54        let v5_display = format!("{}", v5);
55        assert_eq!(v5_display, "1.0.0-SNAPSHOT");
56        let v5_debug = format!("{:?}", v5);
57        assert_eq!(v5_debug, "epoch:0 components:[\"1\", \"0\", \"0\"] pre_release:SNAPSHOT build_metadata:0");
58    }
59    #[test]
60    fn test_of_additional_zero(){
61        let v1 = Version::parse("1.2.3");
62        let v2 = Version::parse("1.2.3.0");
63        assert_eq!(v1.cmp(&v2), Equal);
64    }
65}