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 }