1
0
mirror of https://github.com/golang/go synced 2024-11-26 03:07:57 -07:00

bytes,strings,unicode/utf16: use slices to clean up tests

Replace reflect.DeepEqual with slices.Equal, which is much faster.

Remove some redundant helper functions.
This commit is contained in:
apocelipes 2024-07-24 00:59:40 +08:00
parent c5430dc1d8
commit e21f46d4a0
4 changed files with 16 additions and 39 deletions

View File

@ -11,6 +11,7 @@ import (
"math"
"math/rand"
"reflect"
"slices"
"strings"
"testing"
"unicode"
@ -18,18 +19,6 @@ import (
"unsafe"
)
func eq(a, b []string) bool {
if len(a) != len(b) {
return false
}
for i := 0; i < len(a); i++ {
if a[i] != b[i] {
return false
}
}
return true
}
func sliceOfString(s [][]byte) []string {
result := make([]string, len(s))
for i, v := range s {
@ -808,7 +797,7 @@ func TestSplit(t *testing.T) {
}
result := sliceOfString(a)
if !eq(result, tt.a) {
if !slices.Equal(result, tt.a) {
t.Errorf(`Split(%q, %q, %d) = %v; want %v`, tt.s, tt.sep, tt.n, result, tt.a)
continue
}
@ -866,7 +855,7 @@ func TestSplitAfter(t *testing.T) {
}
result := sliceOfString(a)
if !eq(result, tt.a) {
if !slices.Equal(result, tt.a) {
t.Errorf(`Split(%q, %q, %d) = %v; want %v`, tt.s, tt.sep, tt.n, result, tt.a)
continue
}
@ -919,7 +908,7 @@ func TestFields(t *testing.T) {
}
result := sliceOfString(a)
if !eq(result, tt.a) {
if !slices.Equal(result, tt.a) {
t.Errorf("Fields(%q) = %v; want %v", tt.s, a, tt.a)
continue
}
@ -939,7 +928,7 @@ func TestFieldsFunc(t *testing.T) {
for _, tt := range fieldstests {
a := FieldsFunc([]byte(tt.s), unicode.IsSpace)
result := sliceOfString(a)
if !eq(result, tt.a) {
if !slices.Equal(result, tt.a) {
t.Errorf("FieldsFunc(%q, unicode.IsSpace) = %v; want %v", tt.s, a, tt.a)
continue
}
@ -962,7 +951,7 @@ func TestFieldsFunc(t *testing.T) {
}
result := sliceOfString(a)
if !eq(result, tt.a) {
if !slices.Equal(result, tt.a) {
t.Errorf("FieldsFunc(%q) = %v, want %v", tt.s, a, tt.a)
}
@ -1286,18 +1275,6 @@ func TestRepeatCatchesOverflow(t *testing.T) {
})
}
func runesEqual(a, b []rune) bool {
if len(a) != len(b) {
return false
}
for i, r := range a {
if r != b[i] {
return false
}
}
return true
}
type RunesTest struct {
in string
out []rune
@ -1318,7 +1295,7 @@ func TestRunes(t *testing.T) {
for _, tt := range RunesTests {
tin := []byte(tt.in)
a := Runes(tin)
if !runesEqual(a, tt.out) {
if !slices.Equal(a, tt.out) {
t.Errorf("Runes(%q) = %v; want %v", tin, a, tt.out)
continue
}

View File

@ -5,7 +5,7 @@
package strings_test
import (
"reflect"
"slices"
. "strings"
"testing"
)
@ -83,7 +83,7 @@ func TestFinderCreation(t *testing.T) {
}
}
if !reflect.DeepEqual(good, tc.suf) {
if !slices.Equal(good, tc.suf) {
t.Errorf("boyerMoore(%q) got %v want %v", tc.pattern, good, tc.suf)
}
}

View File

@ -10,7 +10,7 @@ import (
"io"
"math"
"math/rand"
"reflect"
"slices"
"strconv"
. "strings"
"testing"
@ -431,7 +431,7 @@ func TestSplit(t *testing.T) {
}
if tt.n < 0 {
b := Split(tt.s, tt.sep)
if !reflect.DeepEqual(a, b) {
if !slices.Equal(a, b) {
t.Errorf("Split disagrees with SplitN(%q, %q, %d) = %v; want %v", tt.s, tt.sep, tt.n, b, a)
}
}
@ -467,7 +467,7 @@ func TestSplitAfter(t *testing.T) {
}
if tt.n < 0 {
b := SplitAfter(tt.s, tt.sep)
if !reflect.DeepEqual(a, b) {
if !slices.Equal(a, b) {
t.Errorf("SplitAfter disagrees with SplitAfterN(%q, %q, %d) = %v; want %v", tt.s, tt.sep, tt.n, b, a)
}
}

View File

@ -6,7 +6,7 @@ package utf16_test
import (
"internal/testenv"
"reflect"
"slices"
"testing"
"unicode"
. "unicode/utf16"
@ -58,7 +58,7 @@ var encodeTests = []encodeTest{
func TestEncode(t *testing.T) {
for _, tt := range encodeTests {
out := Encode(tt.in)
if !reflect.DeepEqual(out, tt.out) {
if !slices.Equal(out, tt.out) {
t.Errorf("Encode(%x) = %x; want %x", tt.in, out, tt.out)
}
}
@ -70,7 +70,7 @@ func TestAppendRune(t *testing.T) {
for _, u := range tt.in {
out = AppendRune(out, u)
}
if !reflect.DeepEqual(out, tt.out) {
if !slices.Equal(out, tt.out) {
t.Errorf("AppendRune(%x) = %x; want %x", tt.in, out, tt.out)
}
}
@ -143,7 +143,7 @@ func TestAllocationsDecode(t *testing.T) {
func TestDecode(t *testing.T) {
for _, tt := range decodeTests {
out := Decode(tt.in)
if !reflect.DeepEqual(out, tt.out) {
if !slices.Equal(out, tt.out) {
t.Errorf("Decode(%x) = %x; want %x", tt.in, out, tt.out)
}
}