001 /*
002 * Copyright 2002-2004 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.command;
017
018 import java.awt.event.ActionEvent;
019 import java.beans.PropertyChangeListener;
020
021 import javax.swing.Action;
022
023 import junit.framework.Assert;
024 import junit.framework.TestCase;
025
026
027 /**
028 * Provides a suite of unit tests for the {@link SwingActionAdapter} class.
029 *
030 * @author Kevin Stembridge
031 * @since 0.3
032 *
033 */
034 public class SwingActionAdapterTests extends TestCase {
035
036 /**
037 * Test method for {@link SwingActionAdapter#SwingActionAdapter(ActionCommand)}.
038 */
039 public final void testConstructor() {
040
041 try {
042 new SwingActionAdapter(null);
043 Assert.fail("Should have thrown an IllegalArgumentException");
044 } catch (IllegalArgumentException e) {
045 //do nothing, test succeeded
046 }
047
048 //can't use EasyMock here because ActionCommand is not an interface
049 MockActionCommand command = new MockActionCommand();
050 command.setActionCommand("bogusActionCommand");
051 command.setCaption("bogusCaption");
052
053 SwingActionAdapter adapter = new SwingActionAdapter(command);
054
055 Assert.assertEquals("bogusActionCommand", adapter.getValue(Action.ACTION_COMMAND_KEY));
056 Assert.assertEquals("bogusCaption", adapter.getValue(Action.SHORT_DESCRIPTION));
057
058 command.setCaption("newCaption");
059
060 adapter.update();
061
062 Assert.assertEquals("newCaption", adapter.getValue(Action.SHORT_DESCRIPTION));
063
064 }
065
066 /**
067 * Test method for {@link SwingActionAdapter#actionPerformed(java.awt.event.ActionEvent)}.
068 */
069 public final void testActionPerformed() {
070
071 MockActionCommand command = new MockActionCommand();
072 SwingActionAdapter adapter = new SwingActionAdapter(command);
073 adapter.actionPerformed(new ActionEvent(command, 1, "bogus"));
074
075 Assert.assertEquals(1, command.getActionPerformedCount());
076
077 }
078
079 private class MockActionCommand extends ActionCommand {
080
081 private int actionPerformedCount;
082 private PropertyChangeListener enabledListener;
083 private PropertyChangeListener propertyChangeListener;
084
085 /**
086 * {@inheritDoc}
087 */
088 protected void doExecuteCommand() {
089 this.actionPerformedCount++;
090 }
091
092 /**
093 * {@inheritDoc}
094 */
095 public void addEnabledListener(PropertyChangeListener listener) {
096 this.enabledListener = listener;
097 }
098
099 /**
100 * Returns the number of times the actionPerformed method has been called.
101 * @return actionPerformedCount
102 */
103 public int getActionPerformedCount() {
104 return this.actionPerformedCount;
105 }
106
107 }
108
109 }