You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by el...@apache.org on 2010/09/15 17:09:38 UTC
svn commit: r997359 -
/directory/shared/trunk/ldap/src/test/java/org/apache/directory/shared/ldap/filter/FilterParserTest.java
Author: elecharny
Date: Wed Sep 15 15:09:37 2010
New Revision: 997359
URL: http://svn.apache.org/viewvc?rev=997359&view=rev
Log:
Added a test to check that the filter parser is correctly working (this is for DIRSERVER-553)
Modified:
directory/shared/trunk/ldap/src/test/java/org/apache/directory/shared/ldap/filter/FilterParserTest.java
Modified: directory/shared/trunk/ldap/src/test/java/org/apache/directory/shared/ldap/filter/FilterParserTest.java
URL: http://svn.apache.org/viewvc/directory/shared/trunk/ldap/src/test/java/org/apache/directory/shared/ldap/filter/FilterParserTest.java?rev=997359&r1=997358&r2=997359&view=diff
==============================================================================
--- directory/shared/trunk/ldap/src/test/java/org/apache/directory/shared/ldap/filter/FilterParserTest.java (original)
+++ directory/shared/trunk/ldap/src/test/java/org/apache/directory/shared/ldap/filter/FilterParserTest.java Wed Sep 15 15:09:37 2010
@@ -28,6 +28,7 @@ import static org.junit.Assert.fail;
import java.io.UnsupportedEncodingException;
import java.text.ParseException;
+import java.util.List;
import org.apache.directory.junit.tools.Concurrent;
import org.apache.directory.junit.tools.ConcurrentJunitRunner;
@@ -1066,4 +1067,76 @@ public class FilterParserTest
assertTrue( str.startsWith( str2 ) );
assertEquals( "(&(ou~=people)(age>=30))", str2 );
}
+
+
+ @Test
+ public void testFilterOrder() throws ParseException
+ {
+ String filterStr1 = "(&(&(jagplayUserGroup=Active)(!(jagplayUserGroup=Banned))(jagplayUserNickname=admin)))";
+ String filterStr2 = "(&(jagplayUserNickname=admin)(&(jagplayUserGroup=Active)(!(jagplayUserGroup=Banned)))) ";
+
+ BranchNode node1 = ( BranchNode ) FilterParser.parse( filterStr1 );
+ BranchNode node2 = ( BranchNode ) FilterParser.parse( filterStr2 );
+
+ // Check Node 1
+ assertEquals( 1, node1.getChildren().size() );
+
+ assertTrue( node1 instanceof AndNode );
+ ExprNode andNode1 = node1.getChildren().get( 0 );
+ assertTrue( andNode1 instanceof AndNode );
+ List<ExprNode> children1 = ( ( AndNode ) andNode1 ).getChildren();
+ assertEquals( 3, children1.size() );
+
+ // First child : (jagplayUserGroup=Active)
+ ExprNode child1 = children1.get( 0 );
+ assertTrue( child1 instanceof EqualityNode );
+ assertEquals( "jagplayUserGroup", ( ( EqualityNode ) child1 ).getAttribute() );
+ assertEquals( "Active", ( ( EqualityNode ) child1 ).getValue().getString() );
+
+ // Second child : (!(jagplayUserGroup=Banned))
+ ExprNode child2 = children1.get( 1 );
+ assertTrue( child2 instanceof NotNode );
+ NotNode notNode1 = ( NotNode ) child2;
+
+ ExprNode notNodeChild1 = notNode1.getFirstChild();
+ assertTrue( notNodeChild1 instanceof EqualityNode );
+ assertEquals( "jagplayUserGroup", ( ( EqualityNode ) notNodeChild1 ).getAttribute() );
+ assertEquals( "Banned", ( ( EqualityNode ) notNodeChild1 ).getValue().getString() );
+
+ // Third child : (jagplayUserNickname=admin)
+ ExprNode child3 = children1.get( 2 );
+ assertTrue( child3 instanceof EqualityNode );
+ assertEquals( "jagplayUserNickname", ( ( EqualityNode ) child3 ).getAttribute() );
+ assertEquals( "admin", ( ( EqualityNode ) child3 ).getValue().getString() );
+
+ // Check Node 2 : (&(jagplayUserNickname=admin)(&(jagplayUserGroup=Active)(!(jagplayUserGroup=Banned))))
+ assertEquals( 2, node2.getChildren().size() );
+ assertTrue( node2 instanceof AndNode );
+
+ child1 = node2.getChildren().get( 0 );
+ assertTrue( child1 instanceof EqualityNode );
+ assertEquals( "jagplayUserNickname", ( ( EqualityNode ) child1 ).getAttribute() );
+ assertEquals( "admin", ( ( EqualityNode ) child1 ).getValue().getString() );
+
+ child2 = node2.getChildren().get( 1 );
+ assertTrue( child2 instanceof AndNode );
+ AndNode andNode2 = ( ( AndNode ) child2 );
+ assertEquals( 2, andNode2.getChildren().size() );
+
+ // First child : (jagplayUserGroup=Active)
+ child1 = andNode2.getChildren().get( 0 );
+ assertTrue( child1 instanceof EqualityNode );
+ assertEquals( "jagplayUserGroup", ( ( EqualityNode ) child1 ).getAttribute() );
+ assertEquals( "Active", ( ( EqualityNode ) child1 ).getValue().getString() );
+
+ // second child : (!(jagplayUserGroup=Banned))
+ child2 = andNode2.getChildren().get( 1 );
+ assertTrue( child2 instanceof NotNode );
+ notNode1 = ( NotNode ) child2;
+
+ notNodeChild1 = notNode1.getFirstChild();
+ assertTrue( notNodeChild1 instanceof EqualityNode );
+ assertEquals( "jagplayUserGroup", ( ( EqualityNode ) notNodeChild1 ).getAttribute() );
+ assertEquals( "Banned", ( ( EqualityNode ) notNodeChild1 ).getValue().getString() );
+ }
}