120 lines
3.6 KiB
Java
120 lines
3.6 KiB
Java
package jmri.jmrix.rps.trackingpanel;
|
|
|
|
import java.awt.GraphicsEnvironment;
|
|
|
|
import javax.swing.BoxLayout;
|
|
import javax.vecmath.Point3d;
|
|
|
|
import jmri.InstanceManager;
|
|
import jmri.jmrit.roster.RosterConfigManager;
|
|
import jmri.jmrix.rps.Engine;
|
|
import jmri.jmrix.rps.Measurement;
|
|
import jmri.jmrix.rps.Model;
|
|
import jmri.jmrix.rps.Reading;
|
|
import jmri.jmrix.rps.Receiver;
|
|
import jmri.jmrix.rps.Region;
|
|
import jmri.jmrix.rps.RpsSystemConnectionMemo;
|
|
import jmri.util.JUnitUtil;
|
|
import jmri.util.JmriJFrame;
|
|
|
|
import org.junit.Assert;
|
|
import org.junit.jupiter.api.*;
|
|
import org.junit.Assume;
|
|
|
|
/**
|
|
* JUnit tests for the rps.RpsTrackingPanel class.
|
|
*
|
|
* @author Bob Jacobsen Copyright 2006
|
|
*/
|
|
public class RpsTrackingPanelTest {
|
|
|
|
RpsSystemConnectionMemo memo = null;
|
|
|
|
@Test
|
|
public void testShow() {
|
|
Assume.assumeFalse(GraphicsEnvironment.isHeadless());
|
|
new Engine() {
|
|
void reset() {
|
|
_instance = null;
|
|
}
|
|
}.reset();
|
|
Engine.instance().setMaxReceiverNumber(2);
|
|
Engine.instance().setReceiver(1, new Receiver(new Point3d(12., 12., 0.)));
|
|
Engine.instance().setReceiver(2, new Receiver(new Point3d(13., 13., 0.)));
|
|
|
|
JmriJFrame f = new JmriJFrame("Test Tracking Panel");
|
|
f.getContentPane().setLayout(new BoxLayout(f.getContentPane(), BoxLayout.Y_AXIS));
|
|
RpsTrackingPanel p = new RpsTrackingPanel(memo);
|
|
p.setSize(400, 400);
|
|
p.setOrigin(0, 0);
|
|
p.setCoordMax(30., 30.);
|
|
f.getContentPane().add(p);
|
|
f.pack();
|
|
|
|
// add some regions to probe corners
|
|
Region r = new Region("(4,4,0);(10,16,0);(18,10,0);(4,4,0)");
|
|
Model.instance().addRegion(r);
|
|
|
|
r = new Region("(30,15,0);(25,15,0);(25,20,0);(30,15,0)");
|
|
Model.instance().addRegion(r);
|
|
|
|
r = new Region("(15,30,0);(15,25,0);(20,25,0);(15,30,0)");
|
|
Model.instance().addRegion(r);
|
|
|
|
r = new Region("(25,25,0);(25,28,0);(30,30,1);(29,25,0);(25,25,0)");
|
|
Model.instance().addRegion(r);
|
|
|
|
// show overlap
|
|
r = new Region("(20,20,0);(22,20,0);(22,22,1);(20,22,0)");
|
|
Model.instance().addRegion(r);
|
|
r = new Region("(19,19,0);(21,19,0);(21,21,1);(19,21,0)");
|
|
Model.instance().addRegion(r);
|
|
|
|
// show panel
|
|
f.setSize(400, 400);
|
|
f.setVisible(true);
|
|
|
|
Reading loco = new Reading("21", null);
|
|
Measurement m = new Measurement(loco, 0.0, 0.0, 0.0, 0.133, 5, "source");
|
|
p.notify(m);
|
|
|
|
loco = new Reading("21", null);
|
|
m = new Measurement(loco, 5., 5., 0.0, 0.133, 5, "source");
|
|
p.notify(m);
|
|
|
|
loco = new Reading("21", null);
|
|
m = new Measurement(loco, 0., 5., 0.0, 0.133, 5, "source");
|
|
p.notify(m);
|
|
|
|
loco = new Reading("21", null);
|
|
m = new Measurement(loco, 5., 0., 0.0, 0.133, 5, "source");
|
|
p.notify(m);
|
|
|
|
// check separate locos
|
|
int NUM_LOCO = 64;
|
|
for (int i = 0; i < NUM_LOCO; i++) {
|
|
loco = new Reading("" + i, null);
|
|
m = new Measurement(loco, 6. + 1. * i, 0., 0.0, 0.133, 5, "source");
|
|
p.notify(m);
|
|
m = new Measurement(loco, 6. + 1. * i, 12., 0.0, 0.133, 5, "source");
|
|
p.notify(m);
|
|
}
|
|
|
|
Assert.assertNotNull("found frame", f);
|
|
f.dispose();
|
|
}
|
|
|
|
@BeforeEach
|
|
public void setUp() throws Exception {
|
|
JUnitUtil.setUp();
|
|
jmri.util.JUnitUtil.resetProfileManager();
|
|
|
|
memo = new RpsSystemConnectionMemo();
|
|
InstanceManager.setDefault(RosterConfigManager.class, new RosterConfigManager());
|
|
}
|
|
|
|
@AfterEach
|
|
public void tearDown() throws Exception { JUnitUtil.tearDown(); }
|
|
|
|
}
|