001    package org.springframework.richclient.application.support;
002    
003    import java.util.HashMap;
004    
005    import org.springframework.binding.value.ValueChangeDetector;
006    import org.springframework.binding.value.support.DefaultValueChangeDetector;
007    import org.springframework.context.MessageSource;
008    import org.springframework.context.support.StaticMessageSource;
009    import org.springframework.richclient.application.ServiceNotFoundException;
010    import org.springframework.richclient.image.IconSource;
011    import org.springframework.richclient.test.SpringRichTestCase;
012    import org.springframework.rules.RulesSource;
013    
014    /**
015     * Test cases for {@link DefaultApplicationServices}
016     * 
017     * @author Larry Streepy
018     * 
019     */
020    public class DefaultApplicationServicesTests extends SpringRichTestCase {
021    
022        public void testRegisteredServiceIsReturned() {
023            ValueChangeDetector vcd = new DefaultValueChangeDetector();
024            getApplicationServices().setValueChangeDetector(vcd);
025            assertSame("Expected same object back", vcd, getApplicationServices().getService(ValueChangeDetector.class));
026    
027            MessageSource msrc = new StaticMessageSource();
028            getApplicationServices().setMessageSource(msrc);
029            assertSame("Expected same object back", msrc, getApplicationServices().getService(MessageSource.class));
030        }
031    
032        public void testUnknownServiceFails() {
033            try {
034                getApplicationServices().getService(getClass());
035                fail("Unknown service should have caused an exception");
036            } catch( ServiceNotFoundException e ) {
037                ; // expected
038            }
039        }
040    
041        public void testSetRegistryEntries() {
042            ValueChangeDetector vcd = new DefaultValueChangeDetector();
043            MessageSource msrc = new StaticMessageSource();
044    
045            HashMap entries = new HashMap();
046            entries.put("org.springframework.binding.value.ValueChangeDetector", vcd);
047            entries.put("org.springframework.context.MessageSource", msrc);
048    
049            getApplicationServices().setRegistryEntries(entries);
050    
051            assertSame("Expected same object back", vcd, getApplicationServices().getService(ValueChangeDetector.class));
052            assertSame("Expected same object back", msrc, getApplicationServices().getService(MessageSource.class));
053        }
054    
055        public void testDefaultServicesImplementInterface() {
056            Object rulesSource = getApplicationServices().getService(RulesSource.class);
057            assertTrue("Returned service must implement service type", rulesSource instanceof RulesSource);
058    
059            Object iconSource = getApplicationServices().getService(IconSource.class);
060            assertTrue("Returned service must implement service type", iconSource instanceof IconSource);
061        }
062    }