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