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 }