summaryrefslogtreecommitdiffstats
path: root/filter_test.go
diff options
context:
space:
mode:
authorMichael Mitton <mmitton@gmail.com>2011-02-18 07:36:55 +0100
committerMichael Mitton <mmitton@gmail.com>2011-02-18 07:36:55 +0100
commit1094e1befc82d86ecbd90193c68ed44a7026d8fa (patch)
treea3e9c753ee197eef91d35af85351e83465415908 /filter_test.go
downloadldap-1094e1befc82d86ecbd90193c68ed44a7026d8fa.tar
ldap-1094e1befc82d86ecbd90193c68ed44a7026d8fa.tar.gz
ldap-1094e1befc82d86ecbd90193c68ed44a7026d8fa.tar.bz2
ldap-1094e1befc82d86ecbd90193c68ed44a7026d8fa.tar.lz
ldap-1094e1befc82d86ecbd90193c68ed44a7026d8fa.tar.xz
ldap-1094e1befc82d86ecbd90193c68ed44a7026d8fa.tar.zst
ldap-1094e1befc82d86ecbd90193c68ed44a7026d8fa.zip
Diffstat (limited to 'filter_test.go')
-rw-r--r--filter_test.go78
1 files changed, 78 insertions, 0 deletions
diff --git a/filter_test.go b/filter_test.go
new file mode 100644
index 0000000..4b403e4
--- /dev/null
+++ b/filter_test.go
@@ -0,0 +1,78 @@
+package ldap
+
+import (
+ "github.com/mmitton/asn1-ber"
+ "testing"
+)
+
+type compile_test struct {
+ filter_str string
+ filter_type int
+}
+
+
+var test_filters = []compile_test {
+ compile_test{ filter_str: "(&(sn=Miller)(givenName=Bob))", filter_type: FilterAnd },
+ compile_test{ filter_str: "(|(sn=Miller)(givenName=Bob))", filter_type: FilterOr },
+ compile_test{ filter_str: "(!(sn=Miller))", filter_type: FilterNot },
+ compile_test{ filter_str: "(sn=Miller)", filter_type: FilterEqualityMatch },
+ compile_test{ filter_str: "(sn=Mill*)", filter_type: FilterSubstrings },
+ compile_test{ filter_str: "(sn=*Mill)", filter_type: FilterSubstrings },
+ compile_test{ filter_str: "(sn=*Mill*)", filter_type: FilterSubstrings },
+ compile_test{ filter_str: "(sn>=Miller)", filter_type: FilterGreaterOrEqual },
+ compile_test{ filter_str: "(sn<=Miller)", filter_type: FilterLessOrEqual },
+ compile_test{ filter_str: "(sn=*)", filter_type: FilterPresent },
+ compile_test{ filter_str: "(sn~=Miller)", filter_type: FilterApproxMatch },
+ // compile_test{ filter_str: "()", filter_type: FilterExtensibleMatch },
+}
+
+func TestFilter( t *testing.T ) {
+ // Test Compiler and Decompiler
+ for _, i := range test_filters {
+ filter, err := CompileFilter( i.filter_str )
+ if err != nil {
+ t.Errorf( "Problem compiling %s - %s", err.String() )
+ } else if filter.Tag != uint8(i.filter_type) {
+ t.Errorf( "%q Expected %q got %q", i.filter_str, FilterMap[ uint64(i.filter_type) ], FilterMap[ uint64(filter.Tag) ] )
+ } else {
+ o, err := DecompileFilter( filter )
+ if err != nil {
+ t.Errorf( "Problem compiling %s - %s", i, err.String() )
+ } else if i.filter_str != o {
+ t.Errorf( "%q expected, got %q", i.filter_str, o )
+ }
+ }
+ }
+}
+
+func BenchmarkFilterCompile( b *testing.B ) {
+ b.StopTimer()
+ filters := make([]string, len( test_filters ) )
+
+ // Test Compiler and Decompiler
+ for idx, i := range test_filters {
+ filters[ idx ] = i.filter_str
+ }
+
+ max_idx := len( filters )
+ b.StartTimer()
+ for i := 0; i < b.N; i++ {
+ CompileFilter( filters[ i % max_idx ] )
+ }
+}
+
+func BenchmarkFilterDecompile( b *testing.B ) {
+ b.StopTimer()
+ filters := make([]*ber.Packet, len( test_filters ) )
+
+ // Test Compiler and Decompiler
+ for idx, i := range test_filters {
+ filters[ idx ], _ = CompileFilter( i.filter_str )
+ }
+
+ max_idx := len( filters )
+ b.StartTimer()
+ for i := 0; i < b.N; i++ {
+ DecompileFilter( filters[ i % max_idx ] )
+ }
+}