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

90 lines
2.9 KiB
Java

package jmri;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyVetoException;
import jmri.util.JUnitUtil;
import jmri.util.JUnitAppender;
import org.junit.jupiter.api.*;
import static org.junit.jupiter.api.Assertions.*;
/**
* Scale tests.
* @author Dave Sand Copyright (C) 2018
*/
public class ScaleTest {
@Test
public void testDefaultScale() {
Scale scale = new Scale();
assertNotNull( scale, "exists");
assertEquals("HO", scale.getScaleName());
assertEquals("HO", scale.getUserName());
assertEquals(87.1, scale.getScaleRatio(), .1);
assertEquals(1/87.1d, scale.getScaleFactor(), .001);
}
@Test
public void testSetUser() {
Scale scale = new Scale();
Exception ex = assertThrows(IllegalArgumentException.class,() -> scale.setUserName("G"));
assertNotNull(ex);
assertEquals("Duplicate scale user name: G", ex.getMessage());
assertDoesNotThrow( () -> scale.setUserName("XYZ"));
assertEquals("XYZ", scale.getUserName());
}
@Test
public void testVetoUser() {
Scale scale = new Scale();
scale.addVetoableChangeListener("ScaleUserName", (PropertyChangeEvent evt) -> {
throw new PropertyVetoException("Test UserName Veto", evt);
});
Exception ex = assertThrows(PropertyVetoException.class, () -> scale.setUserName("QRS") );
assertNotNull(ex);
assertEquals("Test UserName Veto", ex.getMessage());
assertEquals("HO", scale.getUserName());
JUnitAppender.assertWarnMessage("The user name change for HO scale to QRS was rejected: Reason: Test UserName Veto");
}
@Test
public void testSetRatio() {
Scale scale = new Scale();
Exception ex = assertThrows(IllegalArgumentException.class,() -> scale.setScaleRatio(0.0));
assertNotNull(ex);
assertEquals("The scale ratio is less than 1", ex.getMessage());
assertDoesNotThrow( () -> scale.setScaleRatio(40.0));
assertEquals(.025, scale.getScaleFactor(), .001);
}
@Test
public void testVetoRatio() {
Scale scale = new Scale();
scale.addVetoableChangeListener("ScaleRatio", (PropertyChangeEvent evt) -> {
throw new PropertyVetoException("Test Ratio Veto", evt);
});
Exception ex = assertThrows(PropertyVetoException.class, () -> scale.setScaleRatio(123) );
assertNotNull(ex);
assertEquals("Test Ratio Veto", ex.getMessage());
assertEquals(87.1, scale.getScaleRatio(), .1);
JUnitAppender.assertWarnMessage("The ratio change for HO scale to 123.0 was rejected: Reason: Test Ratio Veto");
}
@BeforeEach
public void setUp() {
JUnitUtil.setUp();
JUnitUtil.resetProfileManager();
}
@AfterEach
public void tearDown() {
JUnitUtil.tearDown();
}
// private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(ScaleTest.class);
}