Files
JIMRI/java/test/jmri/jmrix/rps/RegionTest.java
T
2026-06-17 14:00:51 +02:00

143 lines
3.8 KiB
Java

package jmri.jmrix.rps;
import javax.vecmath.Point3d;
import jmri.util.JUnitUtil;
import org.junit.jupiter.api.*;
import org.junit.Assert;
/**
* JUnit tests for the rps.Region class.
*
* @author Bob Jacobsen Copyright 2007
*/
public class RegionTest {
@Test
public void testCtors() {
// square
Region r = new Region(new Point3d[]{
new Point3d(0., 0., 0.),
new Point3d(1., 0., 0.),
new Point3d(1., 1., 0.),
new Point3d(0., 1., 0.)}
);
Assertions.assertNotNull( r );
// triangle
r = new Region(new Point3d[]{
new Point3d(0., 0., 0.),
new Point3d(1., 0., 0.),
new Point3d(1., 1., 0.)}
);
Assertions.assertNotNull( r );
}
@Test
public void testInside1() {
// square
Region r = new Region(new Point3d[]{
new Point3d(0., 0., 0.),
new Point3d(1., 0., 0.),
new Point3d(1., 1., 0.),
new Point3d(0., 1., 0.)}
);
Assert.assertTrue("inside", r.isInside(new Point3d(0.5, 0.5, 0.)));
Assert.assertTrue("outside", !r.isInside(new Point3d(-0.5, 0.5, 0.)));
Assert.assertTrue("outside", !r.isInside(new Point3d(0.5, -0.5, 0.)));
Assert.assertTrue("outside", !r.isInside(new Point3d(1.5, 0.5, 0.)));
Assert.assertTrue("outside", !r.isInside(new Point3d(0.5, 1.5, 0.)));
}
@Test
public void testInside2() {
// C chape
Region r = new Region(new Point3d[]{
new Point3d(0., 0., 0.),
new Point3d(3., 0., 0.),
new Point3d(3., 1., 0.),
new Point3d(1., 1., 0.),
new Point3d(1., 2., 0.),
new Point3d(2., 2., 0.),
new Point3d(2., 3., 0.),
new Point3d(0., 3., 0.),
new Point3d(0., 0., 0.)}
);
Assert.assertTrue("inside", r.isInside(new Point3d(0.5, 0.5, 0.)));
Assert.assertTrue("outside", !r.isInside(new Point3d(-0.5, 0.5, 0.)));
Assert.assertTrue("outside", !r.isInside(new Point3d(0.5, -0.5, 0.)));
Assert.assertTrue("outside", !r.isInside(new Point3d(1.5, 1.5, 0.)));
Assert.assertTrue("outside", !r.isInside(new Point3d(3.0, 1.5, 0.)));
}
@Test
public void testEquals() {
// square
Region r1 = new Region(new Point3d[]{
new Point3d(0., 0., 0.),
new Point3d(1., 0., 0.),
new Point3d(1., 1., 0.),
new Point3d(0., 1., 0.)}
);
Region r2 = new Region(new Point3d[]{
new Point3d(0., 0., 0.),
new Point3d(1., 0., 0.),
new Point3d(1., 1., 0.),
new Point3d(0., 1., 0.)}
);
Region r3 = new Region(new Point3d[]{
new Point3d(0., 0., 0.),
new Point3d(2., 0., 0.),
new Point3d(1., 1., 0.),
new Point3d(0., 1., 0.)}
);
Region r4 = new Region(new Point3d[]{
new Point3d(0., 0., 0.),
new Point3d(1., 0., 0.),
new Point3d(1., 1., 0.)}
);
Assert.assertTrue("r1==r2", r1.equals(r2));
Assert.assertTrue("r1!=r3", !r1.equals(r3));
Assert.assertTrue("r1!=r4", !r1.equals(r4));
Assert.assertTrue("r4==r4", r4.equals(r4));
}
@Test
public void testStringCtor() {
Region r1 = new Region(new Point3d[]{
new Point3d(0., 0., 0.),
new Point3d(1., 0., 0.),
new Point3d(1., 1., 0.),
new Point3d(0., 1., 0.)}
);
Region r1s = new Region("(0,0,0);(1,0,0);(1,1,0);(0,1,0)");
Assert.assertTrue("r1==r1s", r1.equals(r1s));
}
@BeforeEach
public void setUp() {
JUnitUtil.setUp();
}
@AfterEach
public void tearDown() {
JUnitUtil.tearDown();
}
}