1package runewidth 2 3import ( 4 "testing" 5 "unicode/utf8" 6) 7 8var benchSink int 9 10func benchTable(b *testing.B, tbl table) int { 11 n := 0 12 for i := 0; i < b.N; i++ { 13 for r := rune(0); r <= utf8.MaxRune; r++ { 14 if inTable(r, tbl) { 15 n++ 16 } 17 } 18 } 19 return n 20} 21 22func BenchmarkTablePrivate(b *testing.B) { 23 benchSink = benchTable(b, private) 24} 25func BenchmarkTableNonprint(b *testing.B) { 26 benchSink = benchTable(b, nonprint) 27} 28func BenchmarkTableCombining(b *testing.B) { 29 benchSink = benchTable(b, combining) 30} 31func BenchmarkTableDoublewidth(b *testing.B) { 32 benchSink = benchTable(b, doublewidth) 33} 34func BenchmarkTableAmbiguous(b *testing.B) { 35 benchSink = benchTable(b, ambiguous) 36} 37func BenchmarkTableEmoji(b *testing.B) { 38 benchSink = benchTable(b, emoji) 39} 40func BenchmarkTableNotassigned(b *testing.B) { 41 benchSink = benchTable(b, notassigned) 42} 43func BenchmarkTableNeutral(b *testing.B) { 44 benchSink = benchTable(b, neutral) 45} 46