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

125 lines
4.0 KiB
Java

package jmri.beans;
import static org.assertj.core.api.Assertions.assertThat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.junit.jupiter.api.*;
import jmri.util.JUnitUtil;
/**
* @author Randall Wood Copyright 2020
*/
public class ArbitraryBeanTest {
private ArbitraryBeanImpl bean = null;
private static final String AP = "arbitraryProperty";
private static final String DP = "definedProperty";
private static final String AIP = "arbitraryIndexedProperty";
private static final String DIP = "definedIndexedProperty";
@BeforeEach
public void setUp() {
JUnitUtil.setUp();
bean = new ArbitraryBeanImpl();
}
@AfterEach
public void tearDown() {
bean = null;
JUnitUtil.tearDown();
}
@Test
public void testSetProperty() {
Assertions.assertNotNull(bean);
assertThat(bean).hasFieldOrProperty(DP);
assertThat(bean.hasProperty(AP)).isFalse();
assertThat(bean.getDefinedProperty()).isNull();
assertThat(bean.getProperty(AP)).isNull();
assertThat(bean.getProperty(DP)).isNull();
bean.setProperty(DP, "set");
assertThat(bean.getDefinedProperty()).isEqualTo("set");
assertThat(bean.getProperty(DP)).isEqualTo("set");
bean.setProperty(AP, null);
assertThat(bean.hasProperty(DP)).isTrue();
assertThat(bean.getProperty(AP)).isNull();
bean.setProperty(AP, "set");
assertThat(bean.getProperty(DP)).isEqualTo("set");
}
@Test
public void testSetIndexedProperty() {
Assertions.assertNotNull(bean);
assertThat(bean.hasIndexedProperty(DIP)).isTrue();
assertThat(bean.getDefinedIndexedProperty()).isEmpty();
assertThat(bean.hasIndexedProperty(AIP)).isFalse();
bean.setIndexedProperty(DIP, 0, "set");
assertThat(bean.getDefinedIndexedProperty(0)).isEqualTo("set");
assertThat(bean.getIndexedProperty(DIP, 0)).isEqualTo("set");
assertThat(bean.hasIndexedProperty(AIP)).isFalse();
bean.setIndexedProperty(AIP, 0, null);
assertThat(bean.hasIndexedProperty(AIP)).isTrue();
assertThat(bean.getIndexedProperty(AIP, 0)).isNull();
bean.setIndexedProperty(AIP, 0, "set");
assertThat(bean.getIndexedProperty(AIP, 0)).isEqualTo("set");
}
@Test
public void testGetPropertyNames() {
Assertions.assertNotNull(bean);
assertThat(bean.getPropertyNames())
.contains(DP, DIP)
.doesNotContain(AP, AIP);
bean.setProperty(AP, null);
assertThat(bean.getPropertyNames())
.contains(DP, DIP, AP)
.doesNotContain(AIP);
bean.setIndexedProperty(AIP, 0, null);
assertThat(bean.getPropertyNames())
.contains(DP, DIP, AP, AIP);
}
protected static class ArbitraryBeanImpl extends ArbitraryBean {
public String definedProperty;
public final List<String> definedIndexedProperty = new ArrayList<>();
public String getDefinedProperty() {
return definedProperty;
}
public void setDefinedProperty(String value) {
definedProperty = value;
}
public String[] getDefinedIndexedProperty() {
return definedIndexedProperty.toArray(new String[definedIndexedProperty.size()]);
}
public String getDefinedIndexedProperty(int i) {
return definedIndexedProperty.get(i);
}
public void setDefinedIndexedProperty(String[] values) {
definedIndexedProperty.clear();
definedIndexedProperty.addAll(Arrays.asList(values));
}
/*
* Throws IndexOutOfBoundsException if index > size.
*/
public void setDefinedIndexedProperty(int i, String value) {
if (i < definedIndexedProperty.size()) {
definedIndexedProperty.set(i, value);
} else {
definedIndexedProperty.add(i, value);
}
}
}
}