strutil_test.go 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. // Copyright 2020 The Gogs Authors. All rights reserved.
  2. // Use of this source code is governed by a MIT-style
  3. // license that can be found in the LICENSE file.
  4. package strutil
  5. import (
  6. "testing"
  7. "github.com/stretchr/testify/assert"
  8. )
  9. func TestToUpperFirst(t *testing.T) {
  10. tests := []struct {
  11. name string
  12. s string
  13. expStr string
  14. }{
  15. {
  16. name: "empty string",
  17. },
  18. {
  19. name: "first letter is a digit",
  20. s: "123 let's go",
  21. expStr: "123 let's go",
  22. },
  23. {
  24. name: "lower to upper",
  25. s: "this is a sentence",
  26. expStr: "This is a sentence",
  27. },
  28. {
  29. name: "already in upper case",
  30. s: "Let's go",
  31. expStr: "Let's go",
  32. },
  33. }
  34. for _, test := range tests {
  35. t.Run(test.name, func(t *testing.T) {
  36. assert.Equal(t, test.expStr, ToUpperFirst(test.s))
  37. })
  38. }
  39. }
  40. func TestRandomChars(t *testing.T) {
  41. cache := make(map[string]bool)
  42. for i := 0; i < 100; i++ {
  43. chars, err := RandomChars(10)
  44. if err != nil {
  45. t.Fatal(err)
  46. }
  47. if cache[chars] {
  48. t.Fatalf("Duplicated chars %q", chars)
  49. }
  50. cache[chars] = true
  51. }
  52. }
  53. func TestEllipsis(t *testing.T) {
  54. tests := []struct {
  55. name string
  56. str string
  57. threshold int
  58. want string
  59. }{
  60. {
  61. name: "empty string and zero threshold",
  62. str: "",
  63. threshold: 0,
  64. want: "",
  65. },
  66. {
  67. name: "smaller length than threshold",
  68. str: "ab",
  69. threshold: 3,
  70. want: "ab",
  71. },
  72. {
  73. name: "same length as threshold",
  74. str: "abc",
  75. threshold: 3,
  76. want: "abc",
  77. },
  78. {
  79. name: "greater length than threshold",
  80. str: "ab",
  81. threshold: 1,
  82. want: "a...",
  83. },
  84. }
  85. for _, test := range tests {
  86. t.Run(test.name, func(t *testing.T) {
  87. got := Ellipsis(test.str, test.threshold)
  88. assert.Equal(t, test.want, got)
  89. })
  90. }
  91. }