...

Source file src/github.com/PuerkitoBio/goquery/bench_filter_test.go

Documentation: github.com/PuerkitoBio/goquery

     1  package goquery
     2  
     3  import (
     4  	"testing"
     5  )
     6  
     7  func BenchmarkFilter(b *testing.B) {
     8  	var n int
     9  
    10  	b.StopTimer()
    11  	sel := DocW().Find("li")
    12  	b.StartTimer()
    13  	for i := 0; i < b.N; i++ {
    14  		if n == 0 {
    15  			n = sel.Filter(".toclevel-1").Length()
    16  		} else {
    17  			sel.Filter(".toclevel-1")
    18  		}
    19  	}
    20  	if n != 13 {
    21  		b.Fatalf("want 13, got %d", n)
    22  	}
    23  }
    24  
    25  func BenchmarkNot(b *testing.B) {
    26  	var n int
    27  
    28  	b.StopTimer()
    29  	sel := DocW().Find("li")
    30  	b.StartTimer()
    31  	for i := 0; i < b.N; i++ {
    32  		if n == 0 {
    33  			n = sel.Not(".toclevel-2").Length()
    34  		} else {
    35  			sel.Filter(".toclevel-2")
    36  		}
    37  	}
    38  	if n != 371 {
    39  		b.Fatalf("want 371, got %d", n)
    40  	}
    41  }
    42  
    43  func BenchmarkFilterFunction(b *testing.B) {
    44  	var n int
    45  
    46  	b.StopTimer()
    47  	sel := DocW().Find("li")
    48  	f := func(i int, s *Selection) bool {
    49  		return len(s.Get(0).Attr) > 0
    50  	}
    51  	b.StartTimer()
    52  	for i := 0; i < b.N; i++ {
    53  		if n == 0 {
    54  			n = sel.FilterFunction(f).Length()
    55  		} else {
    56  			sel.FilterFunction(f)
    57  		}
    58  	}
    59  	if n != 112 {
    60  		b.Fatalf("want 112, got %d", n)
    61  	}
    62  }
    63  
    64  func BenchmarkNotFunction(b *testing.B) {
    65  	var n int
    66  
    67  	b.StopTimer()
    68  	sel := DocW().Find("li")
    69  	f := func(i int, s *Selection) bool {
    70  		return len(s.Get(0).Attr) > 0
    71  	}
    72  	b.StartTimer()
    73  	for i := 0; i < b.N; i++ {
    74  		if n == 0 {
    75  			n = sel.NotFunction(f).Length()
    76  		} else {
    77  			sel.NotFunction(f)
    78  		}
    79  	}
    80  	if n != 261 {
    81  		b.Fatalf("want 261, got %d", n)
    82  	}
    83  }
    84  
    85  func BenchmarkFilterNodes(b *testing.B) {
    86  	var n int
    87  
    88  	b.StopTimer()
    89  	sel := DocW().Find("li")
    90  	sel2 := DocW().Find(".toclevel-2")
    91  	nodes := sel2.Nodes
    92  	b.StartTimer()
    93  	for i := 0; i < b.N; i++ {
    94  		if n == 0 {
    95  			n = sel.FilterNodes(nodes...).Length()
    96  		} else {
    97  			sel.FilterNodes(nodes...)
    98  		}
    99  	}
   100  	if n != 2 {
   101  		b.Fatalf("want 2, got %d", n)
   102  	}
   103  }
   104  
   105  func BenchmarkNotNodes(b *testing.B) {
   106  	var n int
   107  
   108  	b.StopTimer()
   109  	sel := DocW().Find("li")
   110  	sel2 := DocW().Find(".toclevel-1")
   111  	nodes := sel2.Nodes
   112  	b.StartTimer()
   113  	for i := 0; i < b.N; i++ {
   114  		if n == 0 {
   115  			n = sel.NotNodes(nodes...).Length()
   116  		} else {
   117  			sel.NotNodes(nodes...)
   118  		}
   119  	}
   120  	if n != 360 {
   121  		b.Fatalf("want 360, got %d", n)
   122  	}
   123  }
   124  
   125  func BenchmarkFilterSelection(b *testing.B) {
   126  	var n int
   127  
   128  	b.StopTimer()
   129  	sel := DocW().Find("li")
   130  	sel2 := DocW().Find(".toclevel-2")
   131  	b.StartTimer()
   132  	for i := 0; i < b.N; i++ {
   133  		if n == 0 {
   134  			n = sel.FilterSelection(sel2).Length()
   135  		} else {
   136  			sel.FilterSelection(sel2)
   137  		}
   138  	}
   139  	if n != 2 {
   140  		b.Fatalf("want 2, got %d", n)
   141  	}
   142  }
   143  
   144  func BenchmarkNotSelection(b *testing.B) {
   145  	var n int
   146  
   147  	b.StopTimer()
   148  	sel := DocW().Find("li")
   149  	sel2 := DocW().Find(".toclevel-1")
   150  	b.StartTimer()
   151  	for i := 0; i < b.N; i++ {
   152  		if n == 0 {
   153  			n = sel.NotSelection(sel2).Length()
   154  		} else {
   155  			sel.NotSelection(sel2)
   156  		}
   157  	}
   158  	if n != 360 {
   159  		b.Fatalf("want 360, got %d", n)
   160  	}
   161  }
   162  
   163  func BenchmarkHas(b *testing.B) {
   164  	var n int
   165  
   166  	b.StopTimer()
   167  	sel := DocW().Find("h2")
   168  	b.StartTimer()
   169  	for i := 0; i < b.N; i++ {
   170  		if n == 0 {
   171  			n = sel.Has(".editsection").Length()
   172  		} else {
   173  			sel.Has(".editsection")
   174  		}
   175  	}
   176  	if n != 13 {
   177  		b.Fatalf("want 13, got %d", n)
   178  	}
   179  }
   180  
   181  func BenchmarkHasNodes(b *testing.B) {
   182  	var n int
   183  
   184  	b.StopTimer()
   185  	sel := DocW().Find("li")
   186  	sel2 := DocW().Find(".tocnumber")
   187  	nodes := sel2.Nodes
   188  	b.StartTimer()
   189  	for i := 0; i < b.N; i++ {
   190  		if n == 0 {
   191  			n = sel.HasNodes(nodes...).Length()
   192  		} else {
   193  			sel.HasNodes(nodes...)
   194  		}
   195  	}
   196  	if n != 15 {
   197  		b.Fatalf("want 15, got %d", n)
   198  	}
   199  }
   200  
   201  func BenchmarkHasSelection(b *testing.B) {
   202  	var n int
   203  
   204  	b.StopTimer()
   205  	sel := DocW().Find("li")
   206  	sel2 := DocW().Find(".tocnumber")
   207  	b.StartTimer()
   208  	for i := 0; i < b.N; i++ {
   209  		if n == 0 {
   210  			n = sel.HasSelection(sel2).Length()
   211  		} else {
   212  			sel.HasSelection(sel2)
   213  		}
   214  	}
   215  	if n != 15 {
   216  		b.Fatalf("want 15, got %d", n)
   217  	}
   218  }
   219  
   220  func BenchmarkEnd(b *testing.B) {
   221  	var n int
   222  
   223  	b.StopTimer()
   224  	sel := DocW().Find("li").Has(".tocnumber")
   225  	b.StartTimer()
   226  	for i := 0; i < b.N; i++ {
   227  		if n == 0 {
   228  			n = sel.End().Length()
   229  		} else {
   230  			sel.End()
   231  		}
   232  	}
   233  	if n != 373 {
   234  		b.Fatalf("want 373, got %d", n)
   235  	}
   236  }
   237  

View as plain text