/** * * Copyright 2005 The Apache Software Foundation * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.geronimo.gbean; import java.util.Properties; import java.util.HashSet; import java.util.Set; import java.util.LinkedHashMap; import java.util.Map; import java.util.Comparator; import java.rmi.MarshalledObject; import junit.framework.TestCase; /** * @version $Rev$ $Date$ */ public class GBeanNameTest extends TestCase { private Properties props; public void testPropertyConstruction() { String domain = "testDomain"; Map props = new LinkedHashMap(); props.put("prop1", "value1"); props.put("prop2", "value2"); GBeanName name = new GBeanName(domain, props); assertEquals("testDomain:prop1=value1,prop2=value2", name.toString()); } public void testNameConstruction() { GBeanName name = new GBeanName("testDomain:prop1=value1,prop2=value2"); assertEquals("testDomain:prop1=value1,prop2=value2", name.toString()); name = new GBeanName("testDomain:prop2=value2,prop1=value1"); assertEquals("testDomain:prop2=value2,prop1=value1", name.toString()); } public void testMatches() { GBeanName name = new GBeanName("testDomain:prop1=value1,prop2=value2"); assertTrue(name.matches(null, null)); assertTrue(name.matches(null, props)); assertTrue(name.matches("testDomain", null)); assertTrue(name.matches("testDomain", props)); assertFalse(name.matches("test", null)); assertFalse(name.matches("test", props)); props.setProperty("prop1", "value2"); assertFalse(name.matches("testDomain", props)); props.setProperty("prop1", "value1"); assertTrue(name.matches("testDomain", props)); props.setProperty("prop2", "value2"); assertTrue(name.matches("testDomain", props)); props.setProperty("prop3", "value3"); assertFalse(name.matches("testDomain", props)); } public void testStringForms() { GBeanName name = new GBeanName("testDomain:prop2=value2,prop3=value3,prop1=value1"); assertEquals("testDomain:prop1=value1,prop2=value2,prop3=value3", name.toString(new Comparator() { public int compare(Object o1, Object o2) { return ((String)o1).compareTo(o2); } })); assertEquals("testDomain:prop3=value3,prop2=value2,prop1=value1", name.toString(new Comparator() { public int compare(Object o1, Object o2) { return - ((String)o1).compareTo(o2); } })); } public void testInvalidNames() { try { new GBeanName((String) null); fail(); } catch (NullPointerException e) { } try { new GBeanName(""); fail(); } catch (IllegalArgumentException e) { } try { new GBeanName("foo=bar"); fail(); } catch (IllegalArgumentException e) { } try { new GBeanName("x:"); fail(); } catch (IllegalArgumentException e) { } try { new GBeanName("x: "); fail(); } catch (IllegalArgumentException e) { } try { new GBeanName("x:foo"); fail(); } catch (IllegalArgumentException e) { } try { new GBeanName("x:x=x,foo"); fail(); } catch (IllegalArgumentException e) { } try { new GBeanName("x:x=x,").toString(); fail(); } catch (IllegalArgumentException e) { } try { new GBeanName("x:x=x, ").toString(); fail(); } catch (IllegalArgumentException e) { } try { new GBeanName("x:,x=x"); fail(); } catch (IllegalArgumentException e) { } try { new GBeanName("x:x=x,,y=y"); fail(); } catch (IllegalArgumentException e) { } try { new GBeanName("x:x=x,x=x"); fail(); } catch (IllegalArgumentException e) { } } public void testEquals() { GBeanName name = new GBeanName("testDomain:prop1=value1,prop2=value2"); assertEquals(name, name); assertEquals(new GBeanName("testDomain:prop2=value2,prop1=value1"), name); assertFalse(name.equals(new GBeanName("foo:prop1=value1,prop2=value2"))); assertFalse(name.equals(new GBeanName("testDomain:prop1=value1"))); assertFalse(name.equals(new GBeanName("testDomain:prop2=value2"))); assertFalse(name.equals(new GBeanName("testDomain:prop2=value2"))); assertFalse(name.equals(new GBeanName("testDomain:prop1=value1,prop2=value2,prop3=value3"))); Set set = new HashSet(); set.add(name); set.add(name); assertEquals(1, set.size()); } public void testSerialization() throws Exception { GBeanName name = new GBeanName("testDomain:prop1=value1,prop2=value2"); MarshalledObject o = new MarshalledObject(name); GBeanName name2 = (GBeanName) o.get(); assertEquals(name, name2); } protected void setUp() throws Exception { props = new Properties(); } }