001    /*
002     * Copyright 2002-2007 the original author or authors.
003     * 
004     * Licensed under the Apache License, Version 2.0 (the "License"); you may not
005     * use this file except in compliance with the License. You may obtain a copy of
006     * the License at
007     * 
008     * http://www.apache.org/licenses/LICENSE-2.0
009     * 
010     * Unless required by applicable law or agreed to in writing, software
011     * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
012     * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
013     * License for the specific language governing permissions and limitations under
014     * the License.
015     */
016    package org.springframework.richclient.core;
017    
018    import java.awt.event.KeyEvent;
019    import java.beans.PropertyChangeEvent;
020    import java.beans.PropertyChangeListener;
021    
022    import javax.swing.KeyStroke;
023    
024    import junit.framework.TestCase;
025    
026    import org.easymock.EasyMock;
027    import org.springframework.richclient.command.config.CommandButtonLabelInfo;
028    
029    /**
030     * Testcase for LabeledObjectSupport
031     * 
032     * @author Peter De Bruycker
033     */
034    public class LabeledObjectSupportTests extends TestCase {
035    
036            public void testSetTitle() {
037                    LabeledObjectSupport support = new LabeledObjectSupport();
038    
039                    PropertyChangeListener mockPropertyChangeListener = (PropertyChangeListener) EasyMock
040                                    .createMock(PropertyChangeListener.class);
041    
042                    mockPropertyChangeListener.propertyChange(eqPropertyChangeEvent(new PropertyChangeEvent(support,
043                                    LabeledObjectSupport.DISPLAY_NAME_PROPERTY, null, "new title")));
044                    support.addPropertyChangeListener(LabeledObjectSupport.DISPLAY_NAME_PROPERTY, mockPropertyChangeListener);
045    
046                    EasyMock.replay(mockPropertyChangeListener);
047    
048                    support.setTitle("new title");
049    
050                    EasyMock.verify(mockPropertyChangeListener);
051            }
052    
053            public void testGetDisplayName() {
054                    LabeledObjectSupport support = new LabeledObjectSupport();
055                    assertEquals("displayName", support.getDisplayName());
056    
057                    support.setTitle("title");
058                    assertEquals("title", support.getDisplayName());
059    
060                    support.setLabelInfo(new CommandButtonLabelInfo("label info"));
061                    assertEquals("title", support.getDisplayName());
062    
063                    support.setTitle(null);
064                    assertEquals("label info", support.getDisplayName());
065            }
066    
067            public void testSetLabelInfo() {
068                    LabeledObjectSupport support = new LabeledObjectSupport();
069    
070                    CommandButtonLabelInfo labelInfo = CommandButtonLabelInfo.valueOf("&Save@control S");
071    
072                    PropertyChangeListener mockPropertyChangeListener = (PropertyChangeListener) EasyMock
073                                    .createMock(PropertyChangeListener.class);
074    
075                    mockPropertyChangeListener.propertyChange(eqPropertyChangeEvent(new PropertyChangeEvent(support,
076                                    LabeledObjectSupport.DISPLAY_NAME_PROPERTY, null, "Save")));
077                    mockPropertyChangeListener.propertyChange(eqPropertyChangeEvent(new PropertyChangeEvent(support,
078                                    "mnemonic", Integer.valueOf(0), Integer.valueOf('S'))));
079                    mockPropertyChangeListener.propertyChange(eqPropertyChangeEvent(new PropertyChangeEvent(support,
080                                    "accelerator", null, KeyStroke.getKeyStroke(KeyEvent.VK_S, KeyEvent.CTRL_DOWN_MASK))));
081                    support.addPropertyChangeListener(mockPropertyChangeListener);
082    
083                    EasyMock.replay(mockPropertyChangeListener);
084                    
085                    support.setLabelInfo(labelInfo);
086                    
087                    EasyMock.verify(mockPropertyChangeListener);
088            }
089    
090            public static PropertyChangeEvent eqPropertyChangeEvent(PropertyChangeEvent expected) {
091                    EasyMock.reportMatcher(new PropertyChangeEventArgumentMatcher(expected));
092    
093                    return null;
094            }
095    }