gitea
Зеркало из https://github.com/go-gitea/gitea
1// Copyright 2021 The Gitea Authors. All rights reserved.
2// SPDX-License-Identifier: MIT
3
4package util5
6import (7"testing"8
9"github.com/stretchr/testify/assert"10)
11
12func TestSplitString(t *testing.T) {13type testCase struct {14input string15n int16leftSub string17ellipsis string18}19
20test := func(tc []*testCase, f func(input string, n int) (left, right string)) {21for _, c := range tc {22l, r := f(c.input, c.n)23if c.ellipsis != "" {24assert.Equal(t, c.leftSub+c.ellipsis, l, "test split %q at %d, expected leftSub: %q", c.input, c.n, c.leftSub)25assert.Equal(t, c.ellipsis+c.input[len(c.leftSub):], r, "test split %s at %d, expected rightSub: %q", c.input, c.n, c.input[len(c.leftSub):])26} else {27assert.Equal(t, c.leftSub, l, "test split %q at %d, expected leftSub: %q", c.input, c.n, c.leftSub)28assert.Empty(t, r, "test split %q at %d, expected rightSub: %q", c.input, c.n, "")29}30}31}32
33tc := []*testCase{34{"abc123xyz", 0, "", utf8Ellipsis},35{"abc123xyz", 1, "", utf8Ellipsis},36{"abc123xyz", 4, "a", utf8Ellipsis},37{"啊bc123xyz", 4, "", utf8Ellipsis},38{"啊bc123xyz", 6, "啊", utf8Ellipsis},39{"啊bc", 5, "啊bc", ""},40{"啊bc", 6, "啊bc", ""},41{"abc\xef\x03\xfe", 3, "", asciiEllipsis},42{"abc\xef\x03\xfe", 4, "a", asciiEllipsis},43{"\xef\x03", 1, "\xef\x03", ""},44}45test(tc, SplitStringAtByteN)46}
47