1   package org.springframework.richclient.form;
2   
3   import java.text.Collator;
4   
5   import java.util.Collections;
6   import java.util.Map;
7   
8   import junit.framework.TestCase;
9   
10  import org.springframework.richclient.form.binding.swing.ComboBoxBinder;
11  
12  public class DefaultFormUIProviderTests extends TestCase {
13      private SimplePanel panel;
14      private Map context;
15  
16      public void testGetComponent() {
17          DefaultFormUIProvider formUIProvider = new DefaultFormUIProvider(panel);
18  
19          assertSame(panel, formUIProvider.getControl());
20          assertEquals(panel.getStringField(), formUIProvider.getComponent("stringProperty"));
21          assertEquals(panel.getComboBox(), formUIProvider.getComponent("comboProperty"));
22          assertEquals(panel.getCheckBox(), formUIProvider.getComponent("booleanProperty"));
23          
24          // find nested components
25          assertEquals(panel.getNestedField(), formUIProvider.getComponent("nestedField"));
26      }
27  
28      public void testBind() {
29          DefaultFormUIProvider formUIProvider = new DefaultFormUIProvider(panel);
30  
31          TestableBindingFactory bindingFactory = new TestableBindingFactory();
32  
33          String[] properties = { "stringProperty", "comboProperty", "booleanProperty" };
34          formUIProvider.setProperties(properties);
35  
36          formUIProvider.setContext("comboProperty", context);
37  
38          formUIProvider.bind(bindingFactory, null);
39          assertEquals(3, bindingFactory.getBindControlCount());
40  
41          // string property
42          assertEquals("stringProperty", bindingFactory.getPropertyPaths().get(0));
43          assertEquals(panel.getStringField(), bindingFactory.getControls().get(0));
44          assertEquals(Collections.EMPTY_MAP, bindingFactory.getContexts().get(0));
45  
46          // combo property
47          assertEquals("comboProperty", bindingFactory.getPropertyPaths().get(1));
48          assertEquals(panel.getComboBox(), bindingFactory.getControls().get(1));
49          assertEquals(context, bindingFactory.getContexts().get(1));
50  
51          // boolean property
52          assertEquals("booleanProperty", bindingFactory.getPropertyPaths().get(2));
53          assertEquals(panel.getCheckBox(), bindingFactory.getControls().get(2));
54          assertEquals(Collections.EMPTY_MAP, bindingFactory.getContexts().get(2));
55      }
56  
57      protected void setUp() throws Exception {
58          panel = new SimplePanel();
59  
60          context = Collections.singletonMap(ComboBoxBinder.COMPARATOR_KEY, Collator.getInstance());
61      }
62  
63      public void testSetAndGetContext() {
64          DefaultFormUIProvider formUIProvider = new DefaultFormUIProvider(panel);
65  
66          formUIProvider.setContext("comboProperty", context);
67  
68          assertEquals(context, formUIProvider.getContext("comboProperty"));
69  
70          assertNotNull("if no context provided, must return empty map", formUIProvider.getContext("stringProperty"));
71          assertTrue("if no context provided, must return empty map", 
72                     formUIProvider.getContext("stringProperty").isEmpty());
73      }
74  }