You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
go-zero/tools/goctl/test/test_test.go

102 lines
1.8 KiB
Go

package test
import (
"errors"
"strings"
"testing"
"github.com/stretchr/testify/assert"
)
func TestExecutor_Run(t *testing.T) {
executor := NewExecutor[string, string]()
executor.Add([]Data[string, string]{
{
Name: "empty",
},
{
Name: "snake_case",
input: "A_B_C",
want: "a_b_c",
},
{
Name: "camel_case",
input: "AaBbCc",
want: "aabbcc",
},
}...)
executor.Run(t, func(s string) string {
return strings.ToLower(s)
})
}
func TestExecutor_RunE(t *testing.T) {
var dummyError = errors.New("dummy error")
executor := NewExecutor[string, string]()
executor.Add([]Data[string, string]{
{
Name: "empty",
},
{
Name: "snake_case",
input: "A_B_C",
want: "a_b_c",
},
{
Name: "camel_case",
input: "AaBbCc",
want: "aabbcc",
},
{
Name: "invalid_input",
input: "😄",
E: dummyError,
},
}...)
executor.RunE(t, func(s string) (string, error) {
for _, r := range s {
if r == '_' || r >= 'a' && r <= 'z' || r >= 'A' && r <= 'Z' {
continue
}
return "", dummyError
}
return strings.ToLower(s), nil
})
}
func TestWithComparison(t *testing.T) {
var dummyError = errors.New("dummy error")
executor := NewExecutor[string, string](WithComparison[string, string](func(t *testing.T, expected, actual string) bool {
return assert.Equal(t, expected, actual)
}))
executor.Add([]Data[string, string]{
{
Name: "empty",
},
{
Name: "snake_case",
input: "A_B_C",
want: "a_b_c",
},
{
Name: "camel_case",
input: "AaBbCc",
want: "aabbcc",
},
{
Name: "invalid_input",
input: "😄",
E: dummyError,
},
}...)
executor.RunE(t, func(s string) (string, error) {
for _, r := range s {
if r == '_' || r >= 'a' && r <= 'z' || r >= 'A' && r <= 'Z' {
continue
}
return "", dummyError
}
return strings.ToLower(s), nil
})
}