001 package org.springframework.richclient.form;
002
003 import java.text.Collator;
004
005 import java.util.Collections;
006 import java.util.Map;
007
008 import junit.framework.TestCase;
009
010 import org.springframework.richclient.form.binding.swing.ComboBoxBinder;
011
012 public class DefaultFormUIProviderTests extends TestCase {
013 private SimplePanel panel;
014 private Map context;
015
016 public void testGetComponent() {
017 DefaultFormUIProvider formUIProvider = new DefaultFormUIProvider(panel);
018
019 assertSame(panel, formUIProvider.getControl());
020 assertEquals(panel.getStringField(), formUIProvider.getComponent("stringProperty"));
021 assertEquals(panel.getComboBox(), formUIProvider.getComponent("comboProperty"));
022 assertEquals(panel.getCheckBox(), formUIProvider.getComponent("booleanProperty"));
023
024 // find nested components
025 assertEquals(panel.getNestedField(), formUIProvider.getComponent("nestedField"));
026 }
027
028 public void testBind() {
029 DefaultFormUIProvider formUIProvider = new DefaultFormUIProvider(panel);
030
031 TestableBindingFactory bindingFactory = new TestableBindingFactory();
032
033 String[] properties = { "stringProperty", "comboProperty", "booleanProperty" };
034 formUIProvider.setProperties(properties);
035
036 formUIProvider.setContext("comboProperty", context);
037
038 formUIProvider.bind(bindingFactory, null);
039 assertEquals(3, bindingFactory.getBindControlCount());
040
041 // string property
042 assertEquals("stringProperty", bindingFactory.getPropertyPaths().get(0));
043 assertEquals(panel.getStringField(), bindingFactory.getControls().get(0));
044 assertEquals(Collections.EMPTY_MAP, bindingFactory.getContexts().get(0));
045
046 // combo property
047 assertEquals("comboProperty", bindingFactory.getPropertyPaths().get(1));
048 assertEquals(panel.getComboBox(), bindingFactory.getControls().get(1));
049 assertEquals(context, bindingFactory.getContexts().get(1));
050
051 // boolean property
052 assertEquals("booleanProperty", bindingFactory.getPropertyPaths().get(2));
053 assertEquals(panel.getCheckBox(), bindingFactory.getControls().get(2));
054 assertEquals(Collections.EMPTY_MAP, bindingFactory.getContexts().get(2));
055 }
056
057 protected void setUp() throws Exception {
058 panel = new SimplePanel();
059
060 context = Collections.singletonMap(ComboBoxBinder.COMPARATOR_KEY, Collator.getInstance());
061 }
062
063 public void testSetAndGetContext() {
064 DefaultFormUIProvider formUIProvider = new DefaultFormUIProvider(panel);
065
066 formUIProvider.setContext("comboProperty", context);
067
068 assertEquals(context, formUIProvider.getContext("comboProperty"));
069
070 assertNotNull("if no context provided, must return empty map", formUIProvider.getContext("stringProperty"));
071 assertTrue("if no context provided, must return empty map",
072 formUIProvider.getContext("stringProperty").isEmpty());
073 }
074 }