Платформа ЦРНП "Мирокод" для разработки проектов
https://git.mirocod.ru
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
48 lines
1.3 KiB
48 lines
1.3 KiB
// Copyright 2022 The Gitea Authors. All rights reserved. |
|
// Use of this source code is governed by a MIT-style |
|
// license that can be found in the LICENSE file. |
|
|
|
package util |
|
|
|
import ( |
|
"testing" |
|
|
|
"github.com/stretchr/testify/assert" |
|
) |
|
|
|
func TestToSnakeCase(t *testing.T) { |
|
cases := map[string]string{ |
|
// all old cases from the legacy package |
|
"HTTPServer": "http_server", |
|
"_camelCase": "_camel_case", |
|
"NoHTTPS": "no_https", |
|
"Wi_thF": "wi_th_f", |
|
"_AnotherTES_TCaseP": "_another_tes_t_case_p", |
|
"ALL": "all", |
|
"_HELLO_WORLD_": "_hello_world_", |
|
"HELLO_WORLD": "hello_world", |
|
"HELLO____WORLD": "hello____world", |
|
"TW": "tw", |
|
"_C": "_c", |
|
|
|
" sentence case ": "__sentence_case__", |
|
" Mixed-hyphen case _and SENTENCE_case and UPPER-case": "_mixed_hyphen_case__and_sentence_case_and_upper_case", |
|
|
|
// new cases |
|
" ": "_", |
|
"A": "a", |
|
"A0": "a0", |
|
"a0": "a0", |
|
"Aa0": "aa0", |
|
"啊": "啊", |
|
"A啊": "a啊", |
|
"Aa啊b": "aa啊b", |
|
"A啊B": "a啊_b", |
|
"Aa啊B": "aa啊_b", |
|
"TheCase2": "the_case2", |
|
"ObjIDs": "obj_i_ds", // the strange database column name which already exists |
|
} |
|
for input, expected := range cases { |
|
assert.Equal(t, expected, ToSnakeCase(input)) |
|
} |
|
}
|
|
|