Files
JIMRI/java/test/jmri/jmrit/logixng/tools/ImportExpressionOBlockTest.java
2026-06-17 14:00:51 +02:00

94 lines
3.6 KiB
Java

package jmri.jmrit.logixng.tools;
import org.junit.jupiter.api.Assertions;
import static org.junit.jupiter.api.Assertions.fail;
import jmri.*;
import jmri.jmrit.logix.OBlock;
/**
* Test import of Logix to LogixNG.
* <P>
* This class creates a Logix, test that it works, imports it to LogixNG,
* deletes the original Logix and then test that the new LogixNG works.
* <P>
* This test tests expression oblock
*
* @author Daniel Bergqvist (C) 2020
*/
public class ImportExpressionOBlockTest extends ImportExpressionComplexTestBase {
private OBlock oblock = null;
private ConditionalVariable cv = null;
private enum OBlockEnum {
EqualsUnoccupied(OBlock.OBlockStatus.TrackError, OBlock.OBlockStatus.Occupied, OBlock.OBlockStatus.Unoccupied),
EqualsOccupied(OBlock.OBlockStatus.TrackError, OBlock.OBlockStatus.Unoccupied, OBlock.OBlockStatus.Occupied),
EqualsAllocated(OBlock.OBlockStatus.TrackError, OBlock.OBlockStatus.Occupied, OBlock.OBlockStatus.Allocated),
EqualsRunning(OBlock.OBlockStatus.TrackError, OBlock.OBlockStatus.Occupied, OBlock.OBlockStatus.Running),
EqualsOutOfService(OBlock.OBlockStatus.TrackError, OBlock.OBlockStatus.Occupied, OBlock.OBlockStatus.OutOfService),
EqualsDark(OBlock.OBlockStatus.TrackError, OBlock.OBlockStatus.Occupied, OBlock.OBlockStatus.Dark),
EqualsTrackError(OBlock.OBlockStatus.Dark, OBlock.OBlockStatus.Occupied, OBlock.OBlockStatus.TrackError);
final OBlock.OBlockStatus initOBlockStatus;
final OBlock.OBlockStatus failOBlockStatus;
final OBlock.OBlockStatus successOBlockStatus;
private OBlockEnum(OBlock.OBlockStatus initOBlockStatus, OBlock.OBlockStatus failOBlockStatus, OBlock.OBlockStatus successOBlockStatus) {
this.initOBlockStatus = initOBlockStatus;
this.failOBlockStatus = failOBlockStatus;
this.successOBlockStatus = successOBlockStatus;
}
}
@Override
protected Enum<?>[] getEnums() {
return OBlockEnum.values();
}
@Override
public void setNamedBeanState(Enum<?> e, Setup setup) throws JmriException {
OBlockEnum me = OBlockEnum.valueOf(e.name());
Assertions.assertNotNull(oblock);
Assertions.assertNotNull(cv);
cv.setType(Conditional.Type.BLOCK_STATUS_EQUALS);
cv.setDataString(me.successOBlockStatus.getName());
switch (me) {
case EqualsUnoccupied:
case EqualsOccupied:
case EqualsAllocated:
case EqualsRunning:
case EqualsOutOfService:
case EqualsDark:
case EqualsTrackError:
switch (setup) {
case Init: oblock.setState(me.initOBlockStatus.getStatus()); break;
case Fail1:
case Fail2:
case Fail3: oblock.setState(me.failOBlockStatus.getStatus()); break;
case Succeed1:
case Succeed2:
case Succeed3:
case Succeed4: oblock.setState(me.successOBlockStatus.getStatus()); break;
default: fail("Unknown enum: "+e.name());
}
break;
default:
fail("Unknown enum: "+e.name());
}
}
@Override
public ConditionalVariable newConditionalVariable() {
oblock = new OBlock("OB99");
InstanceManager.getDefault(jmri.jmrit.logix.OBlockManager.class).register(oblock);
cv = new ConditionalVariable();
cv.setName("OB99");
return cv;
}
}