User: user57
Date: 02/04/03 14:50:00
Modified: src/main/org/jboss/test/jbossmq/test
SelectorSyntaxUnitTestCase.java
Log:
o Applied patch: #530418 added tests to mq Selector unit tests
Revision Changes Path
1.3 +429 -9
jbosstest/src/main/org/jboss/test/jbossmq/test/SelectorSyntaxUnitTestCase.java
Index: SelectorSyntaxUnitTestCase.java
===================================================================
RCS file:
/cvsroot/jboss/jbosstest/src/main/org/jboss/test/jbossmq/test/SelectorSyntaxUnitTestCase.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- SelectorSyntaxUnitTestCase.java 15 Feb 2002 23:52:54 -0000 1.2
+++ SelectorSyntaxUnitTestCase.java 3 Apr 2002 22:50:00 -0000 1.3
@@ -19,7 +19,7 @@
* <p>Needs a lot of work...
*
* @author <a href="mailto:[EMAIL PROTECTED]">Jason Dillon</a>
- * @version $Revision: 1.2 $
+ * @version $Revision: 1.3 $
*/
public class SelectorSyntaxUnitTestCase
extends TestCase
@@ -31,25 +31,25 @@
{
super(name);
}
-
+
protected void setUp() throws Exception
{
super.setUp();
message = new SpyMessage();
}
-
+
public void testBooleanTrue() throws Exception
{
selector = new Selector("MyBoolean=true");
testBoolean("MyBoolean", true);
}
-
+
public void testBooleanFalse() throws Exception
- {
+ {
selector = new Selector("MyBoolean=false");
testBoolean("MyBoolean", false);
}
-
+
private void testBoolean(String name, boolean flag) throws Exception
{
message.setBooleanProperty(name, flag);
@@ -58,15 +58,435 @@
message.setBooleanProperty(name, !flag);
assertTrue(!selector.test(message));
}
-
- public void testStringEquals() throws Exception
+
+ public void testStringEquals() throws Exception
{
+ // First, simple test of string equality and inequality
selector = new Selector("MyString='astring'");
-
+
message.setStringProperty("MyString", "astring");
assertTrue(selector.test(message));
message.setStringProperty("MyString", "NOTastring");
assertTrue(!selector.test(message));
+
+ // test empty string
+ selector = new Selector("MyString=''");
+
+ message.setStringProperty("MyString", "");
+ assertTrue("test 1", selector.test(message));
+
+ message.setStringProperty("MyString", "NOTastring");
+ assertTrue("test 2", !selector.test(message));
+
+ // test literal apostrophes (which are escaped using two apostrophes
+ // in selectors)
+ selector = new Selector("MyString='test JBoss''s selector'");
+
+ // note: apostrophes are not escaped in string properties
+ message.setStringProperty("MyString", "test JBoss's selector");
+ // this test fails -- bug 530120
+ //assertTrue("test 3", selector.test(message));
+
+ message.setStringProperty("MyString", "NOTastring");
+ assertTrue("test 4", !selector.test(message));
+
+ }
+
+ public void testStringLike() throws Exception
+ {
+ // test LIKE operator with no wildcards
+ selector = new Selector("MyString LIKE 'astring'");
+
+ // test where LIKE operand matches
+ message.setStringProperty("MyString", "astring");
+ assertTrue(selector.test(message));
+
+ // test one character string
+ selector = new Selector("MyString LIKE 'a'");
+ message.setStringProperty("MyString","a");
+ assertTrue(selector.test(message));
+
+ // test empty string
+ selector = new Selector("MyString LIKE ''");
+ message.setStringProperty("MyString", "");
+ assertTrue(selector.test(message));
+
+ // tests where operand does not match
+ selector = new Selector("MyString LIKE 'astring'");
+
+ // test with extra characters at beginning
+ message.setStringProperty("MyString", "NOTastring");
+ assertTrue(!selector.test(message));
+
+ // test with extra characters at end
+ message.setStringProperty("MyString", "astringNOT");
+ assertTrue(!selector.test(message));
+
+ // test with extra characters in the middle
+ message.setStringProperty("MyString", "astNOTring");
+ assertTrue(!selector.test(message));
+
+ // test where operand is entirely different
+ message.setStringProperty("MyString", "totally different");
+ assertTrue(!selector.test(message));
+
+ // test case sensitivity
+ message.setStringProperty("MyString", "ASTRING");
+ assertTrue(!selector.test(message));
+
+ // test empty string
+ message.setStringProperty("MyString", "");
+ assertTrue(!selector.test(message));
+
+
+ // test lower-case 'like' operator?
+ }
+
+ public void testStringLikeUnderbarWildcard() throws Exception
+ {
+ // test LIKE operator with the _ wildcard, which
+ // matches any single character
+
+ // first, some tests with the wildcard by itself
+ selector = new Selector("MyString LIKE '_'");
+
+ // test match against single character
+ message.setStringProperty("MyString", "a");
+ assertTrue(selector.test(message));
+
+ // test match failure against multiple characters
+ message.setStringProperty("MyString", "aaaaa");
+ assertTrue(!selector.test(message));
+
+ // test match failure against the empty string
+ message.setStringProperty("MyString", "");
+ assertTrue(!selector.test(message));
+
+
+ // next, tests with wildcard at the beginning of the string
+ selector = new Selector("MyString LIKE '_bcdf'");
+
+ // test match at beginning of string
+ message.setStringProperty("MyString", "abcdf");
+ assertTrue(selector.test(message));
+
+ // match failure in first character after wildcard
+ message.setStringProperty("MyString", "aXcdf");
+ assertTrue(!selector.test(message));
+
+ // match failure in middle character
+ message.setStringProperty("MyString", "abXdf");
+ assertTrue(!selector.test(message));
+
+ // match failure in last character
+ message.setStringProperty("MyString", "abcdX");
+ assertTrue(!selector.test(message));
+
+ // match failure with empty string
+ message.setStringProperty("MyString", "");
+ assertTrue(!selector.test(message));
+
+ // match failure due to extra characters at beginning
+ message.setStringProperty("MyString", "XXXabcdf");
+ assertTrue(!selector.test(message));
+
+ // match failure due to extra characters at the end
+ message.setStringProperty("MyString", "abcdfXXX");
+ assertTrue(!selector.test(message));
+
+ // test that the _ wildcard does not match the 'empty' character
+ message.setStringProperty("MyString", "bcdf");
+ assertTrue(!selector.test(message));
+
+ // next, tests with wildcard at the end of the string
+ selector = new Selector("MyString LIKE 'abcd_'");
+
+ // test match at end of string
+ message.setStringProperty("MyString", "abcdf");
+ assertTrue(selector.test(message));
+
+ // match failure in first character before wildcard
+ message.setStringProperty("MyString", "abcXf");
+ assertTrue(!selector.test(message));
+
+ // match failure in middle character
+ message.setStringProperty("MyString", "abXdf");
+ assertTrue(!selector.test(message));
+
+ // match failure in first character
+ message.setStringProperty("MyString", "Xbcdf");
+ assertTrue(!selector.test(message));
+
+ // match failure with empty string
+ message.setStringProperty("MyString", "");
+ assertTrue(!selector.test(message));
+
+ // match failure due to extra characters at beginning
+ message.setStringProperty("MyString", "XXXabcdf");
+ assertTrue(!selector.test(message));
+
+ // match failure due to extra characters at the end
+ message.setStringProperty("MyString", "abcdfXXX");
+ assertTrue(!selector.test(message));
+
+ // test that the _ wildcard does not match the 'empty' character
+ message.setStringProperty("MyString", "abcd");
+ assertTrue(!selector.test(message));
+
+ // test match in middle of string
+
+ // next, tests with wildcard in the middle of the string
+ selector = new Selector("MyString LIKE 'ab_df'");
+
+ // test match in the middle of string
+ message.setStringProperty("MyString", "abcdf");
+ assertTrue(selector.test(message));
+
+ // match failure in first character before wildcard
+ message.setStringProperty("MyString", "aXcdf");
+ assertTrue(!selector.test(message));
+
+ // match failure in first character after wildcard
+ message.setStringProperty("MyString", "abcXf");
+ assertTrue(!selector.test(message));
+
+ // match failure in last character
+ message.setStringProperty("MyString", "abcdX");
+ assertTrue(!selector.test(message));
+
+ // match failure with empty string
+ message.setStringProperty("MyString", "");
+ assertTrue(!selector.test(message));
+
+ // match failure due to extra characters at beginning
+ message.setStringProperty("MyString", "XXXabcdf");
+ assertTrue(!selector.test(message));
+
+ // match failure due to extra characters at the end
+ message.setStringProperty("MyString", "abcdfXXX");
+ assertTrue(!selector.test(message));
+
+ // test that the _ wildcard does not match the 'empty' character
+ message.setStringProperty("MyString", "abdf");
+ assertTrue(!selector.test(message));
+
+ // test match failures
+ }
+
+ public void testStringLikePercentWildcard() throws Exception
+ {
+ // test LIKE operator with the % wildcard, which
+ // matches any sequence of characters
+ // note many of the tests are similar to those for _
+
+
+ // first, some tests with the wildcard by itself
+ selector = new Selector("MyString LIKE '%'");
+
+ // test match against single character
+ message.setStringProperty("MyString", "a");
+ assertTrue(selector.test(message));
+
+ // test match against multiple characters
+ message.setStringProperty("MyString", "aaaaa");
+ assertTrue(selector.test(message));
+
+ message.setStringProperty("MyString", "abcdf");
+ assertTrue(selector.test(message));
+
+ // test match against the empty string
+ message.setStringProperty("MyString", "");
+ assertTrue(selector.test(message));
+
+
+ // next, tests with wildcard at the beginning of the string
+ selector = new Selector("MyString LIKE '%bcdf'");
+
+ // test match with single character at beginning of string
+ message.setStringProperty("MyString", "Xbcdf");
+ assertTrue(selector.test(message));
+
+ // match with multiple characters at beginning
+ message.setStringProperty("MyString", "XXbcdf");
+ assertTrue(selector.test(message));
+
+ // match failure in middle character
+ message.setStringProperty("MyString", "abXdf");
+ assertTrue(!selector.test(message));
+
+ // match failure in last character
+ message.setStringProperty("MyString", "abcdX");
+ assertTrue(!selector.test(message));
+
+ // match failure with empty string
+ message.setStringProperty("MyString", "");
+ assertTrue(!selector.test(message));
+
+ // match failure due to extra characters at the end
+ message.setStringProperty("MyString", "abcdfXXX");
+ assertTrue(!selector.test(message));
+
+ // test that the % wildcard matches the empty string
+ message.setStringProperty("MyString", "bcdf");
+ assertTrue(selector.test(message));
+
+ // next, tests with wildcard at the end of the string
+ selector = new Selector("MyString LIKE 'abcd%'");
+
+ // test match of single character at end of string
+ message.setStringProperty("MyString", "abcdf");
+ assertTrue(selector.test(message));
+
+ // test match of multiple characters at end of string
+ message.setStringProperty("MyString", "abcdfgh");
+ assertTrue(selector.test(message));
+
+ // match failure in first character before wildcard
+ message.setStringProperty("MyString", "abcXf");
+ assertTrue(!selector.test(message));
+
+ // match failure in middle character
+ message.setStringProperty("MyString", "abXdf");
+ assertTrue(!selector.test(message));
+
+ // match failure in first character
+ message.setStringProperty("MyString", "Xbcdf");
+ assertTrue(!selector.test(message));
+
+ // match failure with empty string
+ message.setStringProperty("MyString", "");
+ assertTrue(!selector.test(message));
+
+ // match failure due to extra characters at beginning
+ message.setStringProperty("MyString", "XXXabcdf");
+ assertTrue(!selector.test(message));
+
+ // test that the % wildcard matches the empty string
+ message.setStringProperty("MyString", "abcd");
+ assertTrue(selector.test(message));
+
+ // next, tests with wildcard in the middle of the string
+ selector = new Selector("MyString LIKE 'ab%df'");
+
+ // test match with single character in the middle of string
+ message.setStringProperty("MyString", "abXdf");
+ assertTrue(selector.test(message));
+
+ // test match with multiple characters in the middle of string
+ message.setStringProperty("MyString", "abXXXdf");
+ assertTrue(selector.test(message));
+
+ // match failure in first character before wildcard
+ message.setStringProperty("MyString", "aXcdf");
+ assertTrue(!selector.test(message));
+
+ // match failure in first character after wildcard
+ message.setStringProperty("MyString", "abcXf");
+ assertTrue(!selector.test(message));
+
+ // match failure in last character
+ message.setStringProperty("MyString", "abcdX");
+ assertTrue(!selector.test(message));
+
+ // match failure with empty string
+ message.setStringProperty("MyString", "");
+ assertTrue(!selector.test(message));
+
+ // match failure due to extra characters at beginning
+ message.setStringProperty("MyString", "XXXabcdf");
+ assertTrue(!selector.test(message));
+
+ // match failure due to extra characters at the end
+ message.setStringProperty("MyString", "abcdfXXX");
+ assertTrue(!selector.test(message));
+
+ // test that the % wildcard matches the empty string
+ message.setStringProperty("MyString", "abdf");
+ assertTrue(selector.test(message));
+
+ }
+
+ public void testStringLikePunctuation() throws Exception
+ {
+ // test proper handling of some punctuation characters.
+ // non-trivial since the underlying implementation might
+ // (and in fact currently does) use a general-purpose
+ // RE library, which has a different notion of which
+ // characters are wildcards
+
+ // the particular tests here are motivated by the
+ // wildcards of the current underlying RE engine,
+ // GNU regexp.
+
+ selector = new Selector("MyString LIKE 'a^$b'");
+ message.setStringProperty("MyString", "a^$b");
+ assertTrue(selector.test(message));
+
+ // this one has a double backslash since backslash
+ // is interpreted specially by Java
+ selector = new Selector("MyString LIKE 'a\\dc'");
+ message.setStringProperty("MyString", "a\\dc");
+ assertTrue(selector.test(message));
+
+ selector = new Selector("MyString LIKE 'a.c'");
+ message.setStringProperty("MyString", "abc");
+ assertTrue(!selector.test(message));
+
+ selector = new Selector("MyString LIKE '[abc]'");
+ message.setStringProperty("MyString", "[abc]");
+ assertTrue(selector.test(message));
+
+ selector = new Selector("MyString LIKE '[^abc]'");
+ message.setStringProperty("MyString", "[^abc]");
+ assertTrue(selector.test(message));
+
+ selector = new Selector("MyString LIKE '[a-c]'");
+ message.setStringProperty("MyString", "[a-c]");
+ assertTrue(selector.test(message));
+
+ selector = new Selector("MyString LIKE '[:alpha]'");
+ message.setStringProperty("MyString", "[:alpha]");
+ assertTrue(selector.test(message));
+
+ selector = new Selector("MyString LIKE '(abc)'");
+ message.setStringProperty("MyString", "(abc)");
+ assertTrue(selector.test(message));
+
+ selector = new Selector("MyString LIKE 'a|bc'");
+ message.setStringProperty("MyString", "a|bc");
+ assertTrue(selector.test(message));
+
+ selector = new Selector("MyString LIKE '(abc)?'");
+ message.setStringProperty("MyString", "(abc)?");
+ assertTrue(selector.test(message));
+
+ selector = new Selector("MyString LIKE '(abc)*'");
+ message.setStringProperty("MyString", "(abc)*");
+ assertTrue(selector.test(message));
+
+ selector = new Selector("MyString LIKE '(abc)+'");
+ message.setStringProperty("MyString", "(abc)+");
+ assertTrue(selector.test(message));
+
+ selector = new Selector("MyString LIKE '(abc){3}'");
+ message.setStringProperty("MyString", "(abc){3}");
+ assertTrue(selector.test(message));
+
+ selector = new Selector("MyString LIKE '(abc){3,5}'");
+ message.setStringProperty("MyString", "(abc){3,5}");
+ assertTrue(selector.test(message));
+
+ selector = new Selector("MyString LIKE '(abc){3,}'");
+ message.setStringProperty("MyString", "(abc){3,}");
+ assertTrue(selector.test(message));
+
+ selector = new Selector("MyString LIKE '(?=abc)'");
+ message.setStringProperty("MyString", "(?=abc)");
+ assertTrue(selector.test(message));
+
+ selector = new Selector("MyString LIKE '(?!abc)'");
+ message.setStringProperty("MyString", "(?!abc)");
+ assertTrue(selector.test(message));
}
}
_______________________________________________
Jboss-development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development