@@ -55,7 +55,208 @@ class VersionTests: XCTestCase {
55
55
)
56
56
}
57
57
58
+ func testVersionComparison( ) {
58
59
60
+ // MARK: version core vs. version core
61
+
62
+ XCTAssertGreaterThan ( Version ( 2 , 1 , 1 ) , Version ( 1 , 2 , 3 ) )
63
+ XCTAssertGreaterThan ( Version ( 1 , 3 , 1 ) , Version ( 1 , 2 , 3 ) )
64
+ XCTAssertGreaterThan ( Version ( 1 , 2 , 4 ) , Version ( 1 , 2 , 3 ) )
65
+
66
+ // MARK: version core vs. version core + pre-release
67
+
68
+ XCTAssertGreaterThan ( Version ( 1 , 2 , 3 ) , Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " " ] ) )
69
+ XCTAssertGreaterThan ( Version ( 1 , 2 , 3 ) , Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " beta " ] ) )
70
+ XCTAssertLessThan ( Version ( 1 , 2 , 2 ) , Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " beta " ] ) )
71
+
72
+ // MARK: version core + pre-release vs. version core + pre-release
73
+
74
+ XCTAssertEqual ( Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " " ] ) , Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " " ] ) )
75
+
76
+ XCTAssertEqual ( Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " beta " ] ) , Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " beta " ] ) )
77
+ XCTAssertLessThan ( Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " alpha " ] ) , Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " beta " ] ) )
78
+ XCTAssertLessThan ( Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " alpha1 " ] ) , Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " alpha2 " ] ) )
79
+ XCTAssertLessThan ( Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " alpha " ] ) , Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " alpha- " ] ) )
80
+ XCTAssertLessThan ( Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " beta " , " alpha " ] ) , Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " beta " , " beta " ] ) )
81
+ XCTAssertLessThan ( Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " alpha " , " beta " ] ) , Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " beta " , " alpha " ] ) )
82
+
83
+ XCTAssertEqual ( Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " 1 " ] ) , Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " 1 " ] ) )
84
+ XCTAssertLessThan ( Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " 1 " ] ) , Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " 2 " ] ) )
85
+ XCTAssertLessThan ( Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " 1 " , " 1 " ] ) , Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " 1 " , " 2 " ] ) )
86
+ XCTAssertLessThan ( Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " 1 " , " 2 " ] ) , Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " 2 " , " 1 " ] ) )
87
+
88
+ XCTAssertLessThan ( Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " 123 " ] ) , Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " 123alpha " ] ) )
89
+ XCTAssertLessThan ( Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " 223 " ] ) , Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " 123alpha " ] ) )
90
+
91
+ // MARK: version core vs. version core + build metadata
92
+
93
+ XCTAssertEqual ( Version ( 1 , 2 , 3 ) , Version ( 1 , 2 , 3 , buildMetadataIdentifiers: [ " " ] ) )
94
+ XCTAssertEqual ( Version ( 1 , 2 , 3 ) , Version ( 1 , 2 , 3 , buildMetadataIdentifiers: [ " beta " ] ) )
95
+ XCTAssertLessThan ( Version ( 1 , 2 , 2 ) , Version ( 1 , 2 , 3 , buildMetadataIdentifiers: [ " beta " ] ) )
96
+
97
+ // MARK: version core + pre-release vs. version core + build metadata
98
+
99
+ XCTAssertLessThan ( Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " " ] ) , Version ( 1 , 2 , 3 , buildMetadataIdentifiers: [ " " ] ) )
100
+ XCTAssertLessThan ( Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " beta " ] ) , Version ( 1 , 2 , 3 , buildMetadataIdentifiers: [ " alpha " ] ) )
101
+ XCTAssertLessThan ( Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " alpha " ] ) , Version ( 1 , 2 , 3 , buildMetadataIdentifiers: [ " beta " ] ) )
102
+ XCTAssertLessThan ( Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " beta " ] ) , Version ( 1 , 2 , 3 , buildMetadataIdentifiers: [ " beta " ] ) )
103
+ XCTAssertLessThan ( Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " alpha " ] ) , Version ( 1 , 2 , 3 , buildMetadataIdentifiers: [ " alpha- " ] ) )
104
+ XCTAssertLessThan ( Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " 123 " ] ) , Version ( 1 , 2 , 3 , buildMetadataIdentifiers: [ " 123alpha " ] ) )
105
+ XCTAssertLessThan ( Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " 223 " ] ) , Version ( 1 , 2 , 3 , buildMetadataIdentifiers: [ " 123alpha " ] ) )
106
+ XCTAssertLessThan ( Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " 123alpha " ] ) , Version ( 1 , 2 , 3 , buildMetadataIdentifiers: [ " 123 " ] ) )
107
+ XCTAssertLessThan ( Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " 123alpha " ] ) , Version ( 1 , 2 , 3 , buildMetadataIdentifiers: [ " 223 " ] ) )
108
+ XCTAssertLessThan ( Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " 123alpha " ] ) , Version ( 1 , 2 , 3 , buildMetadataIdentifiers: [ " 223 " ] ) )
109
+ XCTAssertLessThan ( Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " alpha " ] ) , Version ( 1 , 2 , 3 , buildMetadataIdentifiers: [ " beta " ] ) )
110
+ XCTAssertGreaterThan ( Version ( 2 , 2 , 3 , prereleaseIdentifiers: [ " " ] ) , Version ( 1 , 2 , 3 , buildMetadataIdentifiers: [ " " ] ) )
111
+ XCTAssertGreaterThan ( Version ( 1 , 3 , 3 , prereleaseIdentifiers: [ " alpha " ] ) , Version ( 1 , 2 , 3 , buildMetadataIdentifiers: [ " beta " ] ) )
112
+ XCTAssertGreaterThan ( Version ( 1 , 2 , 4 , prereleaseIdentifiers: [ " 223 " ] ) , Version ( 1 , 2 , 3 , buildMetadataIdentifiers: [ " 123alpha " ] ) )
113
+
114
+ // MARK: version core + build metadata vs. version core + build metadata
115
+
116
+ XCTAssertEqual ( Version ( 1 , 2 , 3 , buildMetadataIdentifiers: [ " " ] ) , Version ( 1 , 2 , 3 , buildMetadataIdentifiers: [ " " ] ) )
117
+
118
+ XCTAssertEqual ( Version ( 1 , 2 , 3 , buildMetadataIdentifiers: [ " beta " ] ) , Version ( 1 , 2 , 3 , buildMetadataIdentifiers: [ " beta " ] ) )
119
+ XCTAssertEqual ( Version ( 1 , 2 , 3 , buildMetadataIdentifiers: [ " alpha " ] ) , Version ( 1 , 2 , 3 , buildMetadataIdentifiers: [ " beta " ] ) )
120
+ XCTAssertEqual ( Version ( 1 , 2 , 3 , buildMetadataIdentifiers: [ " alpha1 " ] ) , Version ( 1 , 2 , 3 , buildMetadataIdentifiers: [ " alpha2 " ] ) )
121
+ XCTAssertEqual ( Version ( 1 , 2 , 3 , buildMetadataIdentifiers: [ " alpha " ] ) , Version ( 1 , 2 , 3 , buildMetadataIdentifiers: [ " alpha- " ] ) )
122
+ XCTAssertEqual ( Version ( 1 , 2 , 3 , buildMetadataIdentifiers: [ " beta " , " alpha " ] ) , Version ( 1 , 2 , 3 , buildMetadataIdentifiers: [ " beta " , " beta " ] ) )
123
+ XCTAssertEqual ( Version ( 1 , 2 , 3 , buildMetadataIdentifiers: [ " alpha " , " beta " ] ) , Version ( 1 , 2 , 3 , buildMetadataIdentifiers: [ " beta " , " alpha " ] ) )
124
+
125
+ XCTAssertEqual ( Version ( 1 , 2 , 3 , buildMetadataIdentifiers: [ " 1 " ] ) , Version ( 1 , 2 , 3 , buildMetadataIdentifiers: [ " 1 " ] ) )
126
+ XCTAssertEqual ( Version ( 1 , 2 , 3 , buildMetadataIdentifiers: [ " 1 " ] ) , Version ( 1 , 2 , 3 , buildMetadataIdentifiers: [ " 2 " ] ) )
127
+ XCTAssertEqual ( Version ( 1 , 2 , 3 , buildMetadataIdentifiers: [ " 1 " , " 1 " ] ) , Version ( 1 , 2 , 3 , buildMetadataIdentifiers: [ " 1 " , " 2 " ] ) )
128
+ XCTAssertEqual ( Version ( 1 , 2 , 3 , buildMetadataIdentifiers: [ " 1 " , " 2 " ] ) , Version ( 1 , 2 , 3 , buildMetadataIdentifiers: [ " 2 " , " 1 " ] ) )
129
+
130
+ XCTAssertEqual ( Version ( 1 , 2 , 3 , buildMetadataIdentifiers: [ " 123 " ] ) , Version ( 1 , 2 , 3 , buildMetadataIdentifiers: [ " 123alpha " ] ) )
131
+ XCTAssertEqual ( Version ( 1 , 2 , 3 , buildMetadataIdentifiers: [ " 223 " ] ) , Version ( 1 , 2 , 3 , buildMetadataIdentifiers: [ " 123alpha " ] ) )
132
+
133
+ // MARK: version core vs. version core + pre-release + build metadata
134
+
135
+ XCTAssertGreaterThan ( Version ( 1 , 2 , 3 ) , Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " " ] , buildMetadataIdentifiers: [ " " ] ) )
136
+ XCTAssertGreaterThan ( Version ( 1 , 2 , 3 ) , Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " " ] , buildMetadataIdentifiers: [ " 123alpha " ] ) )
137
+ XCTAssertGreaterThan ( Version ( 1 , 2 , 3 ) , Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " alpha " ] , buildMetadataIdentifiers: [ " alpha " ] ) )
138
+ XCTAssertGreaterThan ( Version ( 1 , 2 , 3 ) , Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " beta " ] , buildMetadataIdentifiers: [ " 123 " ] ) )
139
+ XCTAssertLessThan ( Version ( 1 , 2 , 2 ) , Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " beta " ] , buildMetadataIdentifiers: [ " alpha " , " beta " ] ) )
140
+ XCTAssertLessThan ( Version ( 1 , 2 , 2 ) , Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " beta " ] , buildMetadataIdentifiers: [ " alpha- " ] ) )
141
+
142
+ // MARK: version core + pre-release vs. version core + pre-release + build metadata
143
+
144
+ XCTAssertEqual (
145
+ Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " " ] ) ,
146
+ Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " " ] , buildMetadataIdentifiers: [ " " ] )
147
+ )
148
+
149
+ XCTAssertEqual (
150
+ Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " beta " ] ) ,
151
+ Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " beta " ] , buildMetadataIdentifiers: [ " " ] )
152
+ )
153
+ XCTAssertLessThan (
154
+ Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " alpha " ] ) ,
155
+ Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " beta " ] , buildMetadataIdentifiers: [ " 123alpha " ] )
156
+ )
157
+ XCTAssertLessThan (
158
+ Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " alpha1 " ] ) ,
159
+ Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " alpha2 " ] , buildMetadataIdentifiers: [ " alpha " ] )
160
+ )
161
+ XCTAssertLessThan (
162
+ Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " alpha " ] ) ,
163
+ Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " alpha- " ] , buildMetadataIdentifiers: [ " alpha " , " beta " ] )
164
+ )
165
+ XCTAssertLessThan (
166
+ Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " beta " , " alpha " ] ) ,
167
+ Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " beta " , " beta " ] , buildMetadataIdentifiers: [ " 123 " ] )
168
+ )
169
+ XCTAssertLessThan (
170
+ Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " alpha " , " beta " ] ) ,
171
+ Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " beta " , " alpha " ] , buildMetadataIdentifiers: [ " alpha- " ] )
172
+ )
173
+
174
+ XCTAssertEqual (
175
+ Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " 1 " ] ) ,
176
+ Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " 1 " ] , buildMetadataIdentifiers: [ " " ] )
177
+ )
178
+ XCTAssertLessThan (
179
+ Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " 1 " ] ) ,
180
+ Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " 2 " ] , buildMetadataIdentifiers: [ " 123alpha " ] )
181
+ )
182
+ XCTAssertLessThan (
183
+ Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " 1 " , " 1 " ] ) ,
184
+ Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " 1 " , " 2 " ] , buildMetadataIdentifiers: [ " 123 " ] )
185
+ )
186
+ XCTAssertLessThan (
187
+ Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " 1 " , " 2 " ] ) ,
188
+ Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " 2 " , " 1 " ] , buildMetadataIdentifiers: [ " alpha " , " beta " ] )
189
+ )
190
+
191
+ XCTAssertLessThan (
192
+ Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " 123 " ] ) ,
193
+ Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " 123alpha " ] , buildMetadataIdentifiers: [ " -alpha " ] )
194
+ )
195
+ XCTAssertLessThan (
196
+ Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " 223 " ] ) ,
197
+ Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " 123alpha " ] , buildMetadataIdentifiers: [ " 123 " ] )
198
+ )
199
+
200
+ // MARK: version core + pre-release + build metadata vs. version core + pre-release + build metadata
201
+
202
+ XCTAssertEqual (
203
+ Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " " ] , buildMetadataIdentifiers: [ " " ] ) ,
204
+ Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " " ] , buildMetadataIdentifiers: [ " " ] )
205
+ )
206
+
207
+ XCTAssertEqual (
208
+ Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " beta " ] , buildMetadataIdentifiers: [ " 123 " ] ) ,
209
+ Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " beta " ] , buildMetadataIdentifiers: [ " " ] )
210
+ )
211
+ XCTAssertLessThan (
212
+ Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " alpha " ] , buildMetadataIdentifiers: [ " -alpha " ] ) ,
213
+ Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " beta " ] , buildMetadataIdentifiers: [ " 123alpha " ] )
214
+ )
215
+ XCTAssertLessThan (
216
+ Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " alpha1 " ] , buildMetadataIdentifiers: [ " alpha " , " beta " ] ) ,
217
+ Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " alpha2 " ] , buildMetadataIdentifiers: [ " alpha " ] )
218
+ )
219
+ XCTAssertLessThan (
220
+ Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " alpha " ] , buildMetadataIdentifiers: [ " 123 " ] ) ,
221
+ Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " alpha- " ] , buildMetadataIdentifiers: [ " alpha " , " beta " ] )
222
+ )
223
+ XCTAssertLessThan (
224
+ Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " beta " , " alpha " ] , buildMetadataIdentifiers: [ " 123alpha " ] ) ,
225
+ Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " beta " , " beta " ] , buildMetadataIdentifiers: [ " 123 " ] )
226
+ )
227
+ XCTAssertLessThan (
228
+ Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " alpha " , " beta " ] , buildMetadataIdentifiers: [ " " ] ) ,
229
+ Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " beta " , " alpha " ] , buildMetadataIdentifiers: [ " alpha- " ] )
230
+ )
231
+
232
+ XCTAssertEqual (
233
+ Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " 1 " ] , buildMetadataIdentifiers: [ " alpha- " ] ) ,
234
+ Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " 1 " ] , buildMetadataIdentifiers: [ " " ] )
235
+ )
236
+ XCTAssertLessThan (
237
+ Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " 1 " ] , buildMetadataIdentifiers: [ " 123 " ] ) ,
238
+ Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " 2 " ] , buildMetadataIdentifiers: [ " 123alpha " ] )
239
+ )
240
+ XCTAssertLessThan (
241
+ Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " 1 " , " 1 " ] , buildMetadataIdentifiers: [ " alpha " , " beta " ] ) ,
242
+ Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " 1 " , " 2 " ] , buildMetadataIdentifiers: [ " 123 " ] )
243
+ )
244
+ XCTAssertLessThan (
245
+ Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " 1 " , " 2 " ] , buildMetadataIdentifiers: [ " alpha " ] ) ,
246
+ Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " 2 " , " 1 " ] , buildMetadataIdentifiers: [ " alpha " , " beta " ] )
247
+ )
248
+
249
+ XCTAssertLessThan (
250
+ Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " 123 " ] , buildMetadataIdentifiers: [ " 123alpha " ] ) ,
251
+ Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " 123alpha " ] , buildMetadataIdentifiers: [ " -alpha " ] )
252
+ )
253
+ XCTAssertLessThan (
254
+ Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " 223 " ] , buildMetadataIdentifiers: [ " 123alpha " ] ) ,
255
+ Version ( 1 , 2 , 3 , prereleaseIdentifiers: [ " 123alpha " ] , buildMetadataIdentifiers: [ " 123 " ] )
256
+ )
257
+
258
+ }
259
+
59
260
func testCustomConversionFromVersionToString( ) {
60
261
61
262
// MARK: Version.description
0 commit comments