1package goquery
2
3import (
4	"testing"
5)
6
7func BenchmarkFirst(b *testing.B) {
8	b.StopTimer()
9	sel := DocB().Find("dd")
10	b.StartTimer()
11	for i := 0; i < b.N; i++ {
12		sel.First()
13	}
14}
15
16func BenchmarkLast(b *testing.B) {
17	b.StopTimer()
18	sel := DocB().Find("dd")
19	b.StartTimer()
20	for i := 0; i < b.N; i++ {
21		sel.Last()
22	}
23}
24
25func BenchmarkEq(b *testing.B) {
26	b.StopTimer()
27	sel := DocB().Find("dd")
28	j := 0
29	b.StartTimer()
30	for i := 0; i < b.N; i++ {
31		sel.Eq(j)
32		if j++; j >= sel.Length() {
33			j = 0
34		}
35	}
36}
37
38func BenchmarkSlice(b *testing.B) {
39	b.StopTimer()
40	sel := DocB().Find("dd")
41	j := 0
42	b.StartTimer()
43	for i := 0; i < b.N; i++ {
44		sel.Slice(j, j+4)
45		if j++; j >= (sel.Length() - 4) {
46			j = 0
47		}
48	}
49}
50
51func BenchmarkGet(b *testing.B) {
52	b.StopTimer()
53	sel := DocB().Find("dd")
54	j := 0
55	b.StartTimer()
56	for i := 0; i < b.N; i++ {
57		sel.Get(j)
58		if j++; j >= sel.Length() {
59			j = 0
60		}
61	}
62}
63
64func BenchmarkIndex(b *testing.B) {
65	var j int
66
67	b.StopTimer()
68	sel := DocB().Find("#Main")
69	b.StartTimer()
70	for i := 0; i < b.N; i++ {
71		j = sel.Index()
72	}
73	if j != 3 {
74		b.Fatalf("want 3, got %d", j)
75	}
76}
77
78func BenchmarkIndexSelector(b *testing.B) {
79	var j int
80
81	b.StopTimer()
82	sel := DocB().Find("#manual-nav dl dd:nth-child(1)")
83	b.StartTimer()
84	for i := 0; i < b.N; i++ {
85		j = sel.IndexSelector("dd")
86	}
87	if j != 4 {
88		b.Fatalf("want 4, got %d", j)
89	}
90}
91
92func BenchmarkIndexOfNode(b *testing.B) {
93	var j int
94
95	b.StopTimer()
96	sel := DocB().Find("span a")
97	sel2 := DocB().Find("span a:nth-child(3)")
98	n := sel2.Get(0)
99	b.StartTimer()
100	for i := 0; i < b.N; i++ {
101		j = sel.IndexOfNode(n)
102	}
103	if j != 2 {
104		b.Fatalf("want 2, got %d", j)
105	}
106}
107
108func BenchmarkIndexOfSelection(b *testing.B) {
109	var j int
110	b.StopTimer()
111	sel := DocB().Find("span a")
112	sel2 := DocB().Find("span a:nth-child(3)")
113	b.StartTimer()
114	for i := 0; i < b.N; i++ {
115		j = sel.IndexOfSelection(sel2)
116	}
117	if j != 2 {
118		b.Fatalf("want 2, got %d", j)
119	}
120}
121