github.imxd.top/openshift/source-to-image@v1.2.0/pkg/util/user/rangelist_test.go (about) 1 package user 2 3 import ( 4 "testing" 5 ) 6 7 func TestParseRangeList(t *testing.T) { 8 tests := []struct { 9 str string 10 expected *RangeList 11 errExpected bool 12 }{ 13 { 14 str: "1-5,5,2-", 15 expected: &RangeList{ 16 validRange(NewRange(1, 5)), 17 validRange(NewRange(5, 5)), 18 validRange(NewRangeFrom(2)), 19 }, 20 }, 21 { 22 str: ",4-5,0-", 23 expected: &RangeList{ 24 &Range{}, 25 validRange(NewRange(4, 5)), 26 validRange(NewRangeFrom(0)), 27 }, 28 }, 29 { 30 str: "5", 31 expected: &RangeList{ 32 validRange(NewRange(5, 5)), 33 }, 34 }, 35 { 36 str: "1-", 37 expected: &RangeList{ 38 validRange(NewRangeFrom(1)), 39 }, 40 }, 41 { 42 str: "-5", 43 expected: &RangeList{ 44 validRange(NewRangeTo(5)), 45 }, 46 }, 47 { 48 str: "abc", 49 errExpected: true, 50 }, 51 { 52 str: "{1-5}", 53 errExpected: true, 54 }, 55 { 56 str: "1-5-,2-", 57 errExpected: true, 58 }, 59 } 60 61 for _, tc := range tests { 62 actual, err := ParseRangeList(tc.str) 63 if err != nil { 64 if !tc.errExpected { 65 t.Errorf("Unexpected error for input %s: %v", tc.str, err) 66 } 67 continue 68 } 69 if tc.errExpected { 70 t.Errorf("Expected error but did not get one for input %s", tc.str) 71 continue 72 } 73 if actual.String() != tc.expected.String() { 74 t.Errorf("Did not get expected range list for input %s. Expected: %v, Got: %v", 75 tc.str, tc.expected, actual) 76 } 77 } 78 } 79 80 func TestRangeListContains(t *testing.T) { 81 tests := []struct { 82 uid int 83 r *RangeList 84 expected bool 85 }{ 86 { 87 uid: 10, 88 r: &RangeList{ 89 validRange(NewRange(0, 9)), 90 validRange(NewRange(10, 10)), 91 validRange(NewRange(20, 30)), 92 }, 93 expected: true, 94 }, 95 { 96 uid: 5, 97 r: &RangeList{ 98 validRange(NewRange(3, 4)), 99 validRange(NewRange(6, 7)), 100 }, 101 expected: false, 102 }, 103 { 104 uid: 10, 105 r: &RangeList{ 106 validRange(NewRangeFrom(11)), 107 validRange(NewRangeFrom(20)), 108 }, 109 expected: false, 110 }, 111 { 112 uid: 5000, 113 r: &RangeList{}, 114 expected: false, 115 }, 116 } 117 for _, tc := range tests { 118 actual := tc.r.Contains(tc.uid) 119 if actual != tc.expected { 120 t.Errorf("Unexpected contains result. Input: %d, Range: %v. Expected: %v, Got: %v.", tc.uid, tc.r, tc.expected, actual) 121 } 122 } 123 }