346 lines
14 KiB
Java
346 lines
14 KiB
Java
package jmri.jmrit.beantable;
|
|
|
|
import java.awt.GraphicsEnvironment;
|
|
import java.util.ResourceBundle;
|
|
|
|
import jmri.*;
|
|
import jmri.jmrit.logixng.*;
|
|
import jmri.jmrit.logixng.tools.swing.ConditionalNGEditor;
|
|
|
|
import jmri.util.*;
|
|
|
|
import org.junit.Assert;
|
|
import org.junit.Assume;
|
|
import org.junit.jupiter.api.*;
|
|
|
|
|
|
/**
|
|
* Tests for the NamedTableTableAction Class
|
|
* Re-created using JUnit5 with support for the new conditional editors
|
|
* @author Dave Sand Copyright (C) 2017 (for the LogixTableActionTest class)
|
|
* @author Daniel Bergqvist Copyright (C) 2019
|
|
*/
|
|
@Timeout(10)
|
|
public class LogixNGTableTableActionTest extends AbstractTableActionBase<NamedTable> {
|
|
|
|
static final ResourceBundle rbxNamedTableSwing = ResourceBundle.getBundle("jmri.jmrit.logixng.tools.swing.LogixNGSwingBundle");
|
|
|
|
@Test
|
|
public void testCtor() {
|
|
Assert.assertNotNull("LogixNGTableTableActionTest Constructor Return", new LogixNGTableTableAction()); // NOI18N
|
|
}
|
|
|
|
@Test
|
|
public void testStringCtor() {
|
|
Assume.assumeFalse(GraphicsEnvironment.isHeadless());
|
|
Assert.assertNotNull("NamedTableTableAction Constructor Return", new LogixNGTableTableAction("test")); // NOI18N
|
|
}
|
|
|
|
@Override
|
|
public String getTableFrameName() {
|
|
return Bundle.getMessage("TitleLogixNGTableTable"); // NOI18N
|
|
}
|
|
|
|
@Override
|
|
@Test
|
|
public void testGetClassDescription() {
|
|
Assert.assertEquals("NamedTable Table Action class description", Bundle.getMessage("TitleLogixNGTableTable"), a.getClassDescription()); // NOI18N
|
|
}
|
|
|
|
@Disabled("Fix later")
|
|
@Test
|
|
@Override
|
|
public void testAddThroughDialog() {
|
|
}
|
|
|
|
@Disabled("Fix later")
|
|
@Test
|
|
@Override
|
|
public void testAddButton() {
|
|
}
|
|
|
|
@Disabled("Fix later")
|
|
@Test
|
|
@Override
|
|
public void testEditButton() {
|
|
}
|
|
|
|
@Disabled("Fix later")
|
|
@Test
|
|
@Override
|
|
public void testIncludeAddButton() {
|
|
}
|
|
|
|
@Disabled("Fix later")
|
|
@Test
|
|
@Override
|
|
public void testHelpTarget() {
|
|
}
|
|
|
|
@Disabled("Fix later")
|
|
@Test
|
|
@Override
|
|
public void testExecute() {
|
|
}
|
|
|
|
/*.*
|
|
* Check the return value of includeAddButton.
|
|
* <p>
|
|
* The table generated by this action includes an Add Button.
|
|
*./
|
|
@Override
|
|
@Test
|
|
public void testIncludeAddButton() {
|
|
Assert.assertTrue("Default include add button", a.includeAddButton()); // NOI18N
|
|
}
|
|
*/
|
|
@Override
|
|
public String getAddFrameName(){
|
|
return Bundle.getMessage("TitleAddNamedTable");
|
|
}
|
|
/*
|
|
@Test
|
|
@Override
|
|
public void testAddThroughDialog() {
|
|
Assume.assumeFalse(GraphicsEnvironment.isHeadless());
|
|
AbstractLogixNGTableAction logixNGTable = (AbstractLogixNGTableAction) a;
|
|
a.actionPerformed(null);
|
|
JFrame f = JFrameOperator.waitJFrame(getTableFrameName(), true, true);
|
|
|
|
NamedTable logixNG = InstanceManager.getDefault(NamedTableManager.class).getBySystemName("IQ1");
|
|
Assert.assertNull("NamedTable does not exist", logixNG);
|
|
|
|
// find the "Add... " button and press it.
|
|
jmri.util.swing.JemmyUtil.pressButton(new JFrameOperator(f),Bundle.getMessage("ButtonAdd"));
|
|
new org.netbeans.jemmy.QueueTool().waitEmpty();
|
|
JFrame f1 = JFrameOperator.waitJFrame(getAddFrameName(), true, true);
|
|
JFrameOperator jf = new JFrameOperator(f1);
|
|
//disable "Auto System Name" via checkbox
|
|
JCheckBoxOperator jcbo = new JCheckBoxOperator(jf,Bundle.getMessage("LabelAutoSysName"));
|
|
jcbo.doClick();
|
|
//Enter IQ1 in the text field labeled "System Name:"
|
|
JLabelOperator jlo = new JLabelOperator(jf, "NamedTable" + " " + Bundle.getMessage("ColumnSystemName") + ":");
|
|
// JLabelOperator jlo = new JLabelOperator(jf,Bundle.getMessage("LabelSystemName"));
|
|
((JTextField)jlo.getLabelFor()).setText("IQ1");
|
|
//and press create
|
|
jmri.util.swing.JemmyUtil.pressButton(jf,Bundle.getMessage("ButtonCreate"));
|
|
|
|
// Click button "Done" on the EditNamedTable frame
|
|
String title = String.format("Edit NamedTable %s", "IQ1");
|
|
JFrame frame = JFrameOperator.waitJFrame(title, true, true); // NOI18N
|
|
JFrameOperator jf2 = new JFrameOperator(frame);
|
|
jmri.util.swing.JemmyUtil.pressButton(jf2,Bundle.getMessage("ButtonDone"));
|
|
JUnitUtil.dispose(frame);
|
|
|
|
// Test that we can open the NamedTableEdtior window twice
|
|
logixNGTable.editPressed("IQ101"); // NOI18N
|
|
// Click button "Done" on the EditNamedTable frame
|
|
title = String.format("Edit NamedTable %s - %s", "IQ101", "NamedTable 101");
|
|
frame = JFrameOperator.waitJFrame(title, true, true); // NOI18N
|
|
jf2 = new JFrameOperator(frame);
|
|
jmri.util.swing.JemmyUtil.pressButton(jf2,Bundle.getMessage("ButtonDone"));
|
|
JUnitUtil.dispose(frame);
|
|
|
|
JUnitUtil.dispose(f1);
|
|
JUnitUtil.dispose(f);
|
|
|
|
logixNG = InstanceManager.getDefault(NamedTableManager.class).getBySystemName("IQ1");
|
|
Assert.assertNotNull("NamedTable has been created", logixNG);
|
|
}
|
|
|
|
@Test
|
|
@Override
|
|
public void testEditButton() {
|
|
Assume.assumeFalse(GraphicsEnvironment.isHeadless());
|
|
AbstractLogixNGTableAction logixNGTable = (AbstractLogixNGTableAction) a;
|
|
|
|
logixNGTable.setEditorMode(AbstractLogixNGTableAction.EditMode.TREEEDIT);
|
|
|
|
NamedTable table = InstanceManager.getDefault(NamedTableManager.class).getBySystemName("IQ101");
|
|
Assert.assertNotNull("NamedTable exists", table);
|
|
|
|
logixNGTable.editPressed("IQ101"); // NOI18N
|
|
|
|
String title = String.format("Edit NamedTable %s - %s", table.getSystemName(), table.getUserName());
|
|
JFrame frame = JFrameOperator.waitJFrame(title, true, true); // NOI18N
|
|
// JFrame frame2 = JFrameOperator.waitJFrame(Bundle.getMessage("EditTitle"), true, true); // NOI18N
|
|
|
|
// Click button "New ConditionalNG" on the EditNamedTable frame
|
|
JFrameOperator jf = new JFrameOperator(frame);
|
|
jmri.util.swing.JemmyUtil.pressButton(jf,"New ConditionalNG");
|
|
|
|
|
|
JDialogOperator addDialog = new JDialogOperator("Add ConditionalNG"); // NOI18N
|
|
new JButtonOperator(addDialog, Bundle.getMessage("ButtonCreate")).push(); // NOI18N
|
|
|
|
// Close window
|
|
// JFrameOperator editConditionalNGFrameOperator = new JFrameOperator("Edit ConditionalNG " + table.getConditionalNG(0));
|
|
JFrameOperator editConditionalNGFrameOperator = new JFrameOperator("Edit ConditionalNG aaa");
|
|
new JMenuBarOperator(editConditionalNGFrameOperator).pushMenu("File|Close Window", "|");
|
|
|
|
Assert.assertNotNull(frame);
|
|
jmri.util.swing.JemmyUtil.pressButton(new JFrameOperator(frame),Bundle.getMessage("ButtonDone"));
|
|
JUnitUtil.dispose(frame);
|
|
}
|
|
|
|
@Test
|
|
public void testNamedTableBrowser() {
|
|
Assume.assumeFalse(GraphicsEnvironment.isHeadless());
|
|
AbstractLogixNGTableAction logixNGTable = (AbstractLogixNGTableAction) a;
|
|
|
|
logixNGTable.browserPressed("IQ101"); // NOI18N
|
|
|
|
JFrame frame = JFrameOperator.waitJFrame(Bundle.getMessage("BrowserTitle"), true, true); // NOI18N
|
|
Assert.assertNotNull(frame);
|
|
JUnitUtil.dispose(frame);
|
|
}
|
|
|
|
@Test
|
|
public void testTreeEditor() {
|
|
Assume.assumeFalse(GraphicsEnvironment.isHeadless());
|
|
InstanceManager.getDefault(jmri.UserPreferencesManager.class).
|
|
setProperty("jmri.jmrit.beantable.NamedTableTableAction", "Edit Mode", "TREEEDIT"); // NOI18N
|
|
a.actionPerformed(null);
|
|
AbstractLogixNGTableAction logixNGTable = (AbstractLogixNGTableAction) a;
|
|
JFrameOperator logixNGFrame = new JFrameOperator(Bundle.getMessage("TitleNamedTableTable")); // NOI18N
|
|
Assert.assertNotNull(logixNGFrame);
|
|
|
|
logixNGTable.editPressed("IQ104"); // NOI18N
|
|
JFrameOperator cdlFrame = new JFrameOperator(jmri.Bundle.formatMessage(rbxNamedTableSwing.getString("TitleEditNamedTable"), "IQ104")); // NOI18N
|
|
Assert.assertNotNull(cdlFrame);
|
|
new JMenuBarOperator(cdlFrame).pushMenuNoBlock(Bundle.getMessage("MenuFile")+"|"+rbxNamedTableSwing.getString("CloseWindow"), "|"); // NOI18N
|
|
logixNGFrame.dispose();
|
|
}
|
|
|
|
@Test
|
|
public void testAddNamedTableAutoName() {
|
|
Assume.assumeFalse(GraphicsEnvironment.isHeadless());
|
|
AbstractLogixNGTableAction logixNGTable = (AbstractLogixNGTableAction) a;
|
|
|
|
logixNGTable.actionPerformed(null); // show table
|
|
JFrame logixNGFrame = JFrameOperator.waitJFrame(Bundle.getMessage("TitleNamedTableTable"), true, true); // NOI18N
|
|
Assert.assertNotNull("Found NamedTable Frame", logixNGFrame); // NOI18N
|
|
|
|
logixNGTable.addPressed(null);
|
|
JFrameOperator addFrame = new JFrameOperator(Bundle.getMessage("TitleAddNamedTable")); // NOI18N
|
|
Assert.assertNotNull("Found Add NamedTable Frame", addFrame); // NOI18N
|
|
|
|
new JTextFieldOperator(addFrame, 1).setText("NamedTable 999"); // NOI18N
|
|
new JButtonOperator(addFrame, Bundle.getMessage("ButtonCreate")).push(); // NOI18N
|
|
|
|
NamedTable chk999 = jmri.InstanceManager.getDefault(jmri.jmrit.logixng.NamedTableManager.class).getNamedTable("NamedTable 999"); // NOI18N
|
|
Assert.assertNotNull("Verify 'NamedTable 999' Added", chk999); // NOI18N
|
|
|
|
// Add creates an edit frame; find and dispose
|
|
JFrame editFrame = JFrameOperator.waitJFrame(jmri.Bundle.formatMessage(rbxNamedTableSwing.getString("TitleEditNamedTable2"), "IQ:AUTO:0001", "NamedTable 999"), true, true); // NOI18N
|
|
JUnitUtil.dispose(editFrame);
|
|
|
|
JUnitUtil.dispose(logixNGFrame);
|
|
}
|
|
|
|
@Test
|
|
public void testAddNamedTable() {
|
|
Assume.assumeFalse(GraphicsEnvironment.isHeadless());
|
|
AbstractLogixNGTableAction logixNGTable = (AbstractLogixNGTableAction) a;
|
|
|
|
logixNGTable.actionPerformed(null); // show table
|
|
JFrame logixNGFrame = JFrameOperator.waitJFrame(Bundle.getMessage("TitleNamedTableTable"), true, true); // NOI18N
|
|
Assert.assertNotNull("Found NamedTable Frame", logixNGFrame); // NOI18N
|
|
|
|
logixNGTable.addPressed(null);
|
|
JFrameOperator addFrame = new JFrameOperator(Bundle.getMessage("TitleAddNamedTable")); // NOI18N
|
|
Assert.assertNotNull("Found Add NamedTable Frame", addFrame); // NOI18N
|
|
|
|
//disable "Auto System Name" via checkbox
|
|
JCheckBoxOperator jcbo = new JCheckBoxOperator(addFrame,Bundle.getMessage("LabelAutoSysName"));
|
|
jcbo.doClick();
|
|
new JTextFieldOperator(addFrame, 0).setText("IQ105"); // NOI18N
|
|
new JTextFieldOperator(addFrame, 1).setText("NamedTable 105"); // NOI18N
|
|
new JButtonOperator(addFrame, Bundle.getMessage("ButtonCreate")).push(); // NOI18N
|
|
|
|
NamedTable chk105 = jmri.InstanceManager.getDefault(NamedTableManager.class).getNamedTable("NamedTable 105"); // NOI18N
|
|
Assert.assertNotNull("Verify IQ105 Added", chk105); // NOI18N
|
|
|
|
// Add creates an edit frame; find and dispose
|
|
JFrame editFrame = JFrameOperator.waitJFrame(jmri.Bundle.formatMessage(rbxNamedTableSwing.getString("TitleEditNamedTable2"), "IQ105", "NamedTable 105"), true, true); // NOI18N
|
|
JUnitUtil.dispose(editFrame);
|
|
|
|
JUnitUtil.dispose(logixNGFrame);
|
|
}
|
|
|
|
@Test
|
|
public void testDeleteNamedTable() throws InterruptedException {
|
|
Assume.assumeFalse(GraphicsEnvironment.isHeadless());
|
|
AbstractLogixNGTableAction logixNGTable = (AbstractLogixNGTableAction) a;
|
|
|
|
logixNGTable.actionPerformed(null); // show table
|
|
JFrame logixNGFrame = JFrameOperator.waitJFrame(Bundle.getMessage("TitleNamedTableTable"), true, true); // NOI18N
|
|
Assert.assertNotNull("Found NamedTable Frame", logixNGFrame); // NOI18N
|
|
|
|
// Delete IQ102, respond No
|
|
Thread t1 = createModalDialogOperatorThread(Bundle.getMessage("QuestionTitle"), Bundle.getMessage("ButtonNo")); // NOI18N
|
|
logixNGTable.deletePressed("IQ102"); // NOI18N
|
|
t1.join();
|
|
NamedTable chk102 = jmri.InstanceManager.getDefault(NamedTableManager.class).getBySystemName("IQ102"); // NOI18N
|
|
Assert.assertNotNull("Verify IQ102 Not Deleted", chk102); // NOI18N
|
|
|
|
// Delete IQ103, respond Yes
|
|
Thread t2 = createModalDialogOperatorThread(Bundle.getMessage("QuestionTitle"), Bundle.getMessage("ButtonYes")); // NOI18N
|
|
logixNGTable.deletePressed("IQ103"); // NOI18N
|
|
t2.join();
|
|
NamedTable chk103 = jmri.InstanceManager.getDefault(NamedTableManager.class).getBySystemName("IQ103"); // NOI18N
|
|
Assert.assertNull("Verify IQ103 Is Deleted", chk103); // NOI18N
|
|
|
|
JUnitUtil.dispose(logixNGFrame);
|
|
}
|
|
|
|
Thread createModalDialogOperatorThread(String dialogTitle, String buttonText) {
|
|
Thread t = new Thread(() -> {
|
|
// constructor for jdo will wait until the dialog is visible
|
|
JDialogOperator jdo = new JDialogOperator(dialogTitle);
|
|
JButtonOperator jbo = new JButtonOperator(jdo, buttonText);
|
|
jbo.pushNoBlock();
|
|
});
|
|
t.setName(dialogTitle + " Close Dialog Thread");
|
|
t.start();
|
|
return t;
|
|
}
|
|
*/
|
|
|
|
@BeforeEach
|
|
@Override
|
|
public void setUp() {
|
|
JUnitUtil.setUp();
|
|
jmri.util.JUnitUtil.resetProfileManager();
|
|
jmri.util.JUnitUtil.initLogixManager();
|
|
jmri.util.JUnitUtil.initDefaultUserMessagePreferences();
|
|
jmri.util.JUnitUtil.initLogixNGManager();
|
|
|
|
// InstanceManager.getDefault(NamedTablePreferences.class).setLimitRootActions(false);
|
|
|
|
InstanceManager.getDefault(UserPreferencesManager.class)
|
|
.setSimplePreferenceState(ConditionalNGEditor.class.getName()+".AutoSystemName", true);
|
|
|
|
//// InstanceManager.getDefault(NamedTableManager.class).createNamedTable("IQ101", "NamedTable 101");
|
|
//// InstanceManager.getDefault(NamedTableManager.class).createNamedTable("IQ102", "NamedTable 102");
|
|
//// InstanceManager.getDefault(NamedTableManager.class).createNamedTable("IQ103", "NamedTable 103");
|
|
//// InstanceManager.getDefault(NamedTableManager.class).createNamedTable("IQ104", "NamedTable 104");
|
|
|
|
helpTarget = "package.jmri.jmrit.beantable.NamedTableTable";
|
|
a = new LogixNGTableTableAction();
|
|
}
|
|
|
|
@AfterEach
|
|
@Override
|
|
public void tearDown() {
|
|
a = null;
|
|
jmri.jmrit.logixng.util.LogixNG_Thread.stopAllLogixNGThreads();
|
|
JUnitUtil.deregisterBlockManagerShutdownTask();
|
|
JUnitUtil.tearDown();
|
|
}
|
|
|
|
|
|
// private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(LogixNGTableTableActionTest.class);
|
|
|
|
}
|