value_util_test.go 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. // +build go1.7
  2. package ini
  3. import (
  4. "testing"
  5. )
  6. func TestStringValue(t *testing.T) {
  7. cases := []struct {
  8. b []rune
  9. expectedRead int
  10. expectedError bool
  11. expectedValue string
  12. }{
  13. {
  14. b: []rune(`"foo"`),
  15. expectedRead: 5,
  16. expectedValue: `"foo"`,
  17. },
  18. {
  19. b: []rune(`"123 !$_ 456 abc"`),
  20. expectedRead: 17,
  21. expectedValue: `"123 !$_ 456 abc"`,
  22. },
  23. {
  24. b: []rune("foo"),
  25. expectedError: true,
  26. },
  27. {
  28. b: []rune(` "foo"`),
  29. expectedError: true,
  30. },
  31. }
  32. for i, c := range cases {
  33. n, err := getStringValue(c.b)
  34. if e, a := c.expectedValue, string(c.b[:n]); e != a {
  35. t.Errorf("%d: expected %v, but received %v", i, e, a)
  36. }
  37. if e, a := c.expectedRead, n; e != a {
  38. t.Errorf("%d: expected %v, but received %v", i, e, a)
  39. }
  40. if e, a := c.expectedError, err != nil; e != a {
  41. t.Errorf("%d: expected %v, but received %v", i, e, a)
  42. }
  43. }
  44. }
  45. func TestBoolValue(t *testing.T) {
  46. cases := []struct {
  47. b []rune
  48. expectedRead int
  49. expectedError bool
  50. expectedValue string
  51. }{
  52. {
  53. b: []rune("true"),
  54. expectedRead: 4,
  55. expectedValue: "true",
  56. },
  57. {
  58. b: []rune("false"),
  59. expectedRead: 5,
  60. expectedValue: "false",
  61. },
  62. {
  63. b: []rune(`"false"`),
  64. expectedError: true,
  65. },
  66. }
  67. for _, c := range cases {
  68. n, err := getBoolValue(c.b)
  69. if e, a := c.expectedValue, string(c.b[:n]); e != a {
  70. t.Errorf("expected %v, but received %v", e, a)
  71. }
  72. if e, a := c.expectedRead, n; e != a {
  73. t.Errorf("expected %v, but received %v", e, a)
  74. }
  75. if e, a := c.expectedError, err != nil; e != a {
  76. t.Errorf("expected %v, but received %v", e, a)
  77. }
  78. }
  79. }
  80. func TestNumericalValue(t *testing.T) {
  81. cases := []struct {
  82. b []rune
  83. expectedRead int
  84. expectedError bool
  85. expectedValue string
  86. expectedBase int
  87. }{
  88. {
  89. b: []rune("1.2"),
  90. expectedRead: 3,
  91. expectedValue: "1.2",
  92. expectedBase: 10,
  93. },
  94. {
  95. b: []rune("123"),
  96. expectedRead: 3,
  97. expectedValue: "123",
  98. expectedBase: 10,
  99. },
  100. {
  101. b: []rune("0x123A"),
  102. expectedRead: 6,
  103. expectedValue: "0x123A",
  104. expectedBase: 16,
  105. },
  106. {
  107. b: []rune("0b101"),
  108. expectedRead: 5,
  109. expectedValue: "0b101",
  110. expectedBase: 2,
  111. },
  112. {
  113. b: []rune("0o7"),
  114. expectedRead: 3,
  115. expectedValue: "0o7",
  116. expectedBase: 8,
  117. },
  118. {
  119. b: []rune(`"123"`),
  120. expectedError: true,
  121. },
  122. {
  123. b: []rune("0xo123"),
  124. expectedError: true,
  125. },
  126. {
  127. b: []rune("123A"),
  128. expectedError: true,
  129. },
  130. }
  131. for i, c := range cases {
  132. base, n, err := getNumericalValue(c.b)
  133. if e, a := c.expectedValue, string(c.b[:n]); e != a {
  134. t.Errorf("%d: expected %v, but received %v", i+1, e, a)
  135. }
  136. if e, a := c.expectedRead, n; e != a {
  137. t.Errorf("%d: expected %v, but received %v", i+1, e, a)
  138. }
  139. if e, a := c.expectedError, err != nil; e != a {
  140. t.Errorf("%d: expected %v, but received %v", i+1, e, a)
  141. }
  142. if e, a := c.expectedBase, base; e != a {
  143. t.Errorf("%d: expected %d, but received %d", i+1, e, a)
  144. }
  145. }
  146. }