1   /*
2    * Copyright 2002-2007 the original author or authors.
3    * 
4    * Licensed under the Apache License, Version 2.0 (the "License"); you may not
5    * use this file except in compliance with the License. You may obtain a copy of
6    * the License at
7    * 
8    * http://www.apache.org/licenses/LICENSE-2.0
9    * 
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12   * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13   * License for the specific language governing permissions and limitations under
14   * the License.
15   */
16  package org.springframework.richclient.core;
17  
18  import java.awt.event.KeyEvent;
19  import java.beans.PropertyChangeEvent;
20  import java.beans.PropertyChangeListener;
21  
22  import javax.swing.KeyStroke;
23  
24  import junit.framework.TestCase;
25  
26  import org.easymock.EasyMock;
27  import org.springframework.richclient.command.config.CommandButtonLabelInfo;
28  
29  /**
30   * Testcase for LabeledObjectSupport
31   * 
32   * @author Peter De Bruycker
33   */
34  public class LabeledObjectSupportTests extends TestCase {
35  
36  	public void testSetTitle() {
37  		LabeledObjectSupport support = new LabeledObjectSupport();
38  
39  		PropertyChangeListener mockPropertyChangeListener = (PropertyChangeListener) EasyMock
40  				.createMock(PropertyChangeListener.class);
41  
42  		mockPropertyChangeListener.propertyChange(eqPropertyChangeEvent(new PropertyChangeEvent(support,
43  				LabeledObjectSupport.DISPLAY_NAME_PROPERTY, null, "new title")));
44  		support.addPropertyChangeListener(LabeledObjectSupport.DISPLAY_NAME_PROPERTY, mockPropertyChangeListener);
45  
46  		EasyMock.replay(mockPropertyChangeListener);
47  
48  		support.setTitle("new title");
49  
50  		EasyMock.verify(mockPropertyChangeListener);
51  	}
52  
53  	public void testGetDisplayName() {
54  		LabeledObjectSupport support = new LabeledObjectSupport();
55  		assertEquals("displayName", support.getDisplayName());
56  
57  		support.setTitle("title");
58  		assertEquals("title", support.getDisplayName());
59  
60  		support.setLabelInfo(new CommandButtonLabelInfo("label info"));
61  		assertEquals("title", support.getDisplayName());
62  
63  		support.setTitle(null);
64  		assertEquals("label info", support.getDisplayName());
65  	}
66  
67  	public void testSetLabelInfo() {
68  		LabeledObjectSupport support = new LabeledObjectSupport();
69  
70  		CommandButtonLabelInfo labelInfo = CommandButtonLabelInfo.valueOf("&Save@control S");
71  
72  		PropertyChangeListener mockPropertyChangeListener = (PropertyChangeListener) EasyMock
73  				.createMock(PropertyChangeListener.class);
74  
75  		mockPropertyChangeListener.propertyChange(eqPropertyChangeEvent(new PropertyChangeEvent(support,
76  				LabeledObjectSupport.DISPLAY_NAME_PROPERTY, null, "Save")));
77  		mockPropertyChangeListener.propertyChange(eqPropertyChangeEvent(new PropertyChangeEvent(support,
78  				"mnemonic", Integer.valueOf(0), Integer.valueOf('S'))));
79  		mockPropertyChangeListener.propertyChange(eqPropertyChangeEvent(new PropertyChangeEvent(support,
80  				"accelerator", null, KeyStroke.getKeyStroke(KeyEvent.VK_S, KeyEvent.CTRL_DOWN_MASK))));
81  		support.addPropertyChangeListener(mockPropertyChangeListener);
82  
83  		EasyMock.replay(mockPropertyChangeListener);
84  		
85  		support.setLabelInfo(labelInfo);
86  		
87  		EasyMock.verify(mockPropertyChangeListener);
88  	}
89  
90  	public static PropertyChangeEvent eqPropertyChangeEvent(PropertyChangeEvent expected) {
91  		EasyMock.reportMatcher(new PropertyChangeEventArgumentMatcher(expected));
92  
93  		return null;
94  	}
95  }