mirror of
https://github.com/nasa/trick.git
synced 2025-01-29 23:54:10 +00:00
Set up tests for JButtons
This commit is contained in:
parent
d4c20cd6a6
commit
675807fd36
@ -107,6 +107,10 @@ public class SimControlApplication extends TrickApplication implements PropertyC
|
||||
//========================================
|
||||
// Protected data
|
||||
//========================================
|
||||
protected static String host;
|
||||
protected static int port = -1;
|
||||
protected static boolean isRestartOptionOn;
|
||||
protected static boolean isAutoExitOn; /** whether automatically exit when sim is done/killed. */
|
||||
|
||||
|
||||
//========================================
|
||||
@ -118,9 +122,6 @@ public class SimControlApplication extends TrickApplication implements PropertyC
|
||||
private int overrun_present ;
|
||||
private int message_present ;
|
||||
private int message_port ;
|
||||
|
||||
/** whether automatically exit when sim is done/killed. */
|
||||
private static boolean isAutoExitOn;
|
||||
|
||||
// The panel that displays the current sim state description as well as progress.
|
||||
private JXTitledPanel runtimeStatePanel;
|
||||
@ -170,9 +171,6 @@ public class SimControlApplication extends TrickApplication implements PropertyC
|
||||
private SocketChannel healthStatusSocketChannel ;
|
||||
|
||||
private JComboBox runningSimList;
|
||||
private static String host;
|
||||
private static int port = -1;
|
||||
private static boolean isRestartOptionOn;
|
||||
//True if an error was encountered during the attempt to connect to Variable Server during intialize()
|
||||
private boolean errOnInitConnect = false;
|
||||
//Time out when attempting to establish connection with Variable Server in milliseconds
|
||||
@ -364,7 +362,7 @@ public class SimControlApplication extends TrickApplication implements PropertyC
|
||||
* Sets all actions as either enabled or disabled
|
||||
* @param isEnabled the state to set each action as
|
||||
*/
|
||||
private void setEnabledAllActions(boolean isEnabled) {
|
||||
protected void setEnabledAllActions(boolean isEnabled) {
|
||||
if(actionMap == null)
|
||||
return;
|
||||
|
||||
|
@ -5,17 +5,30 @@ import org.jdesktop.application.Application;
|
||||
|
||||
import trick.simcontrol.utils.SimControlActionController;
|
||||
|
||||
import static trick.simcontrol.SimControlApplication.host;
|
||||
import static trick.simcontrol.SimControlApplication.isAutoExitOn;
|
||||
import static trick.simcontrol.SimControlApplication.isRestartOptionOn;
|
||||
import static trick.simcontrol.SimControlApplication.port;
|
||||
|
||||
import java.awt.*;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.io.File;
|
||||
import java.util.Arrays;
|
||||
import java.util.Scanner;
|
||||
import java.util.Stack;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import javax.swing.Action;
|
||||
import javax.swing.text.BadLocationException;
|
||||
import javax.swing.text.Document;
|
||||
import javax.swing.AbstractAction;
|
||||
|
||||
|
||||
public class StubbedSimControlApplication extends SimControlApplication {
|
||||
|
||||
public Stack<ActionID> actions;
|
||||
public static Stack<ActionID> ActionRecord;
|
||||
private static StubbedSimControlApplication the_stub = null;
|
||||
|
||||
public StubbedSimControlApplication() {
|
||||
this("", -1);
|
||||
@ -24,14 +37,9 @@ public class StubbedSimControlApplication extends SimControlApplication {
|
||||
public StubbedSimControlApplication(String hostname, int portNum) {
|
||||
super.setHostPort(hostname, portNum);
|
||||
actionController = new SimControlActionController();
|
||||
actions = new Stack<ActionID>();
|
||||
}
|
||||
ActionRecord = new Stack<ActionID>();
|
||||
|
||||
@Override
|
||||
protected Action getAction(String key) {
|
||||
return new AbstractAction() {
|
||||
public void actionPerformed(ActionEvent UNUSED) {}
|
||||
};
|
||||
the_stub = this;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -41,9 +49,166 @@ public class StubbedSimControlApplication extends SimControlApplication {
|
||||
protected void startStatusMonitors() { /* UNUSED */}
|
||||
|
||||
@Override
|
||||
public void connect() {
|
||||
actions.push(ActionID.CONNECT);
|
||||
protected void ready() {
|
||||
super.ready();
|
||||
setEnabledAllActions(true); // enable all actions
|
||||
}
|
||||
|
||||
@Override
|
||||
public void startSim() {
|
||||
ActionRecord.push(ActionID.START);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void freezeSim() {
|
||||
ActionRecord.push(ActionID.FREEZE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void connect() {
|
||||
ActionRecord.push(ActionID.CONNECT);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void showStatusFont() {
|
||||
ActionRecord.push(ActionID.SET_FONT);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void saveStatusMsgs() {
|
||||
ActionRecord.push(ActionID.SAVE_STATUS);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void clearStatusMsgs() {
|
||||
ActionRecord.push(ActionID.CLEAR_STATUS);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void startTV() {
|
||||
ActionRecord.push(ActionID.TV);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void startMTV() {
|
||||
ActionRecord.push(ActionID.MTV);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void freezeAt() {
|
||||
ActionRecord.push(ActionID.FREEZE_AT);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void freezeIn() {
|
||||
ActionRecord.push(ActionID.FREEZE_IN);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void checkpointObjects() {
|
||||
ActionRecord.push(ActionID.PART_CHKPNT);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void throttle() {
|
||||
ActionRecord.push(ActionID.THROTTLE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void stepSim() {
|
||||
ActionRecord.push(ActionID.STEP);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void recordingSim() {
|
||||
ActionRecord.push(ActionID.RECORDING);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void realtime() {
|
||||
ActionRecord.push(ActionID.REALTIME);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void shutdownSim() {
|
||||
ActionRecord.push(ActionID.SHUTDOWN);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void dumpChkpntASCII() {
|
||||
ActionRecord.push(ActionID.DUMP_CHKPNT);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void loadChkpnt() {
|
||||
ActionRecord.push(ActionID.LOAD_CHKPNT);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void lite() {
|
||||
ActionRecord.push(ActionID.LITE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void quit(ActionEvent e) {
|
||||
ActionRecord.push(ActionID.EXIT);
|
||||
// super.quit(e);
|
||||
}
|
||||
|
||||
public static StubbedSimControlApplication getInstance() {
|
||||
return the_stub;
|
||||
}
|
||||
|
||||
/**
|
||||
* Main method for this application.
|
||||
* @param args command line arguments
|
||||
*/
|
||||
public static void main(String[] args) {
|
||||
Application.launch(StubbedSimControlApplication.class, args);
|
||||
|
||||
// Arrays.toString(args) converts such as localhost 7000 -r to [localhost, 7000, -r],
|
||||
// so need to remove [, ] and all white spaces.
|
||||
String commandLine = (Arrays.toString(args)).replace("[","").replace("]", "").replaceAll("\\s+", "");
|
||||
|
||||
// check to see if -r or -restart is used
|
||||
Pattern restartOptionPattern = Pattern.compile("(\\-r|\\-restart)(,|$)");
|
||||
Matcher matcher = restartOptionPattern.matcher(commandLine);
|
||||
|
||||
// if -r | -restart is used, set the flag and then remove it from the command line
|
||||
if (matcher.find()) {
|
||||
isRestartOptionOn = true;
|
||||
commandLine = matcher.replaceAll("");
|
||||
}
|
||||
|
||||
// check to see if -auto_exit is used
|
||||
Pattern autoExitOptionPattern = Pattern.compile("(\\-auto\\_exit)(,|$)");
|
||||
Matcher autoExitMatcher = autoExitOptionPattern.matcher(commandLine);
|
||||
|
||||
if (autoExitMatcher.find()) {
|
||||
isAutoExitOn = true;
|
||||
commandLine = autoExitMatcher.replaceAll("");
|
||||
}
|
||||
|
||||
Scanner commandScanner = new Scanner(commandLine).useDelimiter(",");
|
||||
// now need to figure out host and port, if not specified, available host&port will be listed
|
||||
if (commandScanner.hasNextInt()) {
|
||||
port = commandScanner.nextInt();
|
||||
if (commandScanner.hasNext()) {
|
||||
host = commandScanner.next();
|
||||
}
|
||||
} else {
|
||||
if (commandScanner.hasNext()) {
|
||||
host = commandScanner.next();
|
||||
if (commandScanner.hasNextInt()) {
|
||||
port = commandScanner.nextInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (commandScanner != null) {
|
||||
commandScanner.close();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
enum ActionID {
|
||||
@ -65,5 +230,6 @@ enum ActionID {
|
||||
TV,
|
||||
SAVE_STATUS,
|
||||
CLEAR_STATUS,
|
||||
SET_FONT
|
||||
SET_FONT,
|
||||
EXIT
|
||||
}
|
@ -0,0 +1,152 @@
|
||||
package trick.simcontrol;
|
||||
|
||||
import trick.simcontrol.SimControlApplication;
|
||||
import trick.simcontrol.StubbedSimControlApplication;
|
||||
|
||||
import java.awt.Frame;
|
||||
|
||||
import javax.swing.JButton;
|
||||
|
||||
import org.assertj.swing.core.GenericTypeMatcher;
|
||||
import org.assertj.swing.exception.ComponentLookupException;
|
||||
import org.assertj.swing.fixture.ComponentContainerFixture;
|
||||
import org.assertj.swing.fixture.MouseInputSimulationFixture;
|
||||
import org.assertj.swing.fixture.JButtonFixture;
|
||||
import org.assertj.swing.fixture.FrameFixture;
|
||||
import org.assertj.swing.junit.testcase.AssertJSwingJUnitTestCase;
|
||||
|
||||
import org.junit.BeforeClass;
|
||||
import org.junit.Test;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.assertj.core.api.Assumptions.assumeThat;
|
||||
import static org.assertj.swing.finder.WindowFinder.findFrame;
|
||||
import static org.assertj.swing.launcher.ApplicationLauncher.application;
|
||||
|
||||
public class StubbedSimControlTests extends AssertJSwingJUnitTestCase {
|
||||
private FrameFixture mainFrame;
|
||||
private StubbedSimControlApplication app = null;
|
||||
|
||||
@BeforeClass
|
||||
public static void onSetUpBeforeClass() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onSetUp() {
|
||||
application(StubbedSimControlApplication.class).start();
|
||||
app = StubbedSimControlApplication.getInstance();
|
||||
mainFrame = getFrameByTitle("Sim Control");
|
||||
|
||||
}
|
||||
|
||||
//--------------------
|
||||
// JButton Tests
|
||||
//--------------------
|
||||
|
||||
@Test
|
||||
public void testConnectButton() {
|
||||
testJButton("Connect", ActionID.CONNECT);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testStartButton() {
|
||||
testJButton("Start", ActionID.START);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testFreezeButton() {
|
||||
testJButton("Freeze", ActionID.FREEZE);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testStepButton() {
|
||||
testJButton("Step", ActionID.STEP);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testShutdownButton() {
|
||||
testJButton("Shutdown", ActionID.SHUTDOWN);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testExitButton() {
|
||||
testJButton("Exit", ActionID.EXIT);
|
||||
}
|
||||
|
||||
//--------------------
|
||||
// JToggleButton Tests
|
||||
//--------------------
|
||||
|
||||
// @Test
|
||||
// public void testLiteButton() {
|
||||
// testJButton("Lite", ActionID.LITE);
|
||||
// }
|
||||
|
||||
// @Test
|
||||
// public void testDumpChkpntButton() {
|
||||
// testJButton("Dump Chkpnt", ActionID.DUMP_CHKPNT);
|
||||
// }
|
||||
|
||||
// @Test
|
||||
// public void testLoadChkpntButton() {
|
||||
// testJButton("Load Chkpnt", ActionID.LOAD_CHKPNT);
|
||||
// }
|
||||
|
||||
private void testJButton(String text, ActionID action) {
|
||||
JButtonFixture button = getButtonByText(text);
|
||||
assumeThat(button).withFailMessage("Button with text\"%s\" not found\n", text)
|
||||
.isNotNull();
|
||||
|
||||
testConnectedAction(button, action);
|
||||
}
|
||||
|
||||
private void testConnectedAction(MouseInputSimulationFixture clickable, ActionID expected) {
|
||||
// ARRANGE
|
||||
ActionID actual;
|
||||
int initialLogSize, logSize;
|
||||
|
||||
// ACT
|
||||
initialLogSize = StubbedSimControlApplication.ActionRecord.size();
|
||||
clickable.click();
|
||||
|
||||
assumeThat(StubbedSimControlApplication.ActionRecord.size() > 0).isTrue();
|
||||
actual = StubbedSimControlApplication.ActionRecord.peek();
|
||||
logSize = StubbedSimControlApplication.ActionRecord.size();
|
||||
|
||||
// ASSERT
|
||||
assertThat(actual).isEqualTo(expected);
|
||||
assertThat(logSize).isEqualTo(initialLogSize + 1);
|
||||
}
|
||||
|
||||
protected FrameFixture getFrameByTitle(String title) {
|
||||
FrameFixture frame = findFrame(new GenericTypeMatcher<Frame>(Frame.class) {
|
||||
protected boolean isMatching(Frame frame) {
|
||||
return title.equals(frame.getTitle()) && frame.isShowing();
|
||||
}
|
||||
}).using(robot());
|
||||
|
||||
return frame;
|
||||
}
|
||||
|
||||
protected JButtonFixture getButtonByText(ComponentContainerFixture container, String text) {
|
||||
JButtonFixture button;
|
||||
|
||||
try {
|
||||
button = container.button(new GenericTypeMatcher<JButton>(JButton.class) {
|
||||
@Override
|
||||
protected boolean isMatching(JButton button) {
|
||||
return text.equals(button.getText());
|
||||
}
|
||||
});
|
||||
} catch (ComponentLookupException e) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return button;
|
||||
}
|
||||
|
||||
protected JButtonFixture getButtonByText(String text) {
|
||||
return getButtonByText(mainFrame, text);
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user