@@ -16,19 +16,32 @@ impl Version {
16
16
return true ;
17
17
}
18
18
19
- if self . minor > other. major {
19
+ if self . major < other. major {
20
+ return false ;
21
+ }
22
+
23
+ if self . minor > other. minor {
20
24
return true ;
21
25
}
22
26
23
- if self . patch > other. major {
27
+ if self . minor < other. minor {
28
+ return false ;
29
+ }
30
+
31
+ if self . patch > other. patch {
24
32
return true ;
25
33
}
26
34
35
+ if self . patch < other. patch {
36
+ return false ;
37
+ }
38
+
27
39
match self . rc_version {
28
40
Some ( v) => match other. rc_version {
29
41
Some ( v_other) => v > v_other,
30
42
None => false ,
31
43
} ,
44
+ // NOTE: if self is not an rc, but other is -> self is greater
32
45
None => other. rc_version . is_some ( ) ,
33
46
}
34
47
}
@@ -69,6 +82,28 @@ pub fn parse(version: &str) -> Result<Version, VersionError> {
69
82
mod version_tests {
70
83
use super :: * ;
71
84
85
+ #[ test]
86
+ fn test_greater ( ) {
87
+ let a = parse ( "v1.1.1-rc1" ) . expect ( "failed to parse version" ) ;
88
+
89
+ assert ! ( a. gt( & parse( "v0.2.0" ) . unwrap( ) ) ) ;
90
+ assert ! ( a. gt( & parse( "v0.0.2" ) . unwrap( ) ) ) ;
91
+ assert ! ( a. gt( & parse( "v0.0.2-rc2" ) . unwrap( ) ) ) ;
92
+ assert ! ( a. gt( & parse( "v1.0.1-rc1" ) . unwrap( ) ) ) ;
93
+ assert ! ( a. gt( & parse( "v1.0.2-rc2" ) . unwrap( ) ) ) ;
94
+ assert ! ( a. gt( & parse( "v1.0.1-rc2" ) . unwrap( ) ) ) ;
95
+ assert ! ( a. gt( & parse( "v1.1.0-rc1" ) . unwrap( ) ) ) ;
96
+ assert ! ( a. gt( & parse( "v1.1.1-rc0" ) . unwrap( ) ) ) ;
97
+
98
+ assert ! ( !a. gt( & parse( "v1.1.1" ) . unwrap( ) ) ) ;
99
+ assert ! ( !a. gt( & parse( "v1.1.1-rc2" ) . unwrap( ) ) ) ;
100
+ assert ! ( !a. gt( & parse( "v1.1.2-rc1" ) . unwrap( ) ) ) ;
101
+ assert ! ( !a. gt( & parse( "v1.2.0" ) . unwrap( ) ) ) ;
102
+ assert ! ( !a. gt( & parse( "v1.2.0-rc1" ) . unwrap( ) ) ) ;
103
+ assert ! ( !a. gt( & parse( "v2.0.0" ) . unwrap( ) ) ) ;
104
+ assert ! ( !a. gt( & parse( "v2.0.0-rc1" ) . unwrap( ) ) ) ;
105
+ }
106
+
72
107
#[ test]
73
108
fn test_is_valid_version_pass ( ) {
74
109
let version = parse ( "v10.0.2" ) . expect ( "failed to parse version" ) ;
0 commit comments