test_test.go 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. package test
  2. import (
  3. "errors"
  4. "strings"
  5. "testing"
  6. "github.com/stretchr/testify/assert"
  7. )
  8. func TestExecutor_Run(t *testing.T) {
  9. executor := NewExecutor[string, string]()
  10. executor.Add([]Data[string, string]{
  11. {
  12. Name: "empty",
  13. },
  14. {
  15. Name: "snake_case",
  16. Input: "A_B_C",
  17. Want: "a_b_c",
  18. },
  19. {
  20. Name: "camel_case",
  21. Input: "AaBbCc",
  22. Want: "aabbcc",
  23. },
  24. }...)
  25. executor.Run(t, func(s string) string {
  26. return strings.ToLower(s)
  27. })
  28. }
  29. func TestExecutor_RunE(t *testing.T) {
  30. var dummyError = errors.New("dummy error")
  31. executor := NewExecutor[string, string]()
  32. executor.Add([]Data[string, string]{
  33. {
  34. Name: "empty",
  35. },
  36. {
  37. Name: "snake_case",
  38. Input: "A_B_C",
  39. Want: "a_b_c",
  40. },
  41. {
  42. Name: "camel_case",
  43. Input: "AaBbCc",
  44. Want: "aabbcc",
  45. },
  46. {
  47. Name: "invalid_input",
  48. Input: "😄",
  49. E: dummyError,
  50. },
  51. }...)
  52. executor.RunE(t, func(s string) (string, error) {
  53. for _, r := range s {
  54. if r == '_' || r >= 'a' && r <= 'z' || r >= 'A' && r <= 'Z' {
  55. continue
  56. }
  57. return "", dummyError
  58. }
  59. return strings.ToLower(s), nil
  60. })
  61. }
  62. func TestWithComparison(t *testing.T) {
  63. var dummyError = errors.New("dummy error")
  64. executor := NewExecutor[string, string](WithComparison[string, string](func(t *testing.T, expected, actual string) bool {
  65. return assert.Equal(t, expected, actual)
  66. }))
  67. executor.Add([]Data[string, string]{
  68. {
  69. Name: "empty",
  70. },
  71. {
  72. Name: "snake_case",
  73. Input: "A_B_C",
  74. Want: "a_b_c",
  75. },
  76. {
  77. Name: "camel_case",
  78. Input: "AaBbCc",
  79. Want: "aabbcc",
  80. },
  81. {
  82. Name: "invalid_input",
  83. Input: "😄",
  84. E: dummyError,
  85. },
  86. }...)
  87. executor.RunE(t, func(s string) (string, error) {
  88. for _, r := range s {
  89. if r == '_' || r >= 'a' && r <= 'z' || r >= 'A' && r <= 'Z' {
  90. continue
  91. }
  92. return "", dummyError
  93. }
  94. return strings.ToLower(s), nil
  95. })
  96. }