OLD | NEW |
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, 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 import 'package:test/test.dart'; | 5 import 'package:test/test.dart'; |
6 | 6 |
7 import 'package:pub_semver/pub_semver.dart'; | 7 import 'package:pub_semver/pub_semver.dart'; |
8 | 8 |
9 import 'utils.dart'; | 9 import 'utils.dart'; |
10 | 10 |
(...skipping 322 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
333 expect(intersect.includeMax, isFalse); | 333 expect(intersect.includeMax, isFalse); |
334 }); | 334 }); |
335 | 335 |
336 test('a non-overlapping range allows no versions', () { | 336 test('a non-overlapping range allows no versions', () { |
337 var a = new VersionRange(min: v114, max: v124); | 337 var a = new VersionRange(min: v114, max: v124); |
338 var b = new VersionRange(min: v200, max: v250); | 338 var b = new VersionRange(min: v200, max: v250); |
339 expect(a.intersect(b).isEmpty, isTrue); | 339 expect(a.intersect(b).isEmpty, isTrue); |
340 }); | 340 }); |
341 | 341 |
342 test('adjacent ranges allow no versions if exclusive', () { | 342 test('adjacent ranges allow no versions if exclusive', () { |
343 var a = new VersionRange(min: v114, max: v124, includeMax: false); | 343 var a = new VersionRange(min: v114, max: v124); |
344 var b = new VersionRange(min: v124, max: v200, includeMin: true); | 344 var b = new VersionRange(min: v124, max: v200); |
345 expect(a.intersect(b).isEmpty, isTrue); | 345 expect(a.intersect(b).isEmpty, isTrue); |
346 }); | 346 }); |
347 | 347 |
348 test('adjacent ranges allow version if inclusive', () { | 348 test('adjacent ranges allow version if inclusive', () { |
349 var a = new VersionRange(min: v114, max: v124, includeMax: true); | 349 var a = new VersionRange(min: v114, max: v124, includeMax: true); |
350 var b = new VersionRange(min: v124, max: v200, includeMin: true); | 350 var b = new VersionRange(min: v124, max: v200, includeMin: true); |
351 expect(a.intersect(b), equals(v124)); | 351 expect(a.intersect(b), equals(v124)); |
352 }); | 352 }); |
353 | 353 |
354 test('with an open range', () { | 354 test('with an open range', () { |
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
434 }); | 434 }); |
435 | 435 |
436 test("includes edges if either range does", () { | 436 test("includes edges if either range does", () { |
437 var result = new VersionRange(min: v003, max: v114, includeMin: true) | 437 var result = new VersionRange(min: v003, max: v114, includeMin: true) |
438 .union(new VersionRange(min: v003, max: v114, includeMax: true)); | 438 .union(new VersionRange(min: v003, max: v114, includeMax: true)); |
439 expect(result, equals(new VersionRange( | 439 expect(result, equals(new VersionRange( |
440 min: v003, max: v114, includeMin: true, includeMax: true))); | 440 min: v003, max: v114, includeMin: true, includeMax: true))); |
441 }); | 441 }); |
442 }); | 442 }); |
443 | 443 |
| 444 group('difference()', () { |
| 445 test("with an empty range returns the original range", () { |
| 446 expect( |
| 447 new VersionRange(min: v003, max: v114) |
| 448 .difference(VersionConstraint.empty), |
| 449 equals(new VersionRange(min: v003, max: v114))); |
| 450 }); |
| 451 |
| 452 test("with a version outside the range returns the original range", () { |
| 453 expect( |
| 454 new VersionRange(min: v003, max: v114).difference(v200), |
| 455 equals(new VersionRange(min: v003, max: v114))); |
| 456 }); |
| 457 |
| 458 test("with a version in the range splits the range", () { |
| 459 expect( |
| 460 new VersionRange(min: v003, max: v114).difference(v072), |
| 461 equals(new VersionConstraint.unionOf([ |
| 462 new VersionRange(min: v003, max: v072), |
| 463 new VersionRange(min: v072, max: v114) |
| 464 ]))); |
| 465 }); |
| 466 |
| 467 test("with the max version makes the max exclusive", () { |
| 468 expect( |
| 469 new VersionRange(min: v003, max: v114, includeMax: true) |
| 470 .difference(v114), |
| 471 equals(new VersionRange(min: v003, max: v114))); |
| 472 }); |
| 473 |
| 474 test("with the min version makes the min exclusive", () { |
| 475 expect( |
| 476 new VersionRange(min: v003, max: v114, includeMin: true) |
| 477 .difference(v003), |
| 478 equals(new VersionRange(min: v003, max: v114))); |
| 479 }); |
| 480 |
| 481 test("with a disjoint range returns the original", () { |
| 482 expect( |
| 483 new VersionRange(min: v003, max: v114) |
| 484 .difference(new VersionRange(min: v123, max: v140)), |
| 485 equals(new VersionRange(min: v003, max: v114))); |
| 486 }); |
| 487 |
| 488 test("with an adjacent range returns the original", () { |
| 489 expect( |
| 490 new VersionRange(min: v003, max: v114, includeMax: true) |
| 491 .difference(new VersionRange(min: v114, max: v140)), |
| 492 equals(new VersionRange(min: v003, max: v114, includeMax: true))); |
| 493 }); |
| 494 |
| 495 test("with a range at the beginning cuts off the beginning of the range", |
| 496 () { |
| 497 expect( |
| 498 new VersionRange(min: v080, max: v130) |
| 499 .difference(new VersionRange(min: v010, max: v114)), |
| 500 equals(new VersionRange(min: v114, max: v130, includeMin: true))); |
| 501 expect( |
| 502 new VersionRange(min: v080, max: v130) |
| 503 .difference(new VersionRange(max: v114)), |
| 504 equals(new VersionRange(min: v114, max: v130, includeMin: true))); |
| 505 expect( |
| 506 new VersionRange(min: v080, max: v130).difference( |
| 507 new VersionRange(min: v010, max: v114, includeMax: true)), |
| 508 equals(new VersionRange(min: v114, max: v130))); |
| 509 expect( |
| 510 new VersionRange(min: v080, max: v130, includeMin: true).difference( |
| 511 new VersionRange(min: v010, max: v080, includeMax: true)), |
| 512 equals(new VersionRange(min: v080, max: v130))); |
| 513 expect( |
| 514 new VersionRange(min: v080, max: v130, includeMax: true) |
| 515 .difference(new VersionRange(min: v080, max: v130)), |
| 516 equals(v130)); |
| 517 }); |
| 518 |
| 519 test("with a range at the end cuts off the end of the range", |
| 520 () { |
| 521 expect( |
| 522 new VersionRange(min: v080, max: v130) |
| 523 .difference(new VersionRange(min: v114, max: v140)), |
| 524 equals(new VersionRange(min: v080, max: v114, includeMax: true))); |
| 525 expect( |
| 526 new VersionRange(min: v080, max: v130) |
| 527 .difference(new VersionRange(min: v114)), |
| 528 equals(new VersionRange(min: v080, max: v114, includeMax: true))); |
| 529 expect( |
| 530 new VersionRange(min: v080, max: v130).difference( |
| 531 new VersionRange(min: v114, max: v140, includeMin: true)), |
| 532 equals(new VersionRange(min: v080, max: v114))); |
| 533 expect( |
| 534 new VersionRange(min: v080, max: v130, includeMax: true).difference( |
| 535 new VersionRange(min: v130, max: v140, includeMin: true)), |
| 536 equals(new VersionRange(min: v080, max: v130))); |
| 537 expect( |
| 538 new VersionRange(min: v080, max: v130, includeMin: true) |
| 539 .difference(new VersionRange(min: v080, max: v130)), |
| 540 equals(v080)); |
| 541 }); |
| 542 |
| 543 test("with a range in the middle cuts the range in half", () { |
| 544 expect( |
| 545 new VersionRange(min: v003, max: v130) |
| 546 .difference(new VersionRange(min: v072, max: v114)), |
| 547 equals(new VersionConstraint.unionOf([ |
| 548 new VersionRange(min: v003, max: v072, includeMax: true), |
| 549 new VersionRange(min: v114, max: v130, includeMin: true) |
| 550 ]))); |
| 551 }); |
| 552 |
| 553 test("with a totally covering range returns empty", () { |
| 554 expect( |
| 555 new VersionRange(min: v114, max: v200) |
| 556 .difference(new VersionRange(min: v072, max: v300)), |
| 557 isEmpty); |
| 558 expect( |
| 559 new VersionRange(min: v003, max: v114) |
| 560 .difference(new VersionRange(min: v003, max: v114)), |
| 561 isEmpty); |
| 562 expect( |
| 563 new VersionRange( |
| 564 min: v003, max: v114, includeMin: true, includeMax: true) |
| 565 .difference(new VersionRange( |
| 566 min: v003, max: v114, includeMin: true, includeMax: true)), |
| 567 isEmpty); |
| 568 }); |
| 569 |
| 570 test("with a version union that doesn't cover the range, returns the " |
| 571 "original", () { |
| 572 expect( |
| 573 new VersionRange(min: v114, max: v140) |
| 574 .difference(new VersionConstraint.unionOf([v010, v200])), |
| 575 equals(new VersionRange(min: v114, max: v140))); |
| 576 }); |
| 577 |
| 578 test("with a version union that intersects the ends, chops them off", () { |
| 579 expect( |
| 580 new VersionRange(min: v114, max: v140) |
| 581 .difference(new VersionConstraint.unionOf([ |
| 582 new VersionRange(min: v080, max: v123), |
| 583 new VersionRange(min: v130, max: v200) |
| 584 ])), |
| 585 equals(new VersionRange( |
| 586 min: v123, max: v130, includeMin: true, includeMax: true))); |
| 587 }); |
| 588 |
| 589 test("with a version union that intersects the middle, chops it up", () { |
| 590 expect( |
| 591 new VersionRange(min: v114, max: v140) |
| 592 .difference(new VersionConstraint.unionOf([v123, v124, v130])), |
| 593 equals(new VersionConstraint.unionOf([ |
| 594 new VersionRange(min: v114, max: v123), |
| 595 new VersionRange(min: v123, max: v124), |
| 596 new VersionRange(min: v124, max: v130), |
| 597 new VersionRange(min: v130, max: v140) |
| 598 ]))); |
| 599 }); |
| 600 }); |
| 601 |
444 test('isEmpty', () { | 602 test('isEmpty', () { |
445 expect(new VersionRange().isEmpty, isFalse); | 603 expect(new VersionRange().isEmpty, isFalse); |
446 expect(new VersionRange(min: v123, max: v124).isEmpty, isFalse); | 604 expect(new VersionRange(min: v123, max: v124).isEmpty, isFalse); |
447 }); | 605 }); |
448 | 606 |
449 group('compareTo()', () { | 607 group('compareTo()', () { |
450 test("orders by minimum first", () { | 608 test("orders by minimum first", () { |
451 _expectComparesSmaller( | 609 _expectComparesSmaller( |
452 new VersionRange(min: v003, max: v080), | 610 new VersionRange(min: v003, max: v080), |
453 new VersionRange(min: v010, max: v072)); | 611 new VersionRange(min: v010, max: v072)); |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
496 }); | 654 }); |
497 }); | 655 }); |
498 } | 656 } |
499 | 657 |
500 void _expectComparesSmaller(VersionRange smaller, VersionRange larger) { | 658 void _expectComparesSmaller(VersionRange smaller, VersionRange larger) { |
501 expect(smaller.compareTo(larger), lessThan(0), | 659 expect(smaller.compareTo(larger), lessThan(0), |
502 reason: "expected $smaller to sort below $larger"); | 660 reason: "expected $smaller to sort below $larger"); |
503 expect(larger.compareTo(smaller), greaterThan(0), | 661 expect(larger.compareTo(smaller), greaterThan(0), |
504 reason: "expected $larger to sort above $smaller"); | 662 reason: "expected $larger to sort above $smaller"); |
505 } | 663 } |
OLD | NEW |