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 'package:unittest/unittest.dart'; | 7 import 'package:unittest/unittest.dart'; |
8 import 'test_pub.dart'; | 8 import 'test_pub.dart'; |
9 import '../lib/src/version.dart'; | 9 import '../lib/src/version.dart'; |
10 | 10 |
(...skipping 235 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
246 expect(range.includeMax, isFalse); | 246 expect(range.includeMax, isFalse); |
247 }); | 247 }); |
248 | 248 |
249 test('throws if min > max', () { | 249 test('throws if min > max', () { |
250 throwsIllegalArg(() => new VersionRange(min: v124, max: v123)); | 250 throwsIllegalArg(() => new VersionRange(min: v124, max: v123)); |
251 }); | 251 }); |
252 }); | 252 }); |
253 | 253 |
254 group('allows()', () { | 254 group('allows()', () { |
255 test('version must be greater than min', () { | 255 test('version must be greater than min', () { |
256 var range = new VersionRange(min: v123, max: v234); | 256 var range = new VersionRange(min: v123); |
257 | 257 |
258 expect(range.allows(new Version.parse('1.2.2')), isFalse); | 258 expect(range.allows(new Version.parse('1.2.2')), isFalse); |
259 expect(range.allows(new Version.parse('1.2.3')), isFalse); | 259 expect(range.allows(new Version.parse('1.2.3')), isFalse); |
260 expect(range.allows(new Version.parse('1.3.3')), isTrue); | 260 expect(range.allows(new Version.parse('1.3.3')), isTrue); |
261 expect(range.allows(new Version.parse('2.3.3')), isTrue); | 261 expect(range.allows(new Version.parse('2.3.3')), isTrue); |
262 }); | 262 }); |
263 | 263 |
264 test('version must be min or greater if includeMin', () { | 264 test('version must be min or greater if includeMin', () { |
265 var range = new VersionRange(min: v123, max: v234, includeMin: true); | 265 var range = new VersionRange(min: v123, includeMin: true); |
266 | 266 |
267 expect(range.allows(new Version.parse('1.2.2')), isFalse); | 267 expect(range.allows(new Version.parse('1.2.2')), isFalse); |
268 expect(range.allows(new Version.parse('1.2.3')), isTrue); | 268 expect(range.allows(new Version.parse('1.2.3')), isTrue); |
269 expect(range.allows(new Version.parse('1.3.3')), isTrue); | 269 expect(range.allows(new Version.parse('1.3.3')), isTrue); |
270 expect(range.allows(new Version.parse('2.3.3')), isTrue); | 270 expect(range.allows(new Version.parse('2.3.3')), isTrue); |
271 }); | 271 }); |
272 | 272 |
| 273 test('pre-release versions of inclusive min are excluded', () { |
| 274 var range = new VersionRange(min: v123, includeMin: true); |
| 275 |
| 276 expect(range.allows(new Version.parse('1.2.3-dev')), isFalse); |
| 277 expect(range.allows(new Version.parse('1.2.4-dev')), isTrue); |
| 278 }); |
| 279 |
273 test('version must be less than max', () { | 280 test('version must be less than max', () { |
274 var range = new VersionRange(min: v123, max: v234); | 281 var range = new VersionRange(max: v234); |
275 | 282 |
276 expect(range.allows(new Version.parse('2.3.3')), isTrue); | 283 expect(range.allows(new Version.parse('2.3.3')), isTrue); |
277 expect(range.allows(new Version.parse('2.3.4')), isFalse); | 284 expect(range.allows(new Version.parse('2.3.4')), isFalse); |
278 expect(range.allows(new Version.parse('2.4.3')), isFalse); | 285 expect(range.allows(new Version.parse('2.4.3')), isFalse); |
279 }); | 286 }); |
280 | 287 |
| 288 test('pre-release versions of non-pre-release max are excluded', () { |
| 289 var range = new VersionRange(max: v234); |
| 290 |
| 291 expect(range.allows(new Version.parse('2.3.3')), isTrue); |
| 292 expect(range.allows(new Version.parse('2.3.4-dev')), isFalse); |
| 293 expect(range.allows(new Version.parse('2.3.4')), isFalse); |
| 294 }); |
| 295 |
| 296 test('pre-release versions of pre-release max are included', () { |
| 297 var range = new VersionRange(max: new Version.parse('2.3.4-dev.2')); |
| 298 |
| 299 expect(range.allows(new Version.parse('2.3.4-dev.1')), isTrue); |
| 300 expect(range.allows(new Version.parse('2.3.4-dev.2')), isFalse); |
| 301 expect(range.allows(new Version.parse('2.3.4-dev.3')), isFalse); |
| 302 }); |
| 303 |
281 test('version must be max or less if includeMax', () { | 304 test('version must be max or less if includeMax', () { |
282 var range = new VersionRange(min: v123, max: v234, includeMax: true); | 305 var range = new VersionRange(min: v123, max: v234, includeMax: true); |
283 | 306 |
284 expect(range.allows(new Version.parse('2.3.3')), isTrue); | 307 expect(range.allows(new Version.parse('2.3.3')), isTrue); |
285 expect(range.allows(new Version.parse('2.3.4')), isTrue); | 308 expect(range.allows(new Version.parse('2.3.4')), isTrue); |
286 expect(range.allows(new Version.parse('2.4.3')), isFalse); | 309 expect(range.allows(new Version.parse('2.4.3')), isFalse); |
| 310 |
| 311 // Pre-releases of the max are allowed. |
| 312 expect(range.allows(new Version.parse('2.3.4-dev')), isTrue); |
287 }); | 313 }); |
288 | 314 |
289 test('has no min if one was not set', () { | 315 test('has no min if one was not set', () { |
290 var range = new VersionRange(max: v123); | 316 var range = new VersionRange(max: v123); |
291 | 317 |
292 expect(range.allows(new Version.parse('0.0.0')), isTrue); | 318 expect(range.allows(new Version.parse('0.0.0')), isTrue); |
293 expect(range.allows(new Version.parse('1.2.3')), isFalse); | 319 expect(range.allows(new Version.parse('1.2.3')), isFalse); |
294 }); | 320 }); |
295 | 321 |
296 test('has no max if one was not set', () { | 322 test('has no max if one was not set', () { |
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
409 new Version.parse('1.2.3+foo'), | 435 new Version.parse('1.2.3+foo'), |
410 new Version.parse('1.2.4')])); | 436 new Version.parse('1.2.4')])); |
411 expect(new VersionConstraint.parse('>=1.2.3'), doesNotAllow([ | 437 expect(new VersionConstraint.parse('>=1.2.3'), doesNotAllow([ |
412 new Version.parse('1.2.1'), | 438 new Version.parse('1.2.1'), |
413 new Version.parse('1.2.3-build')])); | 439 new Version.parse('1.2.3-build')])); |
414 }); | 440 }); |
415 | 441 |
416 test('parses a "<" maximum version', () { | 442 test('parses a "<" maximum version', () { |
417 expect(new VersionConstraint.parse('<1.2.3'), allows([ | 443 expect(new VersionConstraint.parse('<1.2.3'), allows([ |
418 new Version.parse('1.2.1'), | 444 new Version.parse('1.2.1'), |
419 new Version.parse('1.2.3-build')])); | 445 new Version.parse('1.2.2+foo')])); |
420 expect(new VersionConstraint.parse('<1.2.3'), doesNotAllow([ | 446 expect(new VersionConstraint.parse('<1.2.3'), doesNotAllow([ |
421 new Version.parse('1.2.3'), | 447 new Version.parse('1.2.3'), |
422 new Version.parse('1.2.3+foo'), | 448 new Version.parse('1.2.3+foo'), |
423 new Version.parse('1.2.4')])); | 449 new Version.parse('1.2.4')])); |
424 }); | 450 }); |
425 | 451 |
426 test('parses a "<=" maximum version', () { | 452 test('parses a "<=" maximum version', () { |
427 expect(new VersionConstraint.parse('<=1.2.3'), allows([ | 453 expect(new VersionConstraint.parse('<=1.2.3'), allows([ |
428 new Version.parse('1.2.1'), | 454 new Version.parse('1.2.1'), |
429 new Version.parse('1.2.3-build'), | 455 new Version.parse('1.2.3-build'), |
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
523 | 549 |
524 Matcher allows(List<Version> versions) => | 550 Matcher allows(List<Version> versions) => |
525 new VersionConstraintMatcher(versions, true); | 551 new VersionConstraintMatcher(versions, true); |
526 | 552 |
527 Matcher doesNotAllow(List<Version> versions) => | 553 Matcher doesNotAllow(List<Version> versions) => |
528 new VersionConstraintMatcher(versions, false); | 554 new VersionConstraintMatcher(versions, false); |
529 | 555 |
530 throwsIllegalArg(function) { | 556 throwsIllegalArg(function) { |
531 expect(function, throwsA((e) => e is ArgumentError)); | 557 expect(function, throwsA((e) => e is ArgumentError)); |
532 } | 558 } |
OLD | NEW |