@@ -918,19 +918,30 @@ class VersionTests: XCTestCase {
918918 XCTAssertEqual ( try ? Version ( versionString: " 1.2 " , usesLenientParsing: false ) , nil )
919919 }
920920
921+ // Don't refactor out either `XCTAssertGreaterThan` or `XCTAssertFalse(<)`.
922+ // The latter may seem redundant, but it tests a different thing.
923+ // `XCTAssertGreaterThan` asserts that the "true" path of `>` works, which implies that the "true" path of `<` works. However, it doesn't tests the "false" path.
924+ // `XCTAssertFalse(<)` asserts that the "false" path of `<` works.
921925 func testVersionComparison( ) {
922926
923927 // MARK: version core vs. version core
924928
925929 XCTAssertGreaterThan ( Version ( 2 , 1 , 1 ) , Version ( 1 , 2 , 3 ) )
926930 XCTAssertGreaterThan ( Version ( 1 , 3 , 1 ) , Version ( 1 , 2 , 3 ) )
927931 XCTAssertGreaterThan ( Version ( 1 , 2 , 4 ) , Version ( 1 , 2 , 3 ) )
932+
933+ XCTAssertFalse ( Version ( 2 , 1 , 1 ) < Version ( 1 , 2 , 3 ) )
934+ XCTAssertFalse ( Version ( 1 , 3 , 1 ) < Version ( 1 , 2 , 3 ) )
935+ XCTAssertFalse ( Version ( 1 , 2 , 4 ) < Version ( 1 , 2 , 3 ) )
928936
929937 // MARK: version core vs. version core + pre-release
930938
931939 XCTAssertGreaterThan ( Version ( 1 , 2 , 3 ) , Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " " ] ) )
932940 XCTAssertGreaterThan ( Version ( 1 , 2 , 3 ) , Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " beta " ] ) )
933941 XCTAssertLessThan ( Version ( 1 , 2 , 2 ) , Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " beta " ] ) )
942+
943+ XCTAssertFalse ( Version ( 1 , 2 , 3 ) < Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " " ] ) )
944+ XCTAssertFalse ( Version ( 1 , 2 , 3 ) < Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " beta " ] ) )
934945
935946 // MARK: version core + pre-release vs. version core + pre-release
936947
@@ -973,6 +984,10 @@ class VersionTests: XCTestCase {
973984 XCTAssertGreaterThan ( Version ( 2 , 2 , 3 , prereleaseIdentifiers: [ " " ] ) , Version ( 1 , 2 , 3 , buildMetadataIdentifiers: [ " " ] ) )
974985 XCTAssertGreaterThan ( Version ( 1 , 3 , 3 , prereleaseIdentifiers: [ " alpha " ] ) , Version ( 1 , 2 , 3 , buildMetadataIdentifiers: [ " beta " ] ) )
975986 XCTAssertGreaterThan ( Version ( 1 , 2 , 4 , prereleaseIdentifiers: [ " 223 " ] ) , Version ( 1 , 2 , 3 , buildMetadataIdentifiers: [ " 123alpha " ] ) )
987+
988+ XCTAssertFalse ( Version ( 2 , 2 , 3 , prereleaseIdentifiers: [ " " ] ) < Version ( 1 , 2 , 3 , buildMetadataIdentifiers: [ " " ] ) )
989+ XCTAssertFalse ( Version ( 1 , 3 , 3 , prereleaseIdentifiers: [ " alpha " ] ) < Version ( 1 , 2 , 3 , buildMetadataIdentifiers: [ " beta " ] ) )
990+ XCTAssertFalse ( Version ( 1 , 2 , 4 , prereleaseIdentifiers: [ " 223 " ] ) < Version ( 1 , 2 , 3 , buildMetadataIdentifiers: [ " 123alpha " ] ) )
976991
977992 // MARK: version core + build metadata vs. version core + build metadata
978993
@@ -1001,6 +1016,11 @@ class VersionTests: XCTestCase {
10011016 XCTAssertGreaterThan ( Version ( 1 , 2 , 3 ) , Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " beta " ] , buildMetadataIdentifiers: [ " 123 " ] ) )
10021017 XCTAssertLessThan ( Version ( 1 , 2 , 2 ) , Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " beta " ] , buildMetadataIdentifiers: [ " alpha " , " beta " ] ) )
10031018 XCTAssertLessThan ( Version ( 1 , 2 , 2 ) , Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " beta " ] , buildMetadataIdentifiers: [ " alpha- " ] ) )
1019+
1020+ XCTAssertFalse ( Version ( 1 , 2 , 3 ) < Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " " ] , buildMetadataIdentifiers: [ " " ] ) )
1021+ XCTAssertFalse ( Version ( 1 , 2 , 3 ) < Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " " ] , buildMetadataIdentifiers: [ " 123alpha " ] ) )
1022+ XCTAssertFalse ( Version ( 1 , 2 , 3 ) < Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " alpha " ] , buildMetadataIdentifiers: [ " alpha " ] ) )
1023+ XCTAssertFalse ( Version ( 1 , 2 , 3 ) < Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " beta " ] , buildMetadataIdentifiers: [ " 123 " ] ) )
10041024
10051025 // MARK: version core + pre-release vs. version core + pre-release + build metadata
10061026
@@ -1129,11 +1149,14 @@ class VersionTests: XCTestCase {
11291149 XCTAssertGreaterThan ( v2, v1)
11301150 XCTAssertGreaterThanOrEqual ( v2, v1)
11311151 XCTAssertNotEqual ( v1, v2)
1152+ XCTAssertFalse ( v2 < v1)
11321153
11331154 XCTAssertLessThanOrEqual ( v1, v1)
11341155 XCTAssertGreaterThanOrEqual ( v1, v1)
1156+ XCTAssertFalse ( v1 < v1)
11351157 XCTAssertLessThanOrEqual ( v2, v2)
11361158 XCTAssertGreaterThanOrEqual ( v2, v2)
1159+ XCTAssertFalse ( v2 < v2)
11371160 }
11381161
11391162 do {
@@ -1144,11 +1167,14 @@ class VersionTests: XCTestCase {
11441167 XCTAssertGreaterThan ( v4, v3)
11451168 XCTAssertGreaterThanOrEqual ( v4, v3)
11461169 XCTAssertNotEqual ( v3, v4)
1170+ XCTAssertFalse ( v4 < v3)
11471171
11481172 XCTAssertLessThanOrEqual ( v3, v3)
11491173 XCTAssertGreaterThanOrEqual ( v3, v3)
1174+ XCTAssertFalse ( v3 < v3)
11501175 XCTAssertLessThanOrEqual ( v4, v4)
11511176 XCTAssertGreaterThanOrEqual ( v4, v4)
1177+ XCTAssertFalse ( v4 < v4)
11521178 }
11531179
11541180 do {
@@ -1159,11 +1185,14 @@ class VersionTests: XCTestCase {
11591185 XCTAssertGreaterThan ( v6, v5)
11601186 XCTAssertGreaterThanOrEqual ( v6, v5)
11611187 XCTAssertNotEqual ( v5, v6)
1188+ XCTAssertFalse ( v6 < v5)
11621189
11631190 XCTAssertLessThanOrEqual ( v5, v5)
11641191 XCTAssertGreaterThanOrEqual ( v5, v5)
1192+ XCTAssertFalse ( v5 < v5)
11651193 XCTAssertLessThanOrEqual ( v6, v6)
11661194 XCTAssertGreaterThanOrEqual ( v6, v6)
1195+ XCTAssertFalse ( v6 < v6)
11671196 }
11681197
11691198 do {
@@ -1175,11 +1204,14 @@ class VersionTests: XCTestCase {
11751204 XCTAssertGreaterThan ( v8, v7)
11761205 XCTAssertGreaterThanOrEqual ( v8, v7)
11771206 XCTAssertNotEqual ( v7, v8)
1207+ XCTAssertFalse ( v8 < v7)
11781208
11791209 XCTAssertLessThanOrEqual ( v7, v7)
11801210 XCTAssertGreaterThanOrEqual ( v7, v7)
1211+ XCTAssertFalse ( v7 < v7)
11811212 XCTAssertLessThanOrEqual ( v8, v8)
11821213 XCTAssertGreaterThanOrEqual ( v8, v8)
1214+ XCTAssertFalse ( v8 < v8)
11831215 }
11841216
11851217 do {
@@ -1196,11 +1228,14 @@ class VersionTests: XCTestCase {
11961228 XCTAssertGreaterThan ( v2, v1)
11971229 XCTAssertGreaterThanOrEqual ( v2, v1)
11981230 XCTAssertNotEqual ( v1, v2)
1231+ XCTAssertFalse ( v2 < v1)
11991232
12001233 XCTAssertLessThanOrEqual ( v1, v1)
12011234 XCTAssertGreaterThanOrEqual ( v1, v1)
1235+ XCTAssertFalse ( v1 < v1)
12021236 XCTAssertLessThanOrEqual ( v2, v2)
12031237 XCTAssertGreaterThanOrEqual ( v2, v2)
1238+ XCTAssertFalse ( v2 < v2)
12041239
12051240 v1 = v2
12061241 }
0 commit comments