skipper_test.go 1.7 KB

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