diff --git a/tools/goctl/goctl.zip b/tools/goctl/goctl.zip new file mode 100644 index 000000000000..a41998c6e1c8 Binary files /dev/null and b/tools/goctl/goctl.zip differ diff --git a/tools/goctl/util/stringx/string_test.go b/tools/goctl/util/stringx/string_test.go index e43522bc6950..be51442a7ffd 100644 --- a/tools/goctl/util/stringx/string_test.go +++ b/tools/goctl/util/stringx/string_test.go @@ -7,68 +7,188 @@ import ( ) func TestString_IsEmptyOrSpace(t *testing.T) { - ret := From(" ").IsEmptyOrSpace() - assert.Equal(t, true, ret) - ret2 := From("ll??").IsEmptyOrSpace() - assert.Equal(t, false, ret2) - ret3 := From(` - `).IsEmptyOrSpace() - assert.Equal(t, true, ret3) + cases := []struct { + input string + want bool + }{ + { + want: true, + }, + { + input: " ", + want: true, + }, + { + input: "\t", + want: true, + }, + { + input: "\n", + want: true, + }, + { + input: "\f", + want: true, + }, + { + input: " ", + want: true, + }, + } + for _, v := range cases { + s := From(v.input) + assert.Equal(t, v.want, s.IsEmptyOrSpace()) + } } func TestString_Snake2Camel(t *testing.T) { - ret := From("____this_is_snake").ToCamel() - assert.Equal(t, "ThisIsSnake", ret) - - ret2 := From("测试_test_Data").ToCamel() - assert.Equal(t, "测试TestData", ret2) - - ret3 := From("___").ToCamel() - assert.Equal(t, "", ret3) - - ret4 := From("testData_").ToCamel() - assert.Equal(t, "TestData", ret4) - - ret5 := From("testDataTestData").ToCamel() - assert.Equal(t, "TestDataTestData", ret5) + cases := []struct { + input string + want string + }{ + { + input: "__", + want: "", + }, + { + input: "go_zero", + want: "GoZero", + }, + { + input: "の_go_zero", + want: "のGoZero", + }, + { + input: "goZero", + want: "GoZero", + }, + { + input: "goZero", + want: "GoZero", + }, + { + input: "goZero_", + want: "GoZero", + }, + { + input: "go_Zero_", + want: "GoZero", + }, + { + input: "_go_Zero_", + want: "GoZero", + }, + } + for _, c := range cases { + ret := From(c.input).ToCamel() + assert.Equal(t, c.want, ret) + } } func TestString_Camel2Snake(t *testing.T) { - ret := From("ThisIsCCCamel").ToSnake() - assert.Equal(t, "this_is_c_c_camel", ret) - - ret2 := From("测试Test_Data_test_data").ToSnake() - assert.Equal(t, "测试_test__data_test_data", ret2) + cases := []struct { + input string + want string + }{ + { + input: "goZero", + want: "go_zero", + }, + { + input: "Gozero", + want: "gozero", + }, + { + input: "GoZero", + want: "go_zero", + }, + { + input: "Go_Zero", + want: "go__zero", + }, + } + for _, c := range cases { + ret := From(c.input).ToSnake() + assert.Equal(t, c.want, ret) + } } func TestTitle(t *testing.T) { cases := []struct { - src string - exec string + input string + want string + }{ + { + input: "go zero", + want: "Go Zero", + }, + { + input: "goZero", + want: "GoZero", + }, + { + input: "GoZero", + want: "GoZero", + }, + { + input: "の go zero", + want: "の Go Zero", + }, + { + input: "Gozero", + want: "Gozero", + }, + { + input: "Go_zero", + want: "Go_zero", + }, + { + input: "go_zero", + want: "Go_zero", + }, + { + input: "Go_Zero", + want: "Go_Zero", + }, + } + for _, c := range cases { + ret := From(c.input).Title() + assert.Equal(t, c.want, ret) + } +} + +func TestUntitle(t *testing.T) { + cases := []struct { + input string + want string }{ { - src: "hello world!", - exec: "Hello World!", + input: "go zero", + want: "go zero", + }, + { + input: "GoZero", + want: "goZero", }, { - src: "go zero", - exec: "Go Zero", + input: "Gozero", + want: "gozero", }, { - src: "goZero", - exec: "GoZero", + input: "Go_zero", + want: "go_zero", }, { - src: "GoZero", - exec: "GoZero", + input: "go_zero", + want: "go_zero", }, { - src: "测试this is data", - exec: "测试This Is Data", + input: "Go_Zero", + want: "go_Zero", }, } for _, c := range cases { - ret := From(c.src).Title() - assert.Equal(t, c.exec, ret) + ret := From(c.input).Untitle() + assert.Equal(t, c.want, ret) } }