Files
2026-06-17 14:00:51 +02:00

221 lines
7.7 KiB
Java

package jmri.jmrit.etcs.dmi.swing;
import jmri.jmrit.etcs.TrackSection;
import jmri.jmrit.etcs.TrackCondition;
import jmri.jmrit.etcs.MovementAuthority;
import java.util.ArrayList;
import jmri.util.JUnitUtil;
import org.junit.jupiter.api.*;
import org.netbeans.jemmy.operators.*;
/**
* Tests for DmiPanelD.
* @author Steve Young Copyright (C) 2024
*/
@jmri.util.junit.annotations.DisabledIfHeadless
public class DmiPanelDTest {
@Test
public void testPlanningScales() {
DmiFrame df = new DmiFrame("testPlanningScales");
DmiPanel p = df.getDmiPanel();
Assertions.assertNotNull(p);
df.setVisible(true);
JFrameOperator jfo = new JFrameOperator(df.getTitle());
p.setScale(0);
// create new dmi section 100m long, 5% gradient, speed 50
ArrayList<TrackSection> trackSectionList1 = new ArrayList<>();
TrackSection s = new TrackSection(25,50,22);
trackSectionList1.add(s);
MovementAuthority ma1 = new MovementAuthority(trackSectionList1);
ArrayList<MovementAuthority> mas1 = new ArrayList<>();
mas1.add(ma1);
p.resetMovementAuthorities(mas1); // 25m
// JUnitUtil.waitFor(2000);
ArrayList<TrackSection> trackSectionList2 = new ArrayList<>();
TrackSection s2 = new TrackSection(25,50,-22);
trackSectionList2.add(s2);
p.extendMovementAuthorities(new MovementAuthority(trackSectionList2)); // 50m
// JUnitUtil.waitFor(2000);
ArrayList<TrackSection> trackSectionList3 = new ArrayList<>();
TrackSection s3 = new TrackSection(25,75,22);
trackSectionList3.add(s3);
p.extendMovementAuthorities(new MovementAuthority(trackSectionList3)); // 75m
// JUnitUtil.waitFor(2000);
ArrayList<TrackSection> trackSectionList4 = new ArrayList<>();
TrackSection s4 = new TrackSection(25,75,-22);
trackSectionList4.add(s4);
p.extendMovementAuthorities(new MovementAuthority(trackSectionList4)); // 100m
// JUnitUtil.waitFor(2000);
ArrayList<TrackSection> trackSectionList5 = new ArrayList<>();
TrackSection s5 = new TrackSection(25,75,22);
trackSectionList5.add(s5);
p.extendMovementAuthorities(new MovementAuthority(trackSectionList5)); // 125m
// JUnitUtil.waitFor(2000);
ArrayList<TrackSection> trackSectionList6 = new ArrayList<>();
TrackSection s6 = new TrackSection(125,75,-22);
trackSectionList6.add(s6);
p.extendMovementAuthorities(new MovementAuthority(trackSectionList6)); // 250m
// JUnitUtil.waitFor(2000);
ArrayList<TrackSection> trackSectionList7 = new ArrayList<>();
TrackSection s7 = new TrackSection(250,75,22);
trackSectionList7.add(s7);
p.extendMovementAuthorities(new MovementAuthority(trackSectionList7)); // 500m
// JUnitUtil.waitFor(2000);
ArrayList<TrackSection> trackSectionList8 = new ArrayList<>();
TrackSection s8 = new TrackSection(500,75,-22);
trackSectionList8.add(s8);
p.extendMovementAuthorities(new MovementAuthority(trackSectionList8)); // 1000m
// JUnitUtil.waitFor(2000);
ArrayList<TrackSection> trackSectionList9 = new ArrayList<>();
TrackSection s9 = new TrackSection(1000,75,22);
trackSectionList9.add(s9);
p.extendMovementAuthorities(new MovementAuthority(trackSectionList9)); // 2000m
// JUnitUtil.waitFor(10000);
JUnitUtil.dispose(jfo.getWindow());
jfo.waitClosed();
}
@Test
public void testRightHandPlanningArea(){
DmiFrame df = new DmiFrame("testRightHandPlanningArea");
DmiPanel p = df.getDmiPanel();
Assertions.assertNotNull(p);
df.setVisible(true);
JFrameOperator jfo = new JFrameOperator(df.getTitle());
ArrayList<TrackSection> trackSectionList = new ArrayList<>();
TrackSection s1 = new TrackSection(75,100,-4);
TrackSection s2 = new TrackSection(50,140,-2);
TrackSection s3 = new TrackSection(125,100,1);
TrackSection s4 = new TrackSection(250,80,2);
TrackSection s5 = new TrackSection(250,40,4);
TrackSection s6 = new TrackSection(250,100,8);
trackSectionList.add(s1);
trackSectionList.add(s2);
trackSectionList.add(s3);
trackSectionList.add(s4);
trackSectionList.add(s5);
trackSectionList.add(s6);
p.extendMovementAuthorities(new MovementAuthority(trackSectionList)); // 1000m
// JUnitUtil.waitFor(1000);
p.setNextAdviceChange(200);
// JUnitUtil.waitFor(5000);
for (int i = 0; i < 201; i++){
p.advance(1);
// JUnitUtil.waitFor(100);
}
// JUnitUtil.waitFor(5000);
JUnitUtil.dispose(jfo.getWindow());
jfo.waitClosed();
}
@Test
public void testSymbolsInSection(){
DmiFrame df = new DmiFrame("testSymbolsInSection");
DmiPanel p = df.getDmiPanel();
df.setVisible(true);
JFrameOperator jfo = new JFrameOperator(df.getTitle());
ArrayList<TrackSection> trackSectionList = new ArrayList<>();
TrackSection s1 = new TrackSection(2000,100,4);
s1.addAnnouncement(TrackCondition.airConClose(100, true));
s1.addAnnouncement(TrackCondition.airConOpen(200, false));
s1.addAnnouncement(TrackCondition.pantographLower(500, false));
s1.addAnnouncement(TrackCondition.pantographRaise(750, false));
s1.addAnnouncement(TrackCondition.neutralSection(25, false));
s1.addAnnouncement(TrackCondition.neutralSectionEnd(50, false));
s1.addAnnouncement(TrackCondition.tractionChange15000(900, false));
s1.addAnnouncement(TrackCondition.tractionChange750(1000, true));
s1.addAnnouncement(TrackCondition.tractionChange3000(1200, false));
s1.addAnnouncement(TrackCondition.tractionChange1500(1300, true));
s1.addAnnouncement(TrackCondition.tractionChange25000(1400, true));
s1.addAnnouncement(TrackCondition.tractionChange0(1500, true));
trackSectionList.add(s1);
p.extendMovementAuthorities(new MovementAuthority(trackSectionList)); // 1000m
// JUnitUtil.waitFor(10000);
JUnitUtil.dispose(jfo.getWindow());
jfo.waitClosed();
}
@Test
public void testZeroDistance(){
DmiFrame df = new DmiFrame("testZeroDistance");
DmiPanel p = df.getDmiPanel();
df.setVisible(true);
JFrameOperator jfo = new JFrameOperator(df.getTitle());
p.setScale(0);
advanceBottomOfPlanning(p);
p.setScale(1);
advanceBottomOfPlanning(p);
p.setScale(2);
advanceBottomOfPlanning(p);
p.setScale(3);
advanceBottomOfPlanning(p);
p.setScale(4);
advanceBottomOfPlanning(p);
p.setScale(5);
advanceBottomOfPlanning(p);
JUnitUtil.dispose(jfo.getWindow());
jfo.waitClosed();
}
private void advanceBottomOfPlanning(DmiPanel p){
ArrayList<TrackSection> trackSectionList = new ArrayList<>();
TrackSection s1 = new TrackSection(100,100,4);
s1.addAnnouncement(TrackCondition.airConClose(50, false));
// s1.addAnnouncement(new StationTrackCondition(60,"My Station Name"));
trackSectionList.add(s1);
p.extendMovementAuthorities(new MovementAuthority(trackSectionList)); // 2000m
// JUnitUtil.waitFor(1000);
for (int i = 0; i < 101; i++){
p.advance(1);
// JUnitUtil.waitFor(200);
}
}
@BeforeEach
public void setUp() {
JUnitUtil.setUp();
}
@AfterEach
public void tearDown() {
JUnitUtil.tearDown();
}
}