github.hscsec.cn/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  }