GoDoxy/internal/utils/strutils/split_join_test.go
yusing 8fe94d6d14 feat(socket-proxy): implement Docker socket proxy and related configurations
- Updated Dockerfile and Makefile for socket-proxy build.
- Modified go.mod to include necessary dependencies.
- Updated CI workflows for socket-proxy integration.
- Better module isolation
- Code refactor
2025-05-10 09:47:03 +08:00

62 lines
1.1 KiB
Go

package strutils_test
import (
"strings"
"testing"
"github.com/stretchr/testify/require"
. "github.com/yusing/go-proxy/internal/utils/strutils"
)
var alphaNumeric = func() string {
var s strings.Builder
for i := range 'z' - 'a' + 1 {
s.WriteRune('a' + i)
s.WriteRune('A' + i)
s.WriteRune(',')
}
for i := range '9' - '0' + 1 {
s.WriteRune('0' + i)
s.WriteRune(',')
}
return s.String()
}()
func TestSplit(t *testing.T) {
tests := map[string]rune{
"": 0,
"1": '1',
",": ',',
}
for sep, rsep := range tests {
t.Run(sep, func(t *testing.T) {
expected := strings.Split(alphaNumeric, sep)
require.Equal(t, expected, SplitRune(alphaNumeric, rsep))
require.Equal(t, alphaNumeric, JoinRune(expected, rsep))
})
}
}
func BenchmarkSplitRune(b *testing.B) {
for range b.N {
SplitRune(alphaNumeric, ',')
}
}
func BenchmarkSplitRuneStdlib(b *testing.B) {
for range b.N {
strings.Split(alphaNumeric, ",")
}
}
func BenchmarkJoinRune(b *testing.B) {
for range b.N {
JoinRune(SplitRune(alphaNumeric, ','), ',')
}
}
func BenchmarkJoinRuneStdlib(b *testing.B) {
for range b.N {
strings.Join(SplitRune(alphaNumeric, ','), ",")
}
}