2020-02-26 20:26:57 +00:00
|
|
|
|
package spacecollapse
|
2020-02-24 19:54:48 +00:00
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"fmt"
|
2021-02-18 10:37:40 +00:00
|
|
|
|
"strings"
|
2020-02-24 19:54:48 +00:00
|
|
|
|
"testing"
|
|
|
|
|
|
|
|
|
|
"github.com/stretchr/testify/require"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
func TestCollapseSpaces(t *testing.T) {
|
|
|
|
|
for i, tc := range []struct {
|
|
|
|
|
input string
|
|
|
|
|
output string
|
|
|
|
|
}{
|
|
|
|
|
{input: "", output: ""},
|
|
|
|
|
{input: "x", output: "x"},
|
|
|
|
|
{input: "Hello, World!", output: "Hello, World!"},
|
|
|
|
|
{input: "Привет,\tМир!", output: "Привет, Мир!"},
|
|
|
|
|
{input: "\r\n", output: " "},
|
|
|
|
|
{input: "\n\n", output: " "},
|
|
|
|
|
{input: "\t*", output: " *"},
|
|
|
|
|
{input: " \t \t ", output: " "},
|
|
|
|
|
{input: " \tx\t ", output: " x "},
|
2021-02-18 10:57:48 +00:00
|
|
|
|
{input: "\xff\x00 \xff\x00", output: "\xef\xbf\xbd\x00 \xef\xbf\xbd\x00"},
|
2020-02-24 19:54:48 +00:00
|
|
|
|
} {
|
|
|
|
|
t.Run(fmt.Sprintf("#%v: %v", i, tc.input), func(t *testing.T) {
|
|
|
|
|
require.Equal(t, tc.output, CollapseSpaces(tc.input))
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
}
|
2021-02-18 10:37:40 +00:00
|
|
|
|
|
|
|
|
|
func BenchmarkCollapse(b *testing.B) {
|
|
|
|
|
input := strings.Repeat("🙂 🙂", 100)
|
|
|
|
|
|
|
|
|
|
b.ReportAllocs()
|
|
|
|
|
|
|
|
|
|
for i := 0; i < b.N; i++ {
|
|
|
|
|
_ = CollapseSpaces(input)
|
|
|
|
|
}
|
|
|
|
|
}
|