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