package jmri.jmrit.logixng.expressions.swing; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; import javax.swing.JDialog; import javax.swing.JPanel; import jmri.InstanceManager; import jmri.Sensor; import jmri.SensorManager; import jmri.jmrit.logixng.*; import jmri.jmrit.logixng.actions.IfThenElse; import jmri.jmrit.logixng.expressions.ExpressionSensor; import jmri.jmrit.logixng.swing.SwingConfiguratorInterfaceTestBase; import jmri.util.JUnitUtil; import jmri.util.junit.annotations.DisabledIfHeadless; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import org.netbeans.jemmy.operators.*; /** * Test ExpressionSensorSwing * * @author Daniel Bergqvist 2018 */ public class ExpressionSensorSwingTest extends SwingConfiguratorInterfaceTestBase { @Test @DisabledIfHeadless public void testCtor() { ExpressionSensorSwing t = new ExpressionSensorSwing(); assertNotNull( t, "exists"); } @Test @DisabledIfHeadless public void testPanel() { JDialog dialog = new JDialog(); ExpressionSensorSwing t = new ExpressionSensorSwing(dialog); JPanel panel = t.getConfigPanel(new JPanel()); assertNotNull( panel, "exists"); } @Test @DisabledIfHeadless public void testCreatePanel() { JDialog dialog = new JDialog(); assertNotNull( new ExpressionSensorSwing(dialog).getConfigPanel(new JPanel()), "panel is not null"); assertNotNull( new ExpressionSensorSwing(dialog).getConfigPanel(new ExpressionSensor("IQDE1", null), new JPanel()), "panel is not null"); } @Disabled("Fails in Java 11 testing") @Test @DisabledIfHeadless public void testDialogUseExistingSensor() throws SocketAlreadyConnectedException { Sensor s1 = InstanceManager.getDefault(SensorManager.class).provide("IS1"); InstanceManager.getDefault(SensorManager.class).provide("IS2"); jmri.jmrit.logixng.LogixNG logixNG = InstanceManager.getDefault(jmri.jmrit.logixng.LogixNG_Manager.class) .createLogixNG("A logixNG with an empty conditionlNG"); ConditionalNG conditionalNG = InstanceManager.getDefault(ConditionalNG_Manager.class).createConditionalNG(logixNG, "IQC1", null); IfThenElse action = new IfThenElse("IQDA1", null); MaleSocket maleSocket = InstanceManager.getDefault(DigitalActionManager.class).registerAction(action); conditionalNG.getChild(0).connect(maleSocket); ExpressionSensor expression = new ExpressionSensor("IQDE1", null); maleSocket = InstanceManager.getDefault(DigitalExpressionManager.class).registerExpression(expression); action.getChild(0).connect(maleSocket); JDialogOperator jdo = editItem(conditionalNG, "Edit ConditionalNG IQC1", "Edit ? ", 1); new JComboBoxOperator(jdo, 0).setSelectedItem(s1); new JComboBoxOperator(jdo, 1).setSelectedItem(Is_IsNot_Enum.IsNot); new JComboBoxOperator(jdo, 2).setSelectedItem(ExpressionSensor.SensorState.Inactive); new JButtonOperator(jdo, "OK").push(); // NOI18N JUnitUtil.waitFor(() -> {return expression.getSelectNamedBean().getNamedBean() != null;}, "nb not null"); assertEquals("IS1", expression.getSelectNamedBean().getNamedBean().getBean().getSystemName()); assertEquals(ExpressionSensor.SensorState.Inactive, expression.getSelectEnum().getEnum()); } @BeforeEach public void setUp() { JUnitUtil.setUp(); JUnitUtil.resetInstanceManager(); JUnitUtil.resetProfileManager(); JUnitUtil.initConfigureManager(); JUnitUtil.initInternalSensorManager(); InstanceManager.getDefault(LogixNGPreferences.class).setShowSystemUserNames(true); JUnitUtil.initLogixNGManager(); } @AfterEach public void tearDown() { jmri.jmrit.logixng.util.LogixNG_Thread.stopAllLogixNGThreads(); JUnitUtil.deregisterBlockManagerShutdownTask(); JUnitUtil.tearDown(); } }