package goquery import ( "testing" ) func BenchmarkAdd(b *testing.B) { var n int b.StopTimer() sel := DocB().Find("dd") b.StartTimer() for i := 0; i < b.N; i++ { if n == 0 { n = sel.Add("h2[title]").Length() } else { sel.Add("h2[title]") } } if n != 43 { b.Fatalf("want 43, got %d", n) } } func BenchmarkAddSelection(b *testing.B) { var n int b.StopTimer() sel := DocB().Find("dd") sel2 := DocB().Find("h2[title]") b.StartTimer() for i := 0; i < b.N; i++ { if n == 0 { n = sel.AddSelection(sel2).Length() } else { sel.AddSelection(sel2) } } if n != 43 { b.Fatalf("want 43, got %d", n) } } func BenchmarkAddNodes(b *testing.B) { var n int b.StopTimer() sel := DocB().Find("dd") sel2 := DocB().Find("h2[title]") nodes := sel2.Nodes b.StartTimer() for i := 0; i < b.N; i++ { if n == 0 { n = sel.AddNodes(nodes...).Length() } else { sel.AddNodes(nodes...) } } if n != 43 { b.Fatalf("want 43, got %d", n) } } func BenchmarkAddNodesBig(b *testing.B) { var n int doc := DocW() sel := doc.Find("li") // make nodes > 1000 nodes := sel.Nodes nodes = append(nodes, nodes...) nodes = append(nodes, nodes...) sel = doc.Find("xyz") b.ResetTimer() for i := 0; i < b.N; i++ { if n == 0 { n = sel.AddNodes(nodes...).Length() } else { sel.AddNodes(nodes...) } } if n != 373 { b.Fatalf("want 373, got %d", n) } } func BenchmarkAndSelf(b *testing.B) { var n int b.StopTimer() sel := DocB().Find("dd").Parent() b.StartTimer() for i := 0; i < b.N; i++ { if n == 0 { n = sel.AndSelf().Length() } else { sel.AndSelf() } } if n != 44 { b.Fatalf("want 44, got %d", n) } }