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