OLD | NEW |
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 library version_test; | 5 library version_test; |
6 | 6 |
7 import '../../../pkg/unittest/unittest.dart'; | 7 import '../../../pkg/unittest/unittest.dart'; |
8 import '../../pub/utils.dart'; | 8 import '../../pub/utils.dart'; |
9 import '../../pub/version.dart'; | 9 import '../../pub/version.dart'; |
10 | 10 |
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
74 expect(a <= b, equals(i <= j)); | 74 expect(a <= b, equals(i <= j)); |
75 expect(a >= b, equals(i >= j)); | 75 expect(a >= b, equals(i >= j)); |
76 expect(a == b, equals(i == j)); | 76 expect(a == b, equals(i == j)); |
77 expect(a != b, equals(i != j)); | 77 expect(a != b, equals(i != j)); |
78 } | 78 } |
79 } | 79 } |
80 }); | 80 }); |
81 }); | 81 }); |
82 | 82 |
83 test('allows()', () { | 83 test('allows()', () { |
84 expect(v123.allows(v123)); | 84 expect(v123.allows(v123), isTrue); |
85 expect(!v123.allows(v114)); | 85 expect(v123.allows(v114), isFalse); |
86 expect(!v123.allows(v124)); | 86 expect(v123.allows(v124), isFalse); |
87 }); | 87 }); |
88 | 88 |
89 test('intersect()', () { | 89 test('intersect()', () { |
90 // Intersecting the same version returns the version. | 90 // Intersecting the same version returns the version. |
91 expect(v123.intersect(v123), equals(v123)); | 91 expect(v123.intersect(v123), equals(v123)); |
92 | 92 |
93 // Intersecting a different version allows no versions. | 93 // Intersecting a different version allows no versions. |
94 expect(v123.intersect(v114).isEmpty); | 94 expect(v123.intersect(v114).isEmpty, isTrue); |
95 | 95 |
96 // Intersecting a range returns the version if the range allows it. | 96 // Intersecting a range returns the version if the range allows it. |
97 expect(v123.intersect(new VersionRange(min: v114, max: v124)), | 97 expect(v123.intersect(new VersionRange(min: v114, max: v124)), |
98 equals(v123)); | 98 equals(v123)); |
99 | 99 |
100 // Intersecting a range allows no versions if the range doesn't allow it. | 100 // Intersecting a range allows no versions if the range doesn't allow it. |
101 expect(v114.intersect(new VersionRange(min: v123, max: v124)).isEmpty); | 101 expect(v114.intersect(new VersionRange(min: v123, max: v124)).isEmpty, |
| 102 isTrue); |
102 }); | 103 }); |
103 | 104 |
104 test('isEmpty', () { | 105 test('isEmpty', () { |
105 expect(!v123.isEmpty); | 106 expect(v123.isEmpty, isFalse); |
106 }); | 107 }); |
107 | 108 |
108 test('parse()', () { | 109 test('parse()', () { |
109 expect(new Version.parse('0.0.0'), equals(new Version(0, 0, 0))); | 110 expect(new Version.parse('0.0.0'), equals(new Version(0, 0, 0))); |
110 expect(new Version.parse('12.34.56'), equals(new Version(12, 34, 56))); | 111 expect(new Version.parse('12.34.56'), equals(new Version(12, 34, 56))); |
111 | 112 |
112 expect(new Version.parse('1.2.3-alpha.1'), equals( | 113 expect(new Version.parse('1.2.3-alpha.1'), equals( |
113 new Version(1, 2, 3, pre: 'alpha.1'))); | 114 new Version(1, 2, 3, pre: 'alpha.1'))); |
114 expect(new Version.parse('1.2.3-x.7.z-92'), equals( | 115 expect(new Version.parse('1.2.3-x.7.z-92'), equals( |
115 new Version(1, 2, 3, pre: 'x.7.z-92'))); | 116 new Version(1, 2, 3, pre: 'x.7.z-92'))); |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
162 }); | 163 }); |
163 | 164 |
164 test('allows omitting min and max', () { | 165 test('allows omitting min and max', () { |
165 var range = new VersionRange(); | 166 var range = new VersionRange(); |
166 expect(range.min, isNull); | 167 expect(range.min, isNull); |
167 expect(range.max, isNull); | 168 expect(range.max, isNull); |
168 }); | 169 }); |
169 | 170 |
170 test('takes includeMin', () { | 171 test('takes includeMin', () { |
171 var range = new VersionRange(min: v123, includeMin: true); | 172 var range = new VersionRange(min: v123, includeMin: true); |
172 expect(range.includeMin); | 173 expect(range.includeMin, isTrue); |
173 }); | 174 }); |
174 | 175 |
175 test('includeMin defaults to false if omitted', () { | 176 test('includeMin defaults to false if omitted', () { |
176 var range = new VersionRange(min: v123); | 177 var range = new VersionRange(min: v123); |
177 expect(range.includeMin, isFalse); | 178 expect(range.includeMin, isFalse); |
178 }); | 179 }); |
179 | 180 |
180 test('takes includeMax', () { | 181 test('takes includeMax', () { |
181 var range = new VersionRange(max: v123, includeMax: true); | 182 var range = new VersionRange(max: v123, includeMax: true); |
182 expect(range.includeMax); | 183 expect(range.includeMax, isTrue); |
183 }); | 184 }); |
184 | 185 |
185 test('includeMax defaults to false if omitted', () { | 186 test('includeMax defaults to false if omitted', () { |
186 var range = new VersionRange(max: v123); | 187 var range = new VersionRange(max: v123); |
187 expect(range.includeMax, isFalse); | 188 expect(range.includeMax, isFalse); |
188 }); | 189 }); |
189 | 190 |
190 test('throws if min > max', () { | 191 test('throws if min > max', () { |
191 throwsIllegalArg(() => new VersionRange(min: v124, max: v123)); | 192 throwsIllegalArg(() => new VersionRange(min: v124, max: v123)); |
192 }); | 193 }); |
193 }); | 194 }); |
194 | 195 |
195 group('allows()', () { | 196 group('allows()', () { |
196 test('version must be greater than min', () { | 197 test('version must be greater than min', () { |
197 var range = new VersionRange(min: v123, max: v234); | 198 var range = new VersionRange(min: v123, max: v234); |
198 | 199 |
199 expect(!range.allows(new Version.parse('1.2.2'))); | 200 expect(range.allows(new Version.parse('1.2.2')), isFalse); |
200 expect(!range.allows(new Version.parse('1.2.3'))); | 201 expect(range.allows(new Version.parse('1.2.3')), isFalse); |
201 expect(range.allows(new Version.parse('1.3.3'))); | 202 expect(range.allows(new Version.parse('1.3.3')), isTrue); |
202 expect(range.allows(new Version.parse('2.3.3'))); | 203 expect(range.allows(new Version.parse('2.3.3')), isTrue); |
203 }); | 204 }); |
204 | 205 |
205 test('version must be min or greater if includeMin', () { | 206 test('version must be min or greater if includeMin', () { |
206 var range = new VersionRange(min: v123, max: v234, includeMin: true); | 207 var range = new VersionRange(min: v123, max: v234, includeMin: true); |
207 | 208 |
208 expect(!range.allows(new Version.parse('1.2.2'))); | 209 expect(range.allows(new Version.parse('1.2.2')), isFalse); |
209 expect(range.allows(new Version.parse('1.2.3'))); | 210 expect(range.allows(new Version.parse('1.2.3')), isTrue); |
210 expect(range.allows(new Version.parse('1.3.3'))); | 211 expect(range.allows(new Version.parse('1.3.3')), isTrue); |
211 expect(range.allows(new Version.parse('2.3.3'))); | 212 expect(range.allows(new Version.parse('2.3.3')), isTrue); |
212 }); | 213 }); |
213 | 214 |
214 test('version must be less than max', () { | 215 test('version must be less than max', () { |
215 var range = new VersionRange(min: v123, max: v234); | 216 var range = new VersionRange(min: v123, max: v234); |
216 | 217 |
217 expect(range.allows(new Version.parse('2.3.3'))); | 218 expect(range.allows(new Version.parse('2.3.3')), isTrue); |
218 expect(!range.allows(new Version.parse('2.3.4'))); | 219 expect(range.allows(new Version.parse('2.3.4')), isFalse); |
219 expect(!range.allows(new Version.parse('2.4.3'))); | 220 expect(range.allows(new Version.parse('2.4.3')), isFalse); |
220 }); | 221 }); |
221 | 222 |
222 test('version must be max or less if includeMax', () { | 223 test('version must be max or less if includeMax', () { |
223 var range = new VersionRange(min: v123, max: v234, includeMax: true); | 224 var range = new VersionRange(min: v123, max: v234, includeMax: true); |
224 | 225 |
225 expect(range.allows(new Version.parse('2.3.3'))); | 226 expect(range.allows(new Version.parse('2.3.3')), isTrue); |
226 expect(range.allows(new Version.parse('2.3.4'))); | 227 expect(range.allows(new Version.parse('2.3.4')), isTrue); |
227 expect(!range.allows(new Version.parse('2.4.3'))); | 228 expect(range.allows(new Version.parse('2.4.3')), isFalse); |
228 }); | 229 }); |
229 | 230 |
230 test('has no min if one was not set', () { | 231 test('has no min if one was not set', () { |
231 var range = new VersionRange(max: v123); | 232 var range = new VersionRange(max: v123); |
232 | 233 |
233 expect(range.allows(new Version.parse('0.0.0'))); | 234 expect(range.allows(new Version.parse('0.0.0')), isTrue); |
234 expect(!range.allows(new Version.parse('1.2.3'))); | 235 expect(range.allows(new Version.parse('1.2.3')), isFalse); |
235 }); | 236 }); |
236 | 237 |
237 test('has no max if one was not set', () { | 238 test('has no max if one was not set', () { |
238 var range = new VersionRange(min: v123); | 239 var range = new VersionRange(min: v123); |
239 | 240 |
240 expect(!range.allows(new Version.parse('1.2.3'))); | 241 expect(range.allows(new Version.parse('1.2.3')), isFalse); |
241 expect(range.allows(new Version.parse('1.3.3'))); | 242 expect(range.allows(new Version.parse('1.3.3')), isTrue); |
242 expect(range.allows(new Version.parse('999.3.3'))); | 243 expect(range.allows(new Version.parse('999.3.3')), isTrue); |
243 }); | 244 }); |
244 | 245 |
245 test('allows any version if there is no min or max', () { | 246 test('allows any version if there is no min or max', () { |
246 var range = new VersionRange(); | 247 var range = new VersionRange(); |
247 | 248 |
248 expect(range.allows(new Version.parse('0.0.0'))); | 249 expect(range.allows(new Version.parse('0.0.0')), isTrue); |
249 expect(range.allows(new Version.parse('999.99.9'))); | 250 expect(range.allows(new Version.parse('999.99.9')), isTrue); |
250 }); | 251 }); |
251 }); | 252 }); |
252 | 253 |
253 group('intersect()', () { | 254 group('intersect()', () { |
254 test('two overlapping ranges', () { | 255 test('two overlapping ranges', () { |
255 var a = new VersionRange(min: v123, max: v250); | 256 var a = new VersionRange(min: v123, max: v250); |
256 var b = new VersionRange(min: v200, max: v300); | 257 var b = new VersionRange(min: v200, max: v300); |
257 var intersect = a.intersect(b); | 258 var intersect = a.intersect(b); |
258 expect(intersect.min, equals(v200)); | 259 expect(intersect.min, equals(v200)); |
259 expect(intersect.max, equals(v250)); | 260 expect(intersect.max, equals(v250)); |
260 expect(intersect.includeMin, isFalse); | 261 expect(intersect.includeMin, isFalse); |
261 expect(intersect.includeMax, isFalse); | 262 expect(intersect.includeMax, isFalse); |
262 }); | 263 }); |
263 | 264 |
264 test('a non-overlapping range allows no versions', () { | 265 test('a non-overlapping range allows no versions', () { |
265 var a = new VersionRange(min: v114, max: v124); | 266 var a = new VersionRange(min: v114, max: v124); |
266 var b = new VersionRange(min: v200, max: v250); | 267 var b = new VersionRange(min: v200, max: v250); |
267 expect(a.intersect(b).isEmpty); | 268 expect(a.intersect(b).isEmpty, isTrue); |
268 }); | 269 }); |
269 | 270 |
270 test('adjacent ranges allow no versions if exclusive', () { | 271 test('adjacent ranges allow no versions if exclusive', () { |
271 var a = new VersionRange(min: v114, max: v124, includeMax: false); | 272 var a = new VersionRange(min: v114, max: v124, includeMax: false); |
272 var b = new VersionRange(min: v124, max: v200, includeMin: true); | 273 var b = new VersionRange(min: v124, max: v200, includeMin: true); |
273 expect(a.intersect(b).isEmpty); | 274 expect(a.intersect(b).isEmpty, isTrue); |
274 }); | 275 }); |
275 | 276 |
276 test('adjacent ranges allow version if inclusive', () { | 277 test('adjacent ranges allow version if inclusive', () { |
277 var a = new VersionRange(min: v114, max: v124, includeMax: true); | 278 var a = new VersionRange(min: v114, max: v124, includeMax: true); |
278 var b = new VersionRange(min: v124, max: v200, includeMin: true); | 279 var b = new VersionRange(min: v124, max: v200, includeMin: true); |
279 expect(a.intersect(b), equals(v124)); | 280 expect(a.intersect(b), equals(v124)); |
280 }); | 281 }); |
281 | 282 |
282 test('with an open range', () { | 283 test('with an open range', () { |
283 var open = new VersionRange(); | 284 var open = new VersionRange(); |
284 var a = new VersionRange(min: v114, max: v124); | 285 var a = new VersionRange(min: v114, max: v124); |
285 expect(open.intersect(open), equals(open)); | 286 expect(open.intersect(open), equals(open)); |
286 expect(a.intersect(open), equals(a)); | 287 expect(a.intersect(open), equals(a)); |
287 }); | 288 }); |
288 | 289 |
289 test('returns the version if the range allows it', () { | 290 test('returns the version if the range allows it', () { |
290 expect(new VersionRange(min: v114, max: v124).intersect(v123), | 291 expect(new VersionRange(min: v114, max: v124).intersect(v123), |
291 equals(v123)); | 292 equals(v123)); |
292 expect(new VersionRange(min: v123, max: v124).intersect(v114).isEmpty); | 293 expect(new VersionRange(min: v123, max: v124).intersect(v114).isEmpty, |
| 294 isTrue); |
293 }); | 295 }); |
294 }); | 296 }); |
295 | 297 |
296 test('isEmpty', () { | 298 test('isEmpty', () { |
297 expect(new VersionRange().isEmpty, isFalse); | 299 expect(new VersionRange().isEmpty, isFalse); |
298 expect(new VersionRange(min: v123, max: v124).isEmpty, isFalse); | 300 expect(new VersionRange(min: v123, max: v124).isEmpty, isFalse); |
299 }); | 301 }); |
300 }); | 302 }); |
301 | 303 |
302 group('VersionConstraint', () { | 304 group('VersionConstraint', () { |
303 test('empty', () { | 305 test('empty', () { |
304 expect(new VersionConstraint.empty().isEmpty); | 306 expect(new VersionConstraint.empty().isEmpty, isTrue); |
305 }); | 307 }); |
306 | 308 |
307 group('parse()', () { | 309 group('parse()', () { |
308 test('parses an exact version', () { | 310 test('parses an exact version', () { |
309 var constraint = new VersionConstraint.parse('1.2.3-alpha'); | 311 var constraint = new VersionConstraint.parse('1.2.3-alpha'); |
310 expect(constraint is Version); | 312 expect(constraint is Version, isTrue); |
311 expect(constraint, equals(new Version(1, 2, 3, pre: 'alpha'))); | 313 expect(constraint, equals(new Version(1, 2, 3, pre: 'alpha'))); |
312 }); | 314 }); |
313 | 315 |
314 test('parses "any"', () { | 316 test('parses "any"', () { |
315 var constraint = new VersionConstraint.parse('any'); | 317 var constraint = new VersionConstraint.parse('any'); |
316 expect(constraint is VersionConstraint); | 318 expect(constraint is VersionConstraint, isTrue); |
317 expect(constraint, allows([ | 319 expect(constraint, allows([ |
318 new Version.parse('0.0.0'), | 320 new Version.parse('0.0.0'), |
319 new Version.parse('1.2.3'), | 321 new Version.parse('1.2.3'), |
320 new Version.parse('12345.678.90')])); | 322 new Version.parse('12345.678.90')])); |
321 }); | 323 }); |
322 | 324 |
323 test('parses a ">" minimum version', () { | 325 test('parses a ">" minimum version', () { |
324 expect(new VersionConstraint.parse('>1.2.3'), allows([ | 326 expect(new VersionConstraint.parse('>1.2.3'), allows([ |
325 new Version.parse('1.2.3+foo'), | 327 new Version.parse('1.2.3+foo'), |
326 new Version.parse('1.2.4')])); | 328 new Version.parse('1.2.4')])); |
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
424 | 426 |
425 Matcher allows(List<Version> versions) => | 427 Matcher allows(List<Version> versions) => |
426 new VersionConstraintMatcher(versions, true); | 428 new VersionConstraintMatcher(versions, true); |
427 | 429 |
428 Matcher doesNotAllow(List<Version> versions) => | 430 Matcher doesNotAllow(List<Version> versions) => |
429 new VersionConstraintMatcher(versions, false); | 431 new VersionConstraintMatcher(versions, false); |
430 | 432 |
431 throwsIllegalArg(function) { | 433 throwsIllegalArg(function) { |
432 expect(function, throwsA((e) => e is ArgumentError)); | 434 expect(function, throwsA((e) => e is ArgumentError)); |
433 } | 435 } |
OLD | NEW |