Package org.objectweb.celtix.bus.configuration.spring

Source Code of org.objectweb.celtix.bus.configuration.spring.BeanNameTest

package org.objectweb.celtix.bus.configuration.spring;

import java.util.ArrayList;
import java.util.List;

import junit.framework.TestCase;

import org.easymock.EasyMock;
import org.objectweb.celtix.configuration.Configuration;

public class BeanNameTest extends TestCase {
   
    public void testNormalisation() {
       
        String n = "*.*abc*efg...hij.klm***nop.*.qrs.?.xyz";
        String nn = "*abc*efg.hij.klm*nop*qrs.?.xyz";
       
        String nbn;
        nbn = new BeanName((String)null, true).getNormalisedName();
        assertEquals(nbn, null, nbn);
        nbn = new BeanName("", true).getNormalisedName();
        assertEquals(nbn, "", nbn);
        nbn = new BeanName("?", true).getNormalisedName();
        assertEquals(nbn, "?", nbn);
        nbn = new BeanName(".", true).getNormalisedName();
        assertEquals(nbn, ".", nbn);
        nbn = new BeanName("*", true).getNormalisedName();
        assertEquals(nbn, "*", nbn);
        nbn = new BeanName("a", true).getNormalisedName();
        assertEquals(nbn, "a", nbn);
        nbn = new BeanName("a.", true).getNormalisedName();
        assertEquals(nbn, "a.", nbn);
        nbn = new BeanName("a.b**", true).getNormalisedName();
        assertEquals(nbn, "a.b*", nbn);
        nbn = new BeanName("{a.b**}", true).getNormalisedName();
        assertEquals(nbn, "{a.b**}", nbn);
        nbn = new BeanName("x.{a.b**}", true).getNormalisedName();
        assertEquals(nbn, "x.{a.b**}", nbn);
        nbn = new BeanName("*{a.b**}", true).getNormalisedName();
        assertEquals(nbn, "*{a.b**}", nbn);
        nbn = new BeanName("*{a.b**}x.y", true).getNormalisedName();
        assertEquals(nbn, "*{a.b**}x.y", nbn);
        nbn = new BeanName(n, true).getNormalisedName();
        assertEquals(nbn, nn, nbn);

        BeanName bn = new BeanName(n, false);
        assertNull(bn.getNormalisedName());
        assertEquals(n, bn.getName());
        bn.normalise();
        assertEquals(nn, bn.getNormalisedName());
        assertEquals(n, bn.getName());
       
        bn = new BeanName(n, true);
        assertEquals(n, bn.getName());
        assertEquals(nn, bn.getNormalisedName());
        bn.normalise();
        assertEquals(n, bn.getName());
        assertEquals(nn, bn.getNormalisedName());
    }
   
    public void testConstruction() {        
        Configuration bottom = EasyMock.createMock(Configuration.class);
        Configuration middle = EasyMock.createMock(Configuration.class);
        Configuration top = EasyMock.createMock(Configuration.class);
       
        bottom.getId();
        EasyMock.expectLastCall().andReturn("a");
        bottom.getParent();
        EasyMock.expectLastCall().andReturn(middle);
        middle.getId();
        EasyMock.expectLastCall().andReturn("b");
        middle.getParent();
        EasyMock.expectLastCall().andReturn(top);
        top.getId();
        EasyMock.expectLastCall().andReturn("c");
        top.getParent();
        EasyMock.expectLastCall().andReturn(null);
      
        EasyMock.replay(top);
        EasyMock.replay(middle);
        EasyMock.replay(bottom);
       
        BeanName bn = new BeanName(bottom);
        assertEquals(bn.getName(), "c.b.a", bn.getName());
       
        EasyMock.verify(bottom);
        EasyMock.verify(middle);
        EasyMock.verify(top);
    }
   
