52 lines
1.3 KiB
Go
52 lines
1.3 KiB
Go
|
// Copyright 2016 The Go Authors. All rights reserved.
|
|||
|
// Use of this source code is governed by a BSD-style
|
|||
|
// license that can be found in the LICENSE file.
|
|||
|
|
|||
|
package cases
|
|||
|
|
|||
|
import (
|
|||
|
"testing"
|
|||
|
|
|||
|
"golang.org/x/text/internal/testtext"
|
|||
|
)
|
|||
|
|
|||
|
var foldTestCases = []string{
|
|||
|
"βß\u13f8", // "βssᏰ"
|
|||
|
"ab\u13fc\uab7aꭰ", // abᏴᎪᎠ
|
|||
|
"affifflast", // affifflast
|
|||
|
"Iİiı\u0345", // ii̇iıι
|
|||
|
"µµΜΜςσΣΣ", // μμμμσσσσ
|
|||
|
}
|
|||
|
|
|||
|
func TestFold(t *testing.T) {
|
|||
|
for _, tc := range foldTestCases {
|
|||
|
testEntry := func(name string, c Caser, m func(r rune) string) {
|
|||
|
want := ""
|
|||
|
for _, r := range tc {
|
|||
|
want += m(r)
|
|||
|
}
|
|||
|
if got := c.String(tc); got != want {
|
|||
|
t.Errorf("%s(%s) = %+q; want %+q", name, tc, got, want)
|
|||
|
}
|
|||
|
dst := make([]byte, 256) // big enough to hold any result
|
|||
|
src := []byte(tc)
|
|||
|
v := testtext.AllocsPerRun(20, func() {
|
|||
|
c.Transform(dst, src, true)
|
|||
|
})
|
|||
|
if v > 0 {
|
|||
|
t.Errorf("%s(%s): number of allocs was %f; want 0", name, tc, v)
|
|||
|
}
|
|||
|
}
|
|||
|
testEntry("FullFold", Fold(), func(r rune) string {
|
|||
|
return runeFoldData(r).full
|
|||
|
})
|
|||
|
// TODO:
|
|||
|
// testEntry("SimpleFold", Fold(Compact), func(r rune) string {
|
|||
|
// return runeFoldData(r).simple
|
|||
|
// })
|
|||
|
// testEntry("SpecialFold", Fold(Turkic), func(r rune) string {
|
|||
|
// return runeFoldData(r).special
|
|||
|
// })
|
|||
|
}
|
|||
|
}
|