001: /*
002: * JBoss, Home of Professional Open Source.
003: * Copyright 2006, Red Hat Middleware LLC, and individual contributors
004: * as indicated by the @author tags. See the copyright.txt file in the
005: * distribution for a full listing of individual contributors.
006: *
007: * This is free software; you can redistribute it and/or modify it
008: * under the terms of the GNU Lesser General Public License as
009: * published by the Free Software Foundation; either version 2.1 of
010: * the License, or (at your option) any later version.
011: *
012: * This software is distributed in the hope that it will be useful,
013: * but WITHOUT ANY WARRANTY; without even the implied warranty of
014: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
015: * Lesser General Public License for more details.
016: *
017: * You should have received a copy of the GNU Lesser General Public
018: * License along with this software; if not, write to the Free
019: * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
020: * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
021: */
022: package test.compliance.objectname;
023:
024: import junit.framework.TestCase;
025:
026: import javax.management.MalformedObjectNameException;
027: import javax.management.ObjectName;
028:
029: public class PatternTEST extends TestCase {
030: public PatternTEST(String s) {
031: super (s);
032: }
033:
034: public void testBasicDomainPattern() {
035: String nameArg = "*:key1=val1,key2=val2";
036: ObjectName name = constructSafely(nameArg);
037: assertTrue("isPattern should be true", name.isPattern());
038: assertEquals("toString should be: '" + nameArg + "'", nameArg,
039: name.toString());
040: assertTrue("isPropertyPattern should be false", !name
041: .isPropertyPattern());
042: assertTrue("isDomainPattern should be true", name
043: .isDomainPattern());
044: assertEquals("*", name.getDomain());
045: }
046:
047: public void testBasicDomainPatternExtra() {
048: String nameArg = "**:key1=val1,key2=val2";
049: ObjectName name = constructSafely(nameArg);
050: assertTrue("isPattern should be true", name.isPattern());
051: assertEquals("toString should be: '" + nameArg + "'", nameArg,
052: name.toString());
053: assertTrue("isPropertyPattern should be false", !name
054: .isPropertyPattern());
055: assertTrue("isDomainPattern should be true", name
056: .isDomainPattern());
057: assertEquals("**", name.getDomain());
058: }
059:
060: public void testPartialDomainPattern() {
061: String nameArg = "*domain:key1=val1,key2=val2";
062: ObjectName name = constructSafely(nameArg);
063: assertTrue("isPattern should be true", name.isPattern());
064: assertEquals("toString should be: '" + nameArg + "'", nameArg,
065: name.toString());
066: assertTrue("isPropertyPattern should be false", !name
067: .isPropertyPattern());
068: assertTrue("isDomainPattern should be true", name
069: .isDomainPattern());
070: assertEquals("*domain", name.getDomain());
071: }
072:
073: public void testHarderPartialDomainPattern() {
074: String nameArg = "d*n:key1=val1,key2=val2";
075: ObjectName name = constructSafely(nameArg);
076: assertTrue("isPattern should be true", name.isPattern());
077: assertEquals("toString should be: '" + nameArg + "'", nameArg,
078: name.toString());
079: assertTrue("isPropertyPattern should be false", !name
080: .isPropertyPattern());
081: assertTrue("isDomainPattern should be true", name
082: .isDomainPattern());
083: assertEquals("d*n", name.getDomain());
084: }
085:
086: public void testHarderPartialDomainPatternExtra() {
087: String nameArg = "d**n:key1=val1,key2=val2";
088: ObjectName name = constructSafely(nameArg);
089: assertTrue("isPattern should be true", name.isPattern());
090: assertEquals("toString should be: '" + nameArg + "'", nameArg,
091: name.toString());
092: assertTrue("isPropertyPattern should be false", !name
093: .isPropertyPattern());
094: assertTrue("isDomainPattern should be true", name
095: .isDomainPattern());
096: assertEquals("d**n", name.getDomain());
097: }
098:
099: public void testPositionalDomainPattern() {
100: String nameArg = "do??in:key1=val1,key2=val2";
101: ObjectName name = constructSafely(nameArg);
102: assertTrue("isPattern should be true", name.isPattern());
103: assertEquals("toString should be: '" + nameArg + "'", nameArg,
104: name.toString());
105: assertTrue("isPropertyPattern should be false", !name
106: .isPropertyPattern());
107: assertTrue("isDomainPattern should be true", name
108: .isDomainPattern());
109: assertEquals("do??in", name.getDomain());
110: }
111:
112: public void testPatternOnly() {
113: String nameArg = "*:*";
114: ObjectName name = constructSafely(nameArg);
115: assertTrue("isPattern should be true", name.isPattern());
116: assertTrue("isPropertyPattern should be true", name
117: .isPropertyPattern());
118: assertTrue("isDomainPattern should be true", name
119: .isDomainPattern());
120: // The RI incorrectly (IMHO) removes the * from propertyPatterns
121: assertEquals("FAILS IN RI", nameArg, name.getCanonicalName());
122: }
123:
124: public void testKeyPatternOnly() {
125: String nameArg = "domain:*";
126: ObjectName name = constructSafely(nameArg);
127: assertTrue("isPattern should be true", name.isPattern());
128: assertTrue("isPropertyPattern should be true", name
129: .isPropertyPattern());
130: assertTrue("isDomainPattern should be false", !name
131: .isDomainPattern());
132: // The RI incorrectly (IMHO) removes the * from propertyPatterns
133: assertEquals("FAILS IN RI", nameArg, name.getCanonicalName());
134: assertTrue("key properties hash should be zero size", 0 == name
135: .getKeyPropertyList().size());
136: }
137:
138: public void testPartialKeyPattern() {
139: String nameArg = "domain:key2=val2,*,key1=val1";
140: ObjectName name = constructSafely(nameArg);
141: assertTrue("isPattern should be true", name.isPattern());
142: assertTrue("isPropertyPattern should be true", name
143: .isPropertyPattern());
144: assertTrue("isDomainPattern should be false", !name
145: .isDomainPattern());
146: // The RI incorrectly (IMHO) removes the * from propertyPatterns
147: assertEquals("FAILS IN RI", "domain:key1=val1,key2=val2,*",
148: name.getCanonicalName());
149: assertTrue("key properties hash should only have 2 elements",
150: 2 == name.getKeyPropertyList().size());
151: }
152:
153: public void testEquality_a() {
154: ObjectName pat1 = constructSafely("domain:*,key=value");
155: ObjectName pat2 = constructSafely("domain:key=value,*");
156: assertEquals(pat1, pat2);
157: }
158:
159: public void testEquality_b() {
160: ObjectName pat1 = constructSafely("do**main:key=value,*");
161: ObjectName pat2 = constructSafely("do*main:key=value,*");
162: assertTrue(".equals() should return false", !pat1.equals(pat2));
163: }
164:
165: public void testEquality_c() {
166: ObjectName conc = constructSafely("domain:key=value");
167: ObjectName pat = constructSafely("domain:key=value,*");
168: assertTrue("toString() should not match", conc.toString()
169: .equals(pat.toString()) == false);
170: assertTrue("equals() should be false", !conc.equals(pat));
171: }
172:
173: private ObjectName constructSafely(String nameArg) {
174: ObjectName name = null;
175: try {
176: name = new ObjectName(nameArg);
177: } catch (MalformedObjectNameException e) {
178: fail("spurious MalformedObjectNameException on ('"
179: + nameArg + "')");
180: }
181:
182: return name;
183: }
184: }
|