    public void testIterator() {
        BeanName bn = new BeanName("", true);
        BeanName.ComponentIterator it = bn.getIterator();
        assertTrue(!it.hasNext());
       
        String n = "simple";
        bn = new BeanName(n, true);
        it = bn.getIterator();       
        assertEquals(0, it.lastBinding());
        assertTrue(it.hasNext());
        assertEquals(n, it.next());
        assertEquals(0, it.lastBinding());
        assertTrue(!it.hasNext());
       
        n = "{http://www.objectweb.org/handlers}AddNumbersService";
        bn = new BeanName(n, true);
        it = bn.getIterator();       
        assertEquals(0, it.lastBinding());
        assertTrue(it.hasNext());
        assertEquals(n, it.next());
        assertEquals(0, it.lastBinding());
        assertTrue(!it.hasNext());
       
        bn = new BeanName("one.two.three", true);
        it = bn.getIterator();
        assertEquals(0, it.lastBinding());
        assertTrue(it.hasNext());
        it.next();
        assertEquals(0, it.lastBinding());
        assertTrue(it.hasNext());
        it.next();
        assertEquals(BeanName.TIGHT_BINDING, it.lastBinding());
        assertTrue(it.hasNext());
        it.next();
        assertEquals(BeanName.TIGHT_BINDING, it.lastBinding());
        assertTrue(!it.hasNext());
       
        bn = new BeanName("one.{a.b.c}two.three", true);
        it = bn.getIterator();
        assertEquals(0, it.lastBinding());
        assertTrue(it.hasNext());
        it.next();
        assertEquals(0, it.lastBinding());
        assertTrue(it.hasNext());
        assertEquals("{a.b.c}two", it.next());
        assertEquals(BeanName.TIGHT_BINDING, it.lastBinding());
        assertTrue(it.hasNext());
        it.next();
        assertEquals(BeanName.TIGHT_BINDING, it.lastBinding());
        assertTrue(!it.hasNext());
    }
   
    public void testMatch() {
       
        BeanName[] matchingBeanNames = {
            new BeanName("one.two.three", true),
            new BeanName(".one.two.three", true),
            new BeanName("one.two.three.", true),
            new BeanName("one.?.three", true),
            new BeanName("?.?.three", true),
            new BeanName("*two.three", true),
            new BeanName("*three", true),
            new BeanName("one*three", true),                         
        };
       
        BeanName[] nonMatchingBeanNames = {
            new BeanName("simple", true),
        };
       
        BeanName[] emptyBeanNames = {
            new BeanName((String)null, true),
            new BeanName("", true),
        };
       
        BeanName ref = new BeanName("one.two.three", true);
       
        List<BeanName> candidates = new ArrayList<BeanName>();
       
        assertNull(ref.findBestMatch(candidates));

        for (BeanName bn : emptyBeanNames) {
            candidates.add(bn);
            assertNull(ref.findBestMatch(candidates));
       
        candidates.clear();
       
        for (BeanName bn : matchingBeanNames) {
            candidates.add(bn);
            assertTrue("no match with " + bn.getNormalisedName(),
                       bn == ref.findBestMatch(candidates));
            candidates.clear();
        }
       
        for (BeanName bn : nonMatchingBeanNames) {
            candidates.add(bn);
            assertNull("match with " + bn.getNormalisedName(),
                       ref.findBestMatch(candidates));
            candidates.clear();
        }
       
        for (BeanName bn : matchingBeanNames) {
            candidates.add(bn);           
        }
        assertTrue(matchingBeanNames[0] == ref.findBestMatch(candidates));
       
        for (BeanName bn : nonMatchingBeanNames) {
            candidates.add(0, bn);
        }
        assertTrue(matchingBeanNames[0] == ref.findBestMatch(candidates));
        candidates.clear();
       
    }
   
    public void testBestMatch() {
          
        BeanName ref = new BeanName("a.b");
       
        BeanName[] beanNames = {
            new BeanName("?.b"),
            new BeanName("*b"),
        };
       

        BeanName bestMatch;
        List<BeanName> candidates = new ArrayList<BeanName>();
       
        candidates.add(beanNames[0]);
        candidates.add(beanNames[1]);
        bestMatch = ref.findBestMatch(candidates);
        assertTrue(bestMatch.getName(), beanNames[0] == bestMatch);
        candidates.clear();
       
        candidates.add(beanNames[1]);
        candidates.add(beanNames[0]);
        bestMatch = ref.findBestMatch(candidates);
        assertTrue(bestMatch.getName(), beanNames[0] == bestMatch);
        candidates.clear();
       
        ref = new BeanName("a.b.c");
       
        beanNames = new BeanName[] {
            new BeanName("*c"),
            new BeanName("?.?.c"),
            new BeanName("a*c"),
            new BeanName("a.?.c")     
        };
       
        for (int i = 0; i < beanNames.length; i++) {
            for (int j = i + 1; j < beanNames.length; j++) {
                candidates.add(beanNames[i]);
                candidates.add(beanNames[j]);
                bestMatch = ref.findBestMatch(candidates);
                assertTrue("i = " + i + ", j = " + j, beanNames[j] == bestMatch);
                candidates.clear();
                candidates.add(beanNames[j]);
                candidates.add(beanNames[i]);
                bestMatch = ref.findBestMatch(candidates);
                assertTrue("i = " + i + ", j = " + j,  beanNames[j] == bestMatch);
                candidates.clear();       
            }
        }
       
        for (int i = 0; i < beanNames.length; i++) {
            candidates.add(beanNames[i]);
        }
        bestMatch = ref.findBestMatch(candidates);
        assertTrue(bestMatch.getName(), beanNames[beanNames.length - 1] == bestMatch);
        candidates.clear();
       
        for (int i = beanNames.length - 1; i >= 0; i--) {
            candidates.add(beanNames[i]);
        }
        bestMatch = ref.findBestMatch(candidates);
        assertTrue(bestMatch.getName(), beanNames[beanNames.length - 1] == bestMatch);
        candidates.clear();
    }
   
    public void testBestMatchWithEscapedBindingChars() {
        String busId = "celtix";
        String serviceName = "{http://www.objectweb.org/handlers}AddNumbersService";
        String portName = "addNumbersPort";
       
        BeanName ref = new BeanName(busId + "." + serviceName + "." + portName);
       
        BeanName[] beanNames = {
            new BeanName("*" + portName),
            new BeanName("?.?." + portName),
            new BeanName("?." + serviceName + "." + portName),
            new BeanName(busId + "*" + portName),
            new BeanName(busId + ".?." + portName),
        };
       
        List<BeanName> candidates = new ArrayList<BeanName>();
        for (BeanName bn : beanNames) {
            candidates.add(bn);
        }
        BeanName bestMatch = ref.findBestMatch(candidates);
        assertTrue(bestMatch.getName(), beanNames[beanNames.length - 1] == bestMatch);       
    }
   
    public void testBug304382() {

        BeanName ref = new BeanName("a.b.c");
        BeanName[] beanNames = {
            new BeanName("a.b"),
        };
       
        List<BeanName> candidates = new ArrayList<BeanName>();
        for (BeanName bn : beanNames) {
            candidates.add(bn);
        }
        BeanName bestMatch = ref.findBestMatch(candidates);
        assertNull(bestMatch);
    }
   
    public void testLastComponentAny() {
        BeanName ref = new BeanName("a.b.c");
        BeanName[] beanNames = {
            new BeanName("a.b.?"),
            new BeanName("a.b.?"),
            new BeanName("a.?.?"),
            new BeanName("?.?.?")
           
        };
       
        List<BeanName> candidates = new ArrayList<BeanName>();
       
        for (BeanName bn : beanNames) {
            candidates.add(bn);
            BeanName match = ref.findBestMatch(candidates);
            assertTrue(match == bn);
            candidates.clear();
        }
       
        for (BeanName bn : beanNames) {
            candidates.add(bn);
        }
        BeanName match = ref.findBestMatch(candidates);
        assertTrue(beanNames[0] == match);       
    }
}
TOP

Related Classes of org.objectweb.celtix.bus.configuration.spring.BeanNameTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.