@@ -58,23 +58,64 @@ func TestFilter(t *testing.T) {
5858 }
5959}
6060
61+ func TestAndOr (t * testing.T ) {
62+ s1 := "asöldkgjaösldkgaösldkasldgjkaösldkgjöasgkdjg"
63+ s2 := "elasödlnkgaölsdkfgaölsdkjfaölsdkgaölskgnaösl"
64+ s3 := "aölsdgkaösldkgaösldkgjaölsdkjgaölsdkgjaösldk"
65+ for n := 0 ; n < 100 ; n ++ {
66+ for p := 1 ; p <= 128 ; p *= 2 {
67+ f1 , f2 := New (n , p ), New (n , p )
68+ f1 .Add (s1 )
69+ f1 .Add (s2 )
70+ f2 .Add (s2 )
71+ f2 .Add (s3 )
72+ and , or := f1 .And (f2 ), f1 .Or (f2 )
73+ member := and .Test (s1 )
74+ if member {
75+ t .Errorf ("and.Test(s1) = %v; want false\n " , member )
76+ }
77+ member = and .Test (s2 )
78+ if ! member {
79+ t .Errorf ("and.Test(s2) = %v; want true\n " , member )
80+ }
81+ member = and .Test (s3 )
82+ if member {
83+ t .Errorf ("and.Test(s3) = %v; want false\n " , member )
84+ }
85+ member = or .Test (s1 )
86+ if ! member {
87+ t .Errorf ("or.Test(s1) = %v; want true\n " , member )
88+ }
89+ member = or .Test (s2 )
90+ if ! member {
91+ t .Errorf ("or.Test(s2) = %v; want true\n " , member )
92+ }
93+ member = or .Test (s3 )
94+ if ! member {
95+ t .Errorf ("or.Test(s3) = %v; want true\n " , member )
96+ }
97+ }
98+ }
99+ }
100+
101+ var fox string = "The quick brown fox jumps over the lazy dog."
102+
61103func BenchmarkAdd (b * testing.B ) {
62104 b .StopTimer ()
63105 filter := New (1 << 30 , 200 )
64106 b .StartTimer ()
65- s := "The quick brown fox jumps over the lazy dog."
66107 for i := 0 ; i < b .N ; i ++ {
67- filter .Add (s )
108+ filter .Add (fox )
68109 }
69110}
70111
71112func BenchmarkAddByte (b * testing.B ) {
72113 b .StopTimer ()
73114 filter := New (1 << 30 , 200 )
74115 b .StartTimer ()
75- s := []byte ("The quick brown fox jumps over the lazy dog." )
116+ bytes := []byte (fox )
76117 for i := 0 ; i < b .N ; i ++ {
77- filter .AddByte (s )
118+ filter .AddByte (bytes )
78119 }
79120}
80121
@@ -83,16 +124,27 @@ func BenchmarkTest(b *testing.B) {
83124 filter := New (1 << 30 , 200 )
84125 b .StartTimer ()
85126 for i := 0 ; i < b .N ; i ++ {
86- filter .Test ("The quick brown fox jumps over the lazy dog." )
127+ filter .Test (fox )
87128 }
88129}
89130
90131func BenchmarkTestByte (b * testing.B ) {
91132 b .StopTimer ()
92133 filter := New (1 << 30 , 200 )
93134 b .StartTimer ()
94- s := []byte ("The quick brown fox jumps over the lazy dog." )
135+ bytes := []byte (fox )
136+ for i := 0 ; i < b .N ; i ++ {
137+ filter .TestByte (bytes )
138+ }
139+ }
140+
141+ func BenchmarkTestAnd (b * testing.B ) {
142+ n := 1000
143+ b .StopTimer ()
144+ f1 := New (n , 200 )
145+ f2 := New (n , 200 )
146+ b .StartTimer ()
95147 for i := 0 ; i < b .N ; i ++ {
96- filter . TestByte ( s )
148+ _ = f1 . And ( f2 )
97149 }
98150}
0 commit comments