github.com/aavshr/aws-sdk-go@v1.41.3/internal/ini/skipper_test.go (about)

     1  //go:build go1.7
     2  // +build go1.7
     3  
     4  package ini
     5  
     6  import (
     7  	"reflect"
     8  	"testing"
     9  )
    10  
    11  func TestSkipper(t *testing.T) {
    12  	idTok, _, _ := newLitToken([]rune("id"))
    13  	nlTok := newToken(TokenNL, []rune("\n"), NoneType)
    14  
    15  	cases := []struct {
    16  		name               string
    17  		Fn                 func(s *skipper)
    18  		param              Token
    19  		expected           bool
    20  		expectedShouldSkip bool
    21  		expectedPrevTok    Token
    22  	}{
    23  		{
    24  			name: "empty case",
    25  			Fn: func(s *skipper) {
    26  			},
    27  			param:           emptyToken,
    28  			expectedPrevTok: emptyToken,
    29  		},
    30  		{
    31  			name: "skip case",
    32  			Fn: func(s *skipper) {
    33  				s.Skip()
    34  			},
    35  			param:              idTok,
    36  			expectedShouldSkip: true,
    37  			expected:           true,
    38  			expectedPrevTok:    emptyToken,
    39  		},
    40  		{
    41  			name: "continue case",
    42  			Fn: func(s *skipper) {
    43  				s.Continue()
    44  			},
    45  			param:           emptyToken,
    46  			expectedPrevTok: emptyToken,
    47  		},
    48  		{
    49  			name: "skip then continue case",
    50  			Fn: func(s *skipper) {
    51  				s.Skip()
    52  				s.Continue()
    53  			},
    54  			param:           emptyToken,
    55  			expectedPrevTok: emptyToken,
    56  		},
    57  		{
    58  			name: "do not skip case",
    59  			Fn: func(s *skipper) {
    60  				s.Skip()
    61  				s.prevTok = nlTok
    62  			},
    63  			param:              idTok,
    64  			expectedShouldSkip: true,
    65  			expectedPrevTok:    nlTok,
    66  		},
    67  	}
    68  
    69  	for _, c := range cases {
    70  
    71  		t.Run(c.name, func(t *testing.T) {
    72  			s := newSkipper()
    73  			c.Fn(&s)
    74  
    75  			if e, a := c.expectedShouldSkip, s.shouldSkip; e != a {
    76  				t.Errorf("%s: expected %t, but received %t", c.name, e, a)
    77  			}
    78  
    79  			if e, a := c.expectedPrevTok, s.prevTok; !reflect.DeepEqual(e, a) {
    80  				t.Errorf("%s: expected %v, but received %v", c.name, e, a)
    81  			}
    82  
    83  			if e, a := c.expected, s.ShouldSkip(c.param); e != a {
    84  				t.Errorf("%s: expected %t, but received %t", c.name, e, a)
    85  			}
    86  		})
    87  	}
    88  }