bench_query_test.go 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. package goquery
  2. import (
  3. "testing"
  4. )
  5. func BenchmarkIs(b *testing.B) {
  6. var y bool
  7. b.StopTimer()
  8. sel := DocW().Find("li")
  9. b.StartTimer()
  10. for i := 0; i < b.N; i++ {
  11. y = sel.Is(".toclevel-2")
  12. }
  13. if !y {
  14. b.Fatal("want true")
  15. }
  16. }
  17. func BenchmarkIsPositional(b *testing.B) {
  18. var y bool
  19. b.StopTimer()
  20. sel := DocW().Find("li")
  21. b.StartTimer()
  22. for i := 0; i < b.N; i++ {
  23. y = sel.Is("li:nth-child(2)")
  24. }
  25. if !y {
  26. b.Fatal("want true")
  27. }
  28. }
  29. func BenchmarkIsFunction(b *testing.B) {
  30. var y bool
  31. b.StopTimer()
  32. sel := DocW().Find(".toclevel-1")
  33. f := func(i int, s *Selection) bool {
  34. return i == 8
  35. }
  36. b.StartTimer()
  37. for i := 0; i < b.N; i++ {
  38. y = sel.IsFunction(f)
  39. }
  40. if !y {
  41. b.Fatal("want true")
  42. }
  43. }
  44. func BenchmarkIsSelection(b *testing.B) {
  45. var y bool
  46. b.StopTimer()
  47. sel := DocW().Find("li")
  48. sel2 := DocW().Find(".toclevel-2")
  49. b.StartTimer()
  50. for i := 0; i < b.N; i++ {
  51. y = sel.IsSelection(sel2)
  52. }
  53. if !y {
  54. b.Fatal("want true")
  55. }
  56. }
  57. func BenchmarkIsNodes(b *testing.B) {
  58. var y bool
  59. b.StopTimer()
  60. sel := DocW().Find("li")
  61. sel2 := DocW().Find(".toclevel-2")
  62. nodes := sel2.Nodes
  63. b.StartTimer()
  64. for i := 0; i < b.N; i++ {
  65. y = sel.IsNodes(nodes...)
  66. }
  67. if !y {
  68. b.Fatal("want true")
  69. }
  70. }
  71. func BenchmarkHasClass(b *testing.B) {
  72. var y bool
  73. b.StopTimer()
  74. sel := DocW().Find("span")
  75. b.StartTimer()
  76. for i := 0; i < b.N; i++ {
  77. y = sel.HasClass("official")
  78. }
  79. if !y {
  80. b.Fatal("want true")
  81. }
  82. }
  83. func BenchmarkContains(b *testing.B) {
  84. var y bool
  85. b.StopTimer()
  86. sel := DocW().Find("span.url")
  87. sel2 := DocW().Find("a[rel=\"nofollow\"]")
  88. node := sel2.Nodes[0]
  89. b.StartTimer()
  90. for i := 0; i < b.N; i++ {
  91. y = sel.Contains(node)
  92. }
  93. if !y {
  94. b.Fatal("want true")
  95. }
  96. }