gohelpers/pkg/strutil/string_test.go
2022-05-10 14:36:32 +08:00

148 lines
4.8 KiB
Go

package strutil
import (
"testing"
"github.com/stretchr/testify/require"
)
func TestCamelCase(t *testing.T) {
require.Equal(t, "fooBar", CamelCase("foo_bar"))
require.Equal(t, "fooBar", CamelCase("Foo-Bar"))
require.Equal(t, "fooBar", CamelCase("Foo&bar"))
require.Equal(t, "fooBar", CamelCase("foo bar"))
require.NotEqual(t, "FooBar", CamelCase("foo_bar"))
}
func TestCapitalize(t *testing.T) {
require.Equal(t, "Foo", Capitalize("foo"))
require.Equal(t, "Foo", Capitalize("Foo"))
require.Equal(t, "Foo", Capitalize("Foo"))
require.NotEqual(t, "foo", Capitalize("Foo"))
}
func TestKebabCase(t *testing.T) {
require.Equal(t, "foo-bar", KebabCase("Foo Bar-"))
require.Equal(t, "foo-bar", KebabCase("foo_Bar"))
require.Equal(t, "foo-bar", KebabCase("fooBar"))
require.Equal(t, "f-o-o-b-a-r", KebabCase("__FOO_BAR__"))
require.NotEqual(t, "foo_bar", KebabCase("fooBar"))
}
func TestSnakeCase(t *testing.T) {
require.Equal(t, "foo_bar", SnakeCase("Foo Bar-"))
require.Equal(t, "foo_bar", SnakeCase("foo_Bar"))
require.Equal(t, "foo_bar", SnakeCase("fooBar"))
require.Equal(t, "f_o_o_b_a_r", SnakeCase("__FOO_BAR__"))
require.Equal(t, "a_bbc_s_a_b_b_c", SnakeCase("aBbc-s$@a&%_B.B^C"))
require.NotEqual(t, "foo-bar", SnakeCase("foo_Bar"))
}
func TestUpperFirst(t *testing.T) {
require.Equal(t, "Foo", UpperFirst("foo"))
require.Equal(t, "BAR", UpperFirst("bAR"))
require.Equal(t, "FOo", UpperFirst("FOo"))
require.Equal(t, "FOo大", UpperFirst("fOo大"))
require.NotEqual(t, "Bar", UpperFirst("BAR"))
}
func TestLowerFirst(t *testing.T) {
require.Equal(t, "foo", LowerFirst("foo"))
require.Equal(t, "bAR", LowerFirst("BAR"))
require.Equal(t, "fOo", LowerFirst("FOo"))
require.Equal(t, "fOo大", LowerFirst("FOo大"))
require.NotEqual(t, "Bar", LowerFirst("BAR"))
}
func TestPadEnd(t *testing.T) {
require.Equal(t, "a", PadEnd("a", 1, "b"))
require.Equal(t, "ab", PadEnd("a", 2, "b"))
require.Equal(t, "abcdmn", PadEnd("abcd", 6, "mno"))
require.Equal(t, "abcdmm", PadEnd("abcd", 6, "m"))
require.Equal(t, "abcaba", PadEnd("abc", 6, "ab"))
require.NotEqual(t, "ba", PadEnd("a", 2, "b"))
}
func TestPadStart(t *testing.T) {
require.Equal(t, "a", PadStart("a", 1, "b"))
require.Equal(t, "ba", PadStart("a", 2, "b"))
require.Equal(t, "mnabcd", PadStart("abcd", 6, "mno"))
require.Equal(t, "mmabcd", PadStart("abcd", 6, "m"))
require.Equal(t, "abaabc", PadStart("abc", 6, "ab"))
require.NotEqual(t, "ab", PadStart("a", 2, "b"))
}
func TestBefore(t *testing.T) {
require.Equal(t, "lancet", Before("lancet", ""))
require.Equal(t, "github.com", Before("github.com/test/lancet", "/"))
require.Equal(t, "github.com/", Before("github.com/test/lancet", "test"))
}
func TestBeforeLast(t *testing.T) {
require.Equal(t, "lancet", BeforeLast("lancet", ""))
require.Equal(t, "github.com/test", BeforeLast("github.com/test/lancet", "/"))
require.Equal(t, "github.com/test/", BeforeLast("github.com/test/test/lancet", "test"))
require.NotEqual(t, "github.com/", BeforeLast("github.com/test/test/lancet", "test"))
}
func TestAfter(t *testing.T) {
require.Equal(t, "lancet", After("lancet", ""))
require.Equal(t, "test/lancet", After("github.com/test/lancet", "/"))
require.Equal(t, "/lancet", After("github.com/test/lancet", "test"))
}
func TestAfterLast(t *testing.T) {
require.Equal(t, "lancet", AfterLast("lancet", ""))
require.Equal(t, "lancet", AfterLast("github.com/test/lancet", "/"))
require.Equal(t, "/lancet", AfterLast("github.com/test/lancet", "test"))
require.Equal(t, "/lancet", AfterLast("github.com/test/test/lancet", "test"))
require.NotEqual(t, "/test/lancet", AfterLast("github.com/test/test/lancet", "test"))
}
func TestIsString(t *testing.T) {
require.Equal(t, true, IsString("lancet"))
require.Equal(t, true, IsString(""))
require.Equal(t, false, IsString(1))
require.Equal(t, false, IsString(true))
require.Equal(t, false, IsString([]string{}))
}
func TestReverseStr(t *testing.T) {
require.Equal(t, "cba", ReverseStr("abc"))
require.Equal(t, "54321", ReverseStr("12345"))
}
func TestWrap(t *testing.T) {
require.Equal(t, "ab", Wrap("ab", ""))
require.Equal(t, "", Wrap("", "*"))
require.Equal(t, "*ab*", Wrap("ab", "*"))
require.Equal(t, "\"ab\"", Wrap("ab", "\""))
require.Equal(t, "'ab'", Wrap("ab", "'"))
}
func TestUnwrap(t *testing.T) {
require.Equal(t, "", Unwrap("", "*"))
require.Equal(t, "ab", Unwrap("ab", ""))
require.Equal(t, "ab", Unwrap("ab", "*"))
require.Equal(t, "*ab*", Unwrap("**ab**", "*"))
require.Equal(t, "ab", Unwrap("**ab**", "**"))
require.Equal(t, "ab", Unwrap("\"ab\"", "\""))
require.Equal(t, "*ab", Unwrap("*ab", "*"))
require.Equal(t, "ab*", Unwrap("ab*", "*"))
require.Equal(t, "*", Unwrap("***", "*"))
require.Equal(t, "", Unwrap("**", "*"))
require.Equal(t, "***", Unwrap("***", "**"))
require.Equal(t, "**", Unwrap("**", "**"))
}