@@ -442,3 +442,59 @@ func Test_WhichVersionMatches(t *testing.T) {
442
442
})
443
443
}
444
444
}
445
+
446
+ func Test_DoesRangeInclude (t * testing.T ) {
447
+ testCases := []struct {
448
+ versions []string
449
+ versionRange string
450
+ expect bool
451
+ }{
452
+ {
453
+ versionRange : ">=1.0,<=2.0" ,
454
+ versions : []string {"1.5" },
455
+ expect : true ,
456
+ },
457
+ {
458
+ versionRange : ">=1.0,<=2.0" ,
459
+ versions : []string {"1.0" , "2.0" , "3.0" },
460
+ expect : true ,
461
+ },
462
+ {
463
+ versionRange : ">=1.0,<=2.0" ,
464
+ versions : []string {"3.0" , "2.1" },
465
+ expect : false ,
466
+ },
467
+ {
468
+ versionRange : ">1.0,<2.0" ,
469
+ versions : []string {"3.0" , "1.0" , "2.0" },
470
+ expect : false ,
471
+ },
472
+ }
473
+
474
+ for _ , tt := range testCases {
475
+ t .Run (fmt .Sprintf ("does range include %s" , tt .versionRange ), func (t * testing.T ) {
476
+ got , err := DoesRangeInclude (tt .versions , tt .versionRange )
477
+ if err != nil {
478
+ t .Errorf ("got err from DoesRangeInclude: %v" , err )
479
+ return
480
+ }
481
+
482
+ if diff := cmp .Diff (tt .expect , got ); len (diff ) > 0 {
483
+ t .Errorf ("(-want +got):\n %s" , diff )
484
+ }
485
+ })
486
+ }
487
+ }
488
+
489
+ func Test_DoesRangeInclude_Errors (t * testing.T ) {
490
+ res1 , err1 := DoesRangeInclude ([]string {"3.0" , "1.0" , "2.0" }, ">1.0 , <2.0" )
491
+ res2 , err2 := DoesRangeInclude ([]string {"anythinggoes" , "1.0" , "2.0" }, "bad range" )
492
+
493
+ if err1 != nil || err2 != nil {
494
+ t .Errorf ("expected error for DoesRangeInclude and did not receive an error" )
495
+ }
496
+
497
+ if res1 != false || res2 != false {
498
+ t .Errorf ("expected error for DoesRangeInclude and did not receive false result as expected" )
499
+ }
500
+ }
0 commit comments