You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by ch...@apache.org on 2009/06/10 18:28:54 UTC

svn commit: r783414 - in /activemq/sandbox/activemq-flow/activemq-selector/src/test/java/org: ./ apache/ apache/activemq/ apache/activemq/selector/ apache/activemq/selector/SelectorParserTest.java apache/activemq/selector/SelectorTest.java

Author: chirino
Date: Wed Jun 10 16:28:54 2009
New Revision: 783414

URL: http://svn.apache.org/viewvc?rev=783414&view=rev
Log:
Adding selector tests from  trunk

Added:
    activemq/sandbox/activemq-flow/activemq-selector/src/test/java/org/
    activemq/sandbox/activemq-flow/activemq-selector/src/test/java/org/apache/
    activemq/sandbox/activemq-flow/activemq-selector/src/test/java/org/apache/activemq/
    activemq/sandbox/activemq-flow/activemq-selector/src/test/java/org/apache/activemq/selector/
      - copied from r783310, activemq/trunk/activemq-core/src/test/java/org/apache/activemq/selector/
Modified:
    activemq/sandbox/activemq-flow/activemq-selector/src/test/java/org/apache/activemq/selector/SelectorParserTest.java
    activemq/sandbox/activemq-flow/activemq-selector/src/test/java/org/apache/activemq/selector/SelectorTest.java

Modified: activemq/sandbox/activemq-flow/activemq-selector/src/test/java/org/apache/activemq/selector/SelectorParserTest.java
URL: http://svn.apache.org/viewvc/activemq/sandbox/activemq-flow/activemq-selector/src/test/java/org/apache/activemq/selector/SelectorParserTest.java?rev=783414&r1=783310&r2=783414&view=diff
==============================================================================
--- activemq/sandbox/activemq-flow/activemq-selector/src/test/java/org/apache/activemq/selector/SelectorParserTest.java (original)
+++ activemq/sandbox/activemq-flow/activemq-selector/src/test/java/org/apache/activemq/selector/SelectorParserTest.java Wed Jun 10 16:28:54 2009
@@ -17,13 +17,13 @@
 package org.apache.activemq.selector;
 
 import junit.framework.TestCase;
+
 import org.apache.activemq.filter.BooleanExpression;
 import org.apache.activemq.filter.ComparisonExpression;
 import org.apache.activemq.filter.Expression;
 import org.apache.activemq.filter.LogicExpression;
 import org.apache.activemq.filter.PropertyExpression;
 import org.apache.activemq.filter.XPathExpression;
-import org.apache.activemq.spring.ConsumerBean;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 

Modified: activemq/sandbox/activemq-flow/activemq-selector/src/test/java/org/apache/activemq/selector/SelectorTest.java
URL: http://svn.apache.org/viewvc/activemq/sandbox/activemq-flow/activemq-selector/src/test/java/org/apache/activemq/selector/SelectorTest.java?rev=783414&r1=783310&r2=783414&view=diff
==============================================================================
--- activemq/sandbox/activemq-flow/activemq-selector/src/test/java/org/apache/activemq/selector/SelectorTest.java (original)
+++ activemq/sandbox/activemq-flow/activemq-selector/src/test/java/org/apache/activemq/selector/SelectorTest.java Wed Jun 10 16:28:54 2009
@@ -16,24 +16,113 @@
  */
 package org.apache.activemq.selector;
 
-import javax.jms.InvalidSelectorException;
-import javax.jms.JMSException;
-import javax.jms.Message;
+import java.util.HashMap;
 
 import junit.framework.TestCase;
-import org.apache.activemq.command.ActiveMQMessage;
-import org.apache.activemq.command.ActiveMQTextMessage;
-import org.apache.activemq.command.ActiveMQTopic;
+
 import org.apache.activemq.filter.BooleanExpression;
+import org.apache.activemq.filter.Expression;
+import org.apache.activemq.filter.FilterException;
 import org.apache.activemq.filter.MessageEvaluationContext;
 
 /**
  * @version $Revision: 1.7 $
  */
 public class SelectorTest extends TestCase {
+		
+    class MockMessage implements MessageEvaluationContext {
+
+    	HashMap<String, Object> properties = new HashMap<String, Object>();
+		private String text;
+		private Object destination;
+		private String messageId;
+		private String type;
+		private Object localConnectionId;
+    	
+		public void setDestination(Object destination) {
+			this.destination=destination;
+		}
+		public void setJMSMessageID(String messageId) {
+			this.messageId = messageId;
+		}
+		public void setJMSType(String type) {
+			this.type = type;
+		}
+		public void setText(String text) {
+			this.text = text;
+		}
+
+		public void setBooleanProperty(String key, boolean value) {
+			properties.put(key, value);
+		}
+
+		public void setStringProperty(String key, String value) {
+			properties.put(key, value);
+		}
+
+		public void setByteProperty(String key, byte value) {
+			properties.put(key, value);
+		}
+
+		public void setDoubleProperty(String key, double value) {
+			properties.put(key, value);
+		}
+
+		public void setFloatProperty(String key, float value) {
+			properties.put(key, value);
+		}
+
+		public void setLongProperty(String key, long value) {
+			properties.put(key, value);
+		}
+
+		public void setIntProperty(String key, int value) {
+			properties.put(key, value);
+		}
+
+		public void setShortProperty(String key, short value) {
+			properties.put(key, value);
+		}
+
+		public void setObjectProperty(String key, Object value) {
+			properties.put(key, value);
+		}
+
+		public <T> T getBodyAs(Class<T> type) throws FilterException {
+			if( type == String.class ) {
+				return type.cast(text);
+			}
+			return null;
+		}
+
+		public <T> T getDestination() {
+			return (T)destination;
+		}
+
+		public Object getLocalConnectionId() {
+			return localConnectionId;
+		}
+
+		public Expression getPropertyExpression(final String name) {
+			return new Expression() {
+		        public Object evaluate(MessageEvaluationContext mc) throws FilterException {
+	                MockMessage mockMessage = (MockMessage)mc;
+	    			if( "JMSType".equals(name) ) {
+	    				return mockMessage.type;
+	    			}
+	    			if( "JMSMessageID".equals(name) ) {
+	    				return mockMessage.messageId;
+	    			}
+					return mockMessage.properties.get(name);
+		        }
+			};
+		}
+    	
+    }
+
 
     public void testBooleanSelector() throws Exception {
-        Message message = createMessage();
+        MockMessage message = createMessage();
 
         assertSelector(message, "(trueProp OR falseProp) AND trueProp", true);
         assertSelector(message, "(trueProp OR falseProp) AND falseProp", false);
@@ -41,7 +130,7 @@
     }
 
     public void testXPathSelectors() throws Exception {
-        ActiveMQTextMessage message = new ActiveMQTextMessage();
+        MockMessage message = new MockMessage();
 
         message.setJMSType("xml");
         message.setText("<root><a key='first' num='1'/><b key='second' num='2'>b</b></root>");
@@ -83,7 +172,7 @@
     }
 
     public void testJMSPropertySelectors() throws Exception {
-        Message message = createMessage();
+        MockMessage message = createMessage();
         message.setJMSType("selector-test");
         message.setJMSMessageID("id:test:1:1:1:1");
 
@@ -102,7 +191,7 @@
     }
 
     public void testBasicSelectors() throws Exception {
-        Message message = createMessage();
+        MockMessage message = createMessage();
 
         assertSelector(message, "name = 'James'", true);
         assertSelector(message, "rank > 100", true);
@@ -112,7 +201,7 @@
     }
 
     public void testPropertyTypes() throws Exception {
-        Message message = createMessage();
+        MockMessage message = createMessage();
         assertSelector(message, "byteProp = 123", true);
         assertSelector(message, "byteProp = 10", false);
         assertSelector(message, "byteProp2 = 33", true);
@@ -138,7 +227,7 @@
     }
 
     public void testAndSelectors() throws Exception {
-        Message message = createMessage();
+        MockMessage message = createMessage();
 
         assertSelector(message, "name = 'James' and rank < 200", true);
         assertSelector(message, "name = 'James' and rank > 200", false);
@@ -147,7 +236,7 @@
     }
 
     public void testOrSelectors() throws Exception {
-        Message message = createMessage();
+        MockMessage message = createMessage();
 
         assertSelector(message, "name = 'James' or rank < 200", true);
         assertSelector(message, "name = 'James' or rank > 200", true);
@@ -157,7 +246,7 @@
     }
 
     public void testPlus() throws Exception {
-        Message message = createMessage();
+        MockMessage message = createMessage();
 
         assertSelector(message, "rank + 2 = 125", true);
         assertSelector(message, "(rank + 2) = 125", true);
@@ -168,7 +257,7 @@
     }
 
     public void testMinus() throws Exception {
-        Message message = createMessage();
+        MockMessage message = createMessage();
 
         assertSelector(message, "rank - 2 = 121", true);
         assertSelector(message, "rank - version = 121", true);
@@ -176,7 +265,7 @@
     }
 
     public void testMultiply() throws Exception {
-        Message message = createMessage();
+        MockMessage message = createMessage();
 
         assertSelector(message, "rank * 2 = 246", true);
         assertSelector(message, "rank * version = 246", true);
@@ -184,7 +273,7 @@
     }
 
     public void testDivide() throws Exception {
-        Message message = createMessage();
+        MockMessage message = createMessage();
 
         assertSelector(message, "rank / version = 61.5", true);
         assertSelector(message, "rank / 3 > 100.0", false);
@@ -194,14 +283,14 @@
     }
 
     public void testBetween() throws Exception {
-        Message message = createMessage();
+        MockMessage message = createMessage();
 
         assertSelector(message, "rank between 100 and 150", true);
         assertSelector(message, "rank between 10 and 120", false);
     }
 
     public void testIn() throws Exception {
-        Message message = createMessage();
+        MockMessage message = createMessage();
 
         assertSelector(message, "name in ('James', 'Bob', 'Gromit')", true);
         assertSelector(message, "name in ('Bob', 'James', 'Gromit')", true);
@@ -212,7 +301,7 @@
     }
 
     public void testIsNull() throws Exception {
-        Message message = createMessage();
+        MockMessage message = createMessage();
 
         assertSelector(message, "dummy is null", true);
         assertSelector(message, "dummy is not null", false);
@@ -221,7 +310,7 @@
     }
 
     public void testLike() throws Exception {
-        Message message = createMessage();
+        MockMessage message = createMessage();
         message.setStringProperty("modelClassId", "com.whatever.something.foo.bar");
         message.setStringProperty("modelInstanceId", "170");
         message.setStringProperty("modelRequestError", "abc");
@@ -248,7 +337,7 @@
      * Test cases from Mats Henricson
      */
     public void testMatsHenricsonUseCases() throws Exception {
-        Message message = createMessage();
+        MockMessage message = createMessage();
         assertSelector(message, "SessionserverId=1870414179", false);
 
         message.setLongProperty("SessionserverId", 1870414179);
@@ -269,7 +358,7 @@
     }
 
     public void testFloatComparisons() throws Exception {
-        Message message = createMessage();
+        MockMessage message = createMessage();
 
         // JMS 1.1 Section 3.8.1.1 : Approximate literals use the Java
         // floating-point literal syntax.
@@ -318,12 +407,12 @@
     }
 
     public void testStringQuoteParsing() throws Exception {
-        Message message = createMessage();
+        MockMessage message = createMessage();
         assertSelector(message, "quote = '''In God We Trust'''", true);
     }
 
     public void testLikeComparisons() throws Exception {
-        Message message = createMessage();
+        MockMessage message = createMessage();
 
         assertSelector(message, "quote LIKE '''In G_d We Trust'''", true);
         assertSelector(message, "quote LIKE '''In Gd_ We Trust'''", false);
@@ -344,14 +433,14 @@
     }
 
     public void testInvalidSelector() throws Exception {
-        Message message = createMessage();
+        MockMessage message = createMessage();
         assertInvalidSelector(message, "3+5");
         assertInvalidSelector(message, "True AND 3+5");
         assertInvalidSelector(message, "=TEST 'test'");
     }
 
-    protected Message createMessage() throws JMSException {
-        Message message = createMessage("FOO.BAR");
+    protected MockMessage createMessage() {
+        MockMessage message = createMessage("FOO.BAR");
         message.setJMSType("selector-test");
         message.setJMSMessageID("connection:1:1:1:1");
         message.setObjectProperty("name", "James");
@@ -375,26 +464,24 @@
         return message;
     }
 
-    protected void assertInvalidSelector(Message message, String text) throws JMSException {
+    protected void assertInvalidSelector(MockMessage message, String text) {
         try {
             SelectorParser.parse(text);
             fail("Created a valid selector");
-        } catch (InvalidSelectorException e) {
+        } catch (FilterException e) {
         }
     }
-
-    protected void assertSelector(Message message, String text, boolean expected) throws JMSException {
+    
+    protected void assertSelector(MockMessage message, String text, boolean expected) throws FilterException {
         BooleanExpression selector = SelectorParser.parse(text);
         assertTrue("Created a valid selector", selector != null);
-        MessageEvaluationContext context = new MessageEvaluationContext();
-        context.setMessageReference((org.apache.activemq.command.Message)message);
-        boolean value = selector.matches(context);
+        boolean value = selector.matches(message);
         assertEquals("Selector for: " + text, expected, value);
     }
 
-    protected Message createMessage(String subject) throws JMSException {
-        ActiveMQMessage message = new ActiveMQMessage();
-        message.setJMSDestination(new ActiveMQTopic(subject));
+    protected MockMessage createMessage(String subject) {
+    	MockMessage message = new MockMessage();
+        message.setDestination(subject);
         return message;
     }
 }