194 lines
5.5 KiB
Go
194 lines
5.5 KiB
Go
package stringutil_test
|
||
|
||
import (
|
||
"reflect"
|
||
"testing"
|
||
|
||
"github.com/naoina/go-stringutil"
|
||
)
|
||
|
||
var commonTestCasesForToUpperCamelCase = []struct {
|
||
input, expect string
|
||
}{
|
||
{"", ""},
|
||
{"thequickbrownfoxoverthelazydog", "Thequickbrownfoxoverthelazydog"},
|
||
{"thequickbrownfoxoverthelazydoG", "ThequickbrownfoxoverthelazydoG"},
|
||
{"thequickbrownfoxoverthelazydo_g", "ThequickbrownfoxoverthelazydoG"},
|
||
{"TheQuickBrownFoxJumpsOverTheLazyDog", "TheQuickBrownFoxJumpsOverTheLazyDog"},
|
||
{"the_quick_brown_fox_jumps_over_the_lazy_dog", "TheQuickBrownFoxJumpsOverTheLazyDog"},
|
||
{"the_Quick_Brown_Fox_Jumps_Over_The_Lazy_Dog", "TheQuickBrownFoxJumpsOverTheLazyDog"},
|
||
{"api_server", "APIServer"},
|
||
{"a_t_api", "ATAPI"},
|
||
{"atapi", "Atapi"},
|
||
{"web_ui", "WebUI"},
|
||
{"api", "API"},
|
||
{"ascii", "ASCII"},
|
||
{"cpu", "CPU"},
|
||
{"csrf", "CSRF"},
|
||
{"css", "CSS"},
|
||
{"dns", "DNS"},
|
||
{"eof", "EOF"},
|
||
{"guid", "GUID"},
|
||
{"html", "HTML"},
|
||
{"http", "HTTP"},
|
||
{"https", "HTTPS"},
|
||
{"id", "ID"},
|
||
{"ip", "IP"},
|
||
{"json", "JSON"},
|
||
{"lhs", "LHS"},
|
||
{"qps", "QPS"},
|
||
{"ram", "RAM"},
|
||
{"rhs", "RHS"},
|
||
{"rpc", "RPC"},
|
||
{"sla", "SLA"},
|
||
{"smtp", "SMTP"},
|
||
{"sql", "SQL"},
|
||
{"ssh", "SSH"},
|
||
{"tcp", "TCP"},
|
||
{"tls", "TLS"},
|
||
{"ttl", "TTL"},
|
||
{"udp", "UDP"},
|
||
{"ui", "UI"},
|
||
{"uid", "UID"},
|
||
{"uuid", "UUID"},
|
||
{"uri", "URI"},
|
||
{"url", "URL"},
|
||
{"utf8", "UTF8"},
|
||
{"vm", "VM"},
|
||
{"xml", "XML"},
|
||
{"xsrf", "XSRF"},
|
||
{"xss", "XSS"},
|
||
}
|
||
|
||
func TestToUpperCamelCase(t *testing.T) {
|
||
for _, v := range append(commonTestCasesForToUpperCamelCase, []struct {
|
||
input, expect string
|
||
}{
|
||
{"the_quick_brown_fox_over_the_lazy_dog", "TheQuickBrownFoxOverTheLazyDog"},
|
||
}...) {
|
||
actual := stringutil.ToUpperCamelCase(v.input)
|
||
expect := v.expect
|
||
if !reflect.DeepEqual(actual, expect) {
|
||
t.Errorf(`stringutil.ToUpperCamelCase(%#v) => %#v; want %#v`, v.input, actual, expect)
|
||
}
|
||
}
|
||
}
|
||
|
||
func TestToUpperCamelCaseASCII(t *testing.T) {
|
||
for _, v := range commonTestCasesForToUpperCamelCase {
|
||
actual := stringutil.ToUpperCamelCaseASCII(v.input)
|
||
expect := v.expect
|
||
if !reflect.DeepEqual(actual, expect) {
|
||
t.Errorf(`stringutil.ToUpperCamelCaseASCII(%#v) => %#v; want %#v`, v.input, actual, expect)
|
||
}
|
||
}
|
||
}
|
||
|
||
var commonTestCasesForToSnakeCase = []struct {
|
||
input, expect string
|
||
}{
|
||
{"", ""},
|
||
{"thequickbrownfoxjumpsoverthelazydog", "thequickbrownfoxjumpsoverthelazydog"},
|
||
{"Thequickbrownfoxjumpsoverthelazydog", "thequickbrownfoxjumpsoverthelazydog"},
|
||
{"ThequickbrownfoxjumpsoverthelazydoG", "thequickbrownfoxjumpsoverthelazydo_g"},
|
||
{"TheQuickBrownFoxJumpsOverTheLazyDog", "the_quick_brown_fox_jumps_over_the_lazy_dog"},
|
||
{"the_quick_brown_fox_jumps_over_the_lazy_dog", "the_quick_brown_fox_jumps_over_the_lazy_dog"},
|
||
{"APIServer", "api_server"},
|
||
{"ATAPI", "a_t_api"},
|
||
{"Atapi", "atapi"},
|
||
{"WebUI", "web_ui"},
|
||
{"API", "api"},
|
||
{"ASCII", "ascii"},
|
||
{"CPU", "cpu"},
|
||
{"CSRF", "csrf"},
|
||
{"CSS", "css"},
|
||
{"DNS", "dns"},
|
||
{"EOF", "eof"},
|
||
{"GUID", "guid"},
|
||
{"HTML", "html"},
|
||
{"HTTP", "http"},
|
||
{"HTTPS", "https"},
|
||
{"ID", "id"},
|
||
{"ip", "ip"},
|
||
{"JSON", "json"},
|
||
{"LHS", "lhs"},
|
||
{"QPS", "qps"},
|
||
{"RAM", "ram"},
|
||
{"RHS", "rhs"},
|
||
{"RPC", "rpc"},
|
||
{"SLA", "sla"},
|
||
{"SMTP", "smtp"},
|
||
{"SQL", "sql"},
|
||
{"SSH", "ssh"},
|
||
{"TCP", "tcp"},
|
||
{"TLS", "tls"},
|
||
{"TTL", "ttl"},
|
||
{"UDP", "udp"},
|
||
{"UI", "ui"},
|
||
{"UID", "uid"},
|
||
{"UUID", "uuid"},
|
||
{"URI", "uri"},
|
||
{"URL", "url"},
|
||
{"UTF8", "utf8"},
|
||
{"VM", "vm"},
|
||
{"XML", "xml"},
|
||
{"XSRF", "xsrf"},
|
||
{"XSS", "xss"},
|
||
}
|
||
|
||
func TestToSnakeCase(t *testing.T) {
|
||
for _, v := range append(commonTestCasesForToSnakeCase, []struct {
|
||
input, expect string
|
||
}{
|
||
{"TheQuickBrownFoxOverTheLazyDog", "the_quick_brown_fox_over_the_lazy_dog"},
|
||
}...) {
|
||
actual := stringutil.ToSnakeCase(v.input)
|
||
expect := v.expect
|
||
if !reflect.DeepEqual(actual, expect) {
|
||
t.Errorf(`stringutil.ToSnakeCase(%#v) => %#v; want %#v`, v.input, actual, expect)
|
||
}
|
||
}
|
||
}
|
||
|
||
func TestToSnakeCaseASCII(t *testing.T) {
|
||
for _, v := range commonTestCasesForToSnakeCase {
|
||
actual := stringutil.ToSnakeCaseASCII(v.input)
|
||
expect := v.expect
|
||
if !reflect.DeepEqual(actual, expect) {
|
||
t.Errorf(`stringutil.ToSnakeCaseASCII(%#v) => %#v; want %#v`, v.input, actual, expect)
|
||
}
|
||
}
|
||
}
|
||
|
||
func TestAddCommonInitialismWithToUpperCamelCase(t *testing.T) {
|
||
input := "test_case"
|
||
actual := stringutil.ToUpperCamelCase(input)
|
||
expect := "TestCase"
|
||
if !reflect.DeepEqual(actual, expect) {
|
||
t.Errorf(`ToUpperCamelCase(%#v) with AddCommonInitialism => %#v; want %#v`, input, actual, expect)
|
||
}
|
||
stringutil.AddCommonInitialism("TEST", "CASE")
|
||
defer stringutil.DelCommonInitialism("TEST", "CASE")
|
||
actual = stringutil.ToUpperCamelCase(input)
|
||
expect = "TESTCASE"
|
||
if !reflect.DeepEqual(actual, expect) {
|
||
t.Errorf(`ToUpperCamelCase(%#v) with AddCommonInitialism => %#v; want %#v`, input, actual, expect)
|
||
}
|
||
}
|
||
|
||
func TestAddCommonInitialismWithToSnakeCase(t *testing.T) {
|
||
input := "TESTCase"
|
||
actual := stringutil.ToSnakeCase(input)
|
||
expect := "t_e_s_t_case"
|
||
if !reflect.DeepEqual(actual, expect) {
|
||
t.Errorf(`ToSnakeCase(%#v) with AddCommonInitialism => %#v; want %#v`, input, actual, expect)
|
||
}
|
||
stringutil.AddCommonInitialism("TEST", "CASE")
|
||
defer stringutil.DelCommonInitialism("TEST", "CASE")
|
||
actual = stringutil.ToSnakeCase(input)
|
||
expect = "test_case"
|
||
if !reflect.DeepEqual(actual, expect) {
|
||
t.Errorf(`ToSnakeCase(%#v) with AddCommonInitialism => %#v; want %#v`, input, actual, expect)
|
||
}
|
||
}
|