@@ -918,19 +918,30 @@ class VersionTests: XCTestCase {
918
918
XCTAssertEqual ( try ? Version ( versionString: " 1.2 " , usesLenientParsing: false ) , nil )
919
919
}
920
920
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.
921
925
func testVersionComparison( ) {
922
926
923
927
// MARK: version core vs. version core
924
928
925
929
XCTAssertGreaterThan ( Version ( 2 , 1 , 1 ) , Version ( 1 , 2 , 3 ) )
926
930
XCTAssertGreaterThan ( Version ( 1 , 3 , 1 ) , Version ( 1 , 2 , 3 ) )
927
931
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 ) )
928
936
929
937
// MARK: version core vs. version core + pre-release
930
938
931
939
XCTAssertGreaterThan ( Version ( 1 , 2 , 3 ) , Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " " ] ) )
932
940
XCTAssertGreaterThan ( Version ( 1 , 2 , 3 ) , Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " beta " ] ) )
933
941
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 " ] ) )
934
945
935
946
// MARK: version core + pre-release vs. version core + pre-release
936
947
@@ -973,6 +984,10 @@ class VersionTests: XCTestCase {
973
984
XCTAssertGreaterThan ( Version ( 2 , 2 , 3 , prereleaseIdentifiers: [ " " ] ) , Version ( 1 , 2 , 3 , buildMetadataIdentifiers: [ " " ] ) )
974
985
XCTAssertGreaterThan ( Version ( 1 , 3 , 3 , prereleaseIdentifiers: [ " alpha " ] ) , Version ( 1 , 2 , 3 , buildMetadataIdentifiers: [ " beta " ] ) )
975
986
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 " ] ) )
976
991
977
992
// MARK: version core + build metadata vs. version core + build metadata
978
993
@@ -1001,6 +1016,11 @@ class VersionTests: XCTestCase {
1001
1016
XCTAssertGreaterThan ( Version ( 1 , 2 , 3 ) , Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " beta " ] , buildMetadataIdentifiers: [ " 123 " ] ) )
1002
1017
XCTAssertLessThan ( Version ( 1 , 2 , 2 ) , Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " beta " ] , buildMetadataIdentifiers: [ " alpha " , " beta " ] ) )
1003
1018
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 " ] ) )
1004
1024
1005
1025
// MARK: version core + pre-release vs. version core + pre-release + build metadata
1006
1026
@@ -1129,11 +1149,14 @@ class VersionTests: XCTestCase {
1129
1149
XCTAssertGreaterThan ( v2, v1)
1130
1150
XCTAssertGreaterThanOrEqual ( v2, v1)
1131
1151
XCTAssertNotEqual ( v1, v2)
1152
+ XCTAssertFalse ( v2 < v1)
1132
1153
1133
1154
XCTAssertLessThanOrEqual ( v1, v1)
1134
1155
XCTAssertGreaterThanOrEqual ( v1, v1)
1156
+ XCTAssertFalse ( v1 < v1)
1135
1157
XCTAssertLessThanOrEqual ( v2, v2)
1136
1158
XCTAssertGreaterThanOrEqual ( v2, v2)
1159
+ XCTAssertFalse ( v2 < v2)
1137
1160
}
1138
1161
1139
1162
do {
@@ -1144,11 +1167,14 @@ class VersionTests: XCTestCase {
1144
1167
XCTAssertGreaterThan ( v4, v3)
1145
1168
XCTAssertGreaterThanOrEqual ( v4, v3)
1146
1169
XCTAssertNotEqual ( v3, v4)
1170
+ XCTAssertFalse ( v4 < v3)
1147
1171
1148
1172
XCTAssertLessThanOrEqual ( v3, v3)
1149
1173
XCTAssertGreaterThanOrEqual ( v3, v3)
1174
+ XCTAssertFalse ( v3 < v3)
1150
1175
XCTAssertLessThanOrEqual ( v4, v4)
1151
1176
XCTAssertGreaterThanOrEqual ( v4, v4)
1177
+ XCTAssertFalse ( v4 < v4)
1152
1178
}
1153
1179
1154
1180
do {
@@ -1159,11 +1185,14 @@ class VersionTests: XCTestCase {
1159
1185
XCTAssertGreaterThan ( v6, v5)
1160
1186
XCTAssertGreaterThanOrEqual ( v6, v5)
1161
1187
XCTAssertNotEqual ( v5, v6)
1188
+ XCTAssertFalse ( v6 < v5)
1162
1189
1163
1190
XCTAssertLessThanOrEqual ( v5, v5)
1164
1191
XCTAssertGreaterThanOrEqual ( v5, v5)
1192
+ XCTAssertFalse ( v5 < v5)
1165
1193
XCTAssertLessThanOrEqual ( v6, v6)
1166
1194
XCTAssertGreaterThanOrEqual ( v6, v6)
1195
+ XCTAssertFalse ( v6 < v6)
1167
1196
}
1168
1197
1169
1198
do {
@@ -1175,11 +1204,14 @@ class VersionTests: XCTestCase {
1175
1204
XCTAssertGreaterThan ( v8, v7)
1176
1205
XCTAssertGreaterThanOrEqual ( v8, v7)
1177
1206
XCTAssertNotEqual ( v7, v8)
1207
+ XCTAssertFalse ( v8 < v7)
1178
1208
1179
1209
XCTAssertLessThanOrEqual ( v7, v7)
1180
1210
XCTAssertGreaterThanOrEqual ( v7, v7)
1211
+ XCTAssertFalse ( v7 < v7)
1181
1212
XCTAssertLessThanOrEqual ( v8, v8)
1182
1213
XCTAssertGreaterThanOrEqual ( v8, v8)
1214
+ XCTAssertFalse ( v8 < v8)
1183
1215
}
1184
1216
1185
1217
do {
@@ -1196,11 +1228,14 @@ class VersionTests: XCTestCase {
1196
1228
XCTAssertGreaterThan ( v2, v1)
1197
1229
XCTAssertGreaterThanOrEqual ( v2, v1)
1198
1230
XCTAssertNotEqual ( v1, v2)
1231
+ XCTAssertFalse ( v2 < v1)
1199
1232
1200
1233
XCTAssertLessThanOrEqual ( v1, v1)
1201
1234
XCTAssertGreaterThanOrEqual ( v1, v1)
1235
+ XCTAssertFalse ( v1 < v1)
1202
1236
XCTAssertLessThanOrEqual ( v2, v2)
1203
1237
XCTAssertGreaterThanOrEqual ( v2, v2)
1238
+ XCTAssertFalse ( v2 < v2)
1204
1239
1205
1240
v1 = v2
1206
1241
}
0 commit comments