text_test.go 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. package text
  2. import (
  3. "os"
  4. "path"
  5. "strings"
  6. "testing"
  7. "github.com/leonelquinteros/gotext"
  8. "github.com/stretchr/testify/assert"
  9. "github.com/stretchr/testify/require"
  10. )
  11. func TestLessRunes(t *testing.T) {
  12. t.Parallel()
  13. type args struct {
  14. iRunes []rune
  15. jRunes []rune
  16. }
  17. tests := []struct {
  18. name string
  19. args args
  20. want bool
  21. }{
  22. {name: "nilslices", args: args{iRunes: nil, jRunes: nil}, want: false},
  23. {name: "emptyslices", args: args{iRunes: []rune{}, jRunes: []rune{}}, want: false},
  24. {name: "simpleslice a,b", args: args{iRunes: []rune{'a'}, jRunes: []rune{'b'}}, want: true},
  25. {name: "simpleslice b,a", args: args{iRunes: []rune{'b'}, jRunes: []rune{'a'}}, want: false},
  26. {name: "equalslice", args: args{iRunes: []rune{'a', 'a', 'a'}, jRunes: []rune{'a', 'a', 'a'}}, want: false},
  27. {name: "uppercase", args: args{iRunes: []rune{'a'}, jRunes: []rune{'A'}}, want: false},
  28. {name: "longerFirstArg", args: args{iRunes: []rune{'a', 'b'}, jRunes: []rune{'a'}}, want: false},
  29. {name: "longerSecondArg", args: args{iRunes: []rune{'a'}, jRunes: []rune{'a', 'b'}}, want: true},
  30. {name: "utf8 less", args: args{iRunes: []rune{'世', '2', '0'}, jRunes: []rune{'世', '界', '3'}}, want: true},
  31. }
  32. for _, tt := range tests {
  33. tt := tt
  34. t.Run(tt.name, func(t *testing.T) {
  35. t.Parallel()
  36. got := LessRunes(tt.args.iRunes, tt.args.jRunes)
  37. assert.Equal(t, tt.want, got)
  38. })
  39. }
  40. }
  41. func TestContinueTask(t *testing.T) {
  42. t.Parallel()
  43. type args struct {
  44. s string
  45. preset bool
  46. noConfirm bool
  47. input string
  48. }
  49. tests := []struct {
  50. name string
  51. args args
  52. want bool
  53. }{
  54. {name: "noconfirm-true", args: args{s: "", preset: true, noConfirm: true}, want: true},
  55. {name: "noconfirm-false", args: args{s: "", preset: false, noConfirm: true}, want: false},
  56. {name: "noinput-false", args: args{s: "", preset: false, noConfirm: false}, want: false},
  57. {name: "noinput-true", args: args{s: "", preset: true, noConfirm: false}, want: true},
  58. {name: "input-false", args: args{s: "", input: "n", preset: true, noConfirm: false}, want: false},
  59. {name: "input-true", args: args{s: "", input: "y", preset: false, noConfirm: false}, want: true},
  60. {name: "input-false-complete", args: args{s: "", input: "no", preset: true, noConfirm: false}, want: false},
  61. {name: "input-true-complete", args: args{s: "", input: "yes", preset: false, noConfirm: false}, want: true},
  62. }
  63. for _, tt := range tests {
  64. t.Run(tt.name, func(t *testing.T) {
  65. // create io.Reader with value of input
  66. in := strings.NewReader(tt.args.input)
  67. got := ContinueTask(in, tt.args.s, tt.args.preset, tt.args.noConfirm)
  68. require.Equal(t, tt.want, got)
  69. })
  70. }
  71. }
  72. func TestContinueTaskRU(t *testing.T) {
  73. strCustom := `
  74. msgid "yes"
  75. msgstr "да"
  76. `
  77. // Create Locales directory and files on temp location
  78. tmpDir := t.TempDir()
  79. dirname := path.Join(tmpDir, "en_US")
  80. err := os.MkdirAll(dirname, os.ModePerm)
  81. require.NoError(t, err)
  82. fDefault, err := os.Create(path.Join(dirname, "yay.po"))
  83. require.NoError(t, err)
  84. defer fDefault.Close()
  85. _, err = fDefault.WriteString(strCustom)
  86. require.NoError(t, err)
  87. gotext.Configure(tmpDir, "en_US", "yay")
  88. require.Equal(t, "да", gotext.Get("yes"))
  89. type args struct {
  90. s string
  91. preset bool
  92. noConfirm bool
  93. input string
  94. }
  95. tests := []struct {
  96. name string
  97. args args
  98. want bool
  99. }{
  100. {name: "default input false", args: args{s: "", input: "n", preset: true, noConfirm: false}, want: false},
  101. {name: "default input true", args: args{s: "", input: "y", preset: false, noConfirm: false}, want: true},
  102. }
  103. for _, tt := range tests {
  104. t.Run(tt.name, func(t *testing.T) {
  105. in := strings.NewReader(tt.args.input)
  106. got := ContinueTask(in, tt.args.s, tt.args.preset, tt.args.noConfirm)
  107. require.Equal(t, tt.want, got)
  108. })
  109. }
  110. gotext.SetLanguage("")
  111. }
  112. func TestContinueTaskDE(t *testing.T) {
  113. strCustom := `
  114. msgid "yes"
  115. msgstr "ja"
  116. `
  117. // Create Locales directory and files on temp location
  118. tmpDir := t.TempDir()
  119. dirname := path.Join(tmpDir, "en_US")
  120. err := os.MkdirAll(dirname, os.ModePerm)
  121. require.NoError(t, err)
  122. fDefault, err := os.Create(path.Join(dirname, "yay.po"))
  123. require.NoError(t, err)
  124. defer fDefault.Close()
  125. _, err = fDefault.WriteString(strCustom)
  126. require.NoError(t, err)
  127. gotext.Configure(tmpDir, "en_US", "yay")
  128. require.Equal(t, "ja", gotext.Get("yes"))
  129. type args struct {
  130. s string
  131. preset bool
  132. noConfirm bool
  133. input string
  134. }
  135. tests := []struct {
  136. name string
  137. args args
  138. want bool
  139. }{
  140. {name: "default input false", args: args{s: "", input: "n", preset: true, noConfirm: false}, want: false},
  141. {name: "default input true", args: args{s: "", input: "y", preset: false, noConfirm: false}, want: true},
  142. {name: "custom input true", args: args{s: "", input: "j", preset: false, noConfirm: false}, want: true},
  143. }
  144. for _, tt := range tests {
  145. t.Run(tt.name, func(t *testing.T) {
  146. in := strings.NewReader(tt.args.input)
  147. got := ContinueTask(in, tt.args.s, tt.args.preset, tt.args.noConfirm)
  148. require.Equal(t, tt.want, got)
  149. })
  150. }
  151. gotext.SetLanguage("")
  152. }