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

185 lines
5.5 KiB
Java

package jmri.beans;
import static org.assertj.core.api.Assertions.assertThat;
import java.beans.PropertyChangeEvent;
import java.io.IOException;
import java.nio.file.Path;
import jmri.profile.NullProfile;
import jmri.profile.Profile;
import jmri.util.JUnitUtil;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.io.TempDir;
/**
* @author Randall Wood Copyright 2020
*/
public class PreferencesBeanTest {
@TempDir
Path profilePath;
private Profile profile;
private PreferencesBeanImpl bean;
private boolean changed;
@BeforeEach
public void setUp() throws IOException {
JUnitUtil.setUp();
changed = false;
profile = new NullProfile(profilePath.toFile());
bean = new PreferencesBeanImpl(profile);
}
@AfterEach
public void tearDown() {
JUnitUtil.tearDown();
}
@Test
public void testGetProfile() {
assertThat(bean.getProfile()).isEqualTo(profile);
}
@Test
public void testSetRestartRequired() {
bean.addPropertyChangeListener(PreferencesBean.RESTART_REQUIRED, (e) -> changed = true);
assertThat(changed).isFalse();
assertThat(bean.isRestartRequired()).isFalse();
bean.setRestartRequired();
assertThat(changed).isTrue();
assertThat(bean.isRestartRequired()).isTrue();
changed = false;
bean.setRestartRequired();
assertThat(changed).isFalse();
assertThat(bean.isRestartRequired()).isTrue();
}
@Test
public void testSetIsDirty() {
bean.addPropertyChangeListener(PreferencesBean.DIRTY, (e) -> changed = true);
assertThat(changed).isFalse();
assertThat(bean.isDirty()).isFalse();
bean.setIsDirty(true);
assertThat(changed).isTrue();
assertThat(bean.isDirty()).isTrue();
changed = false;
bean.setIsDirty(false);
assertThat(changed).isTrue();
assertThat(bean.isDirty()).isFalse();
changed = false;
bean.setIsDirty(false);
assertThat(changed).isFalse();
assertThat(bean.isDirty()).isFalse();
}
@Test
public void testFirePropertyChange_String_boolean_boolean() {
bean.addPropertyChangeListener("boolean", (e) -> changed = true);
assertThat(changed).isFalse();
assertThat(bean.b).isFalse();
assertThat(bean.isDirty()).isFalse();
bean.setBoolean(true);
assertThat(changed).isTrue();
assertThat(bean.b).isTrue();
assertThat(bean.isDirty()).isTrue();
changed = false;
bean.setIsDirty(false);
bean.setBoolean(true);
assertThat(changed).isFalse();
assertThat(bean.b).isTrue();
assertThat(bean.isDirty()).isFalse();
changed = false;
bean.setBoolean(false);
assertThat(changed).isTrue();
assertThat(bean.b).isFalse();
}
@Test
public void testFirePropertyChange_String_int_int() {
bean.addPropertyChangeListener("int", (e) -> changed = true);
assertThat(changed).isFalse();
assertThat(bean.i).isEqualTo(0);
assertThat(bean.isDirty()).isFalse();
bean.setInt(1);
assertThat(bean.isDirty()).isTrue();
assertThat(changed).isTrue();
assertThat(bean.i).isEqualTo(1);
changed = false;
bean.setIsDirty(false);
bean.setInt(1);
assertThat(changed).isFalse();
assertThat(bean.i).isEqualTo(1);
assertThat(bean.isDirty()).isFalse();
changed = false;
bean.setInt(0);
assertThat(changed).isTrue();
assertThat(bean.i).isEqualTo(0);
}
@Test
public void testFirePropertyChange_String_Object_Object() {
bean.addPropertyChangeListener("Object", (e) -> changed = true);
assertThat(changed).isFalse();
assertThat(bean.o).isNull();
assertThat(bean.isDirty()).isFalse();
bean.setObject(profilePath);
assertThat(bean.isDirty()).isTrue();
assertThat(changed).isTrue();
assertThat(bean.o).isEqualTo(profilePath);
changed = false;
bean.setIsDirty(false);
bean.setObject(profilePath);
assertThat(changed).isFalse();
assertThat(bean.o).isEqualTo(profilePath);
assertThat(bean.isDirty()).isFalse();
changed = false;
bean.setObject(null);
assertThat(changed).isTrue();
assertThat(bean.o).isNull();
}
@Test
public void testFirePropertyChange_PropertyChangeEvent() {
bean.addPropertyChangeListener("Event", e -> changed = true);
assertThat(changed).isFalse();
assertThat(bean.isDirty()).isFalse();
bean.firePropertyChange(new PropertyChangeEvent(bean, "Event", null, null));
assertThat(changed).isTrue();
assertThat(bean.isDirty()).isTrue();
}
private static class PreferencesBeanImpl extends PreferencesBean {
private PreferencesBeanImpl(Profile prfl) {
super(prfl);
}
boolean b = false;
int i = 0;
Object o = null;
public void setBoolean(boolean b) {
boolean old = this.b;
this.b = b;
firePropertyChange("boolean", old, b);
}
public void setInt(int i) {
int old = this.i;
this.i = i;
firePropertyChange("int", old, i);
}
public void setObject(Object o) {
Object old = this.o;
this.o = o;
firePropertyChange("Object", old, o);
}
}
}