@@ -712,3 +712,77 @@ test('\nmin satisfying', function(t) {
712
712
} ) ;
713
713
t . end ( ) ;
714
714
} ) ;
715
+
716
+ test ( '\nintersect comparators' , function ( t ) {
717
+ [
718
+ // One is a Version
719
+ [ '1.3.0' , '>=1.3.0' , true ] ,
720
+ [ '1.3.0' , '>1.3.0' , false ] ,
721
+ [ '>=1.3.0' , '1.3.0' , true ] ,
722
+ [ '>1.3.0' , '1.3.0' , false ] ,
723
+ // Same direction increasing
724
+ [ '>1.3.0' , '>1.2.0' , true ] ,
725
+ [ '>1.2.0' , '>1.3.0' , true ] ,
726
+ [ '>=1.2.0' , '>1.3.0' , true ] ,
727
+ [ '>1.2.0' , '>=1.3.0' , true ] ,
728
+ // Same direction decreasing
729
+ [ '<1.3.0' , '<1.2.0' , true ] ,
730
+ [ '<1.2.0' , '<1.3.0' , true ] ,
731
+ [ '<=1.2.0' , '<1.3.0' , true ] ,
732
+ [ '<1.2.0' , '<=1.3.0' , true ] ,
733
+ // Different directions, same semver and inclusive operator
734
+ [ '>=1.3.0' , '<=1.3.0' , true ] ,
735
+ [ '>=1.3.0' , '>=1.3.0' , true ] ,
736
+ [ '<=1.3.0' , '<=1.3.0' , true ] ,
737
+ [ '>1.3.0' , '<=1.3.0' , false ] ,
738
+ [ '>=1.3.0' , '<1.3.0' , false ] ,
739
+ // Opposite matching directions
740
+ [ '>1.0.0' , '<2.0.0' , true ] ,
741
+ [ '>=1.0.0' , '<2.0.0' , true ] ,
742
+ [ '>=1.0.0' , '<=2.0.0' , true ] ,
743
+ [ '>1.0.0' , '<=2.0.0' , true ] ,
744
+ [ '<=2.0.0' , '>1.0.0' , true ] ,
745
+ [ '<=1.0.0' , '>=2.0.0' , false ]
746
+ ] . forEach ( function ( v ) {
747
+ var comparator1 = v [ 0 ] ;
748
+ var comparator2 = v [ 1 ] ;
749
+ var expect = v [ 2 ] ;
750
+ var actual = semver . comparatorsIntersect ( comparator1 , comparator2 ) ;
751
+ t . equal ( actual , expect ) ;
752
+ } ) ;
753
+ t . end ( ) ;
754
+ } ) ;
755
+
756
+ test ( '\ncomparator satisfies range' , function ( t ) {
757
+ [
758
+ [ '1.3.0' , '1.3.0 || <1.0.0 >2.0.0' , true ] ,
759
+ [ '1.3.0' , '<1.0.0 >2.0.0' , false ] ,
760
+ [ '>=1.3.0' , '<1.3.0' , false ] ,
761
+ [ '<1.3.0' , '>=1.3.0' , false ]
762
+ ] . forEach ( function ( v ) {
763
+ var comparator = v [ 0 ] ;
764
+ var range = v [ 1 ] ;
765
+ var expect = v [ 2 ] ;
766
+ var actual = semver . comparatorSatisfiesRange ( comparator , range ) ;
767
+ t . equal ( actual , expect ) ;
768
+ } ) ;
769
+ t . end ( ) ;
770
+ } ) ;
771
+
772
+ test ( '\nranges intersect' , function ( t ) {
773
+ [
774
+ [ '1.3.0 || <1.0.0 >2.0.0' , '1.3.0 || <1.0.0 >2.0.0' , true ] ,
775
+ [ '<1.0.0 >2.0.0' , '>0.0.0' , true ] ,
776
+ [ '<1.0.0 >2.0.0' , '>1.4.0 <1.6.0' , false ] ,
777
+ [ '<1.0.0 >2.0.0' , '>1.4.0 <1.6.0 || 2.0.0' , false ] ,
778
+ [ '<1.0.0 >=2.0.0' , '2.1.0' , false ] ,
779
+ [ '<1.0.0 >=2.0.0' , '>1.4.0 <1.6.0 || 2.0.0' , false ]
780
+ ] . forEach ( function ( v ) {
781
+ var range1 = v [ 0 ] ;
782
+ var range2 = v [ 1 ] ;
783
+ var expect = v [ 2 ] ;
784
+ var actual = semver . rangesIntersect ( range1 , range2 ) ;
785
+ t . equal ( actual , expect ) ;
786
+ } ) ;
787
+ t . end ( ) ;
788
+ } ) ;
0 commit comments