// 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 // }) } }