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 }