package org.springside.modules.utils.base;
import static org.assertj.core.api.Assertions.*;
import org.junit.Test;
import org.springside.modules.utils.base.SystemPropertiesUtil.PropertiesListener;
import org.springside.modules.utils.number.RandomUtil;
public class SystemPropertiesUtilTest {
@Test
public void systemProperty() {
String name = "ss.test" + RandomUtil.nextInt();
Boolean result0 = SystemPropertiesUtil.getBoolean(name);
assertThat(result0).isNull();
Boolean result1 = SystemPropertiesUtil.getBoolean(name, null);
assertThat(result1).isNull();
Boolean result3 = SystemPropertiesUtil.getBoolean(name, Boolean.TRUE);
assertThat(result3).isTrue();
System.setProperty(name, "true");
Boolean result5 = SystemPropertiesUtil.getBoolean(name, Boolean.FALSE);
assertThat(result5).isTrue();
System.clearProperty(name);
/// int
Integer result6 = SystemPropertiesUtil.getInteger(name);
assertThat(result6).isNull();
result6 = SystemPropertiesUtil.getInteger(name, 1);
assertThat(result6).isEqualTo(1);
System.setProperty(name, "2");
result6 = SystemPropertiesUtil.getInteger(name, 1);
assertThat(result6).isEqualTo(2);
System.clearProperty(name);
///// long
Long result7 = SystemPropertiesUtil.getLong(name);
assertThat(result7).isNull();
result7 = SystemPropertiesUtil.getLong(name, 1L);
assertThat(result7).isEqualTo(1L);
System.setProperty(name, "2");
result7 = SystemPropertiesUtil.getLong(name, 1L);
assertThat(result7).isEqualTo(2L);
System.clearProperty(name);
///// doulbe
Double result8 = SystemPropertiesUtil.getDouble(name);
assertThat(result8).isNull();
result8 = SystemPropertiesUtil.getDouble(name, 1.1);
assertThat(result8).isEqualTo(1.1);
System.setProperty(name, "2.1");
result8 = SystemPropertiesUtil.getDouble(name, 1.1);
assertThat(result8).isEqualTo(2.1);
System.clearProperty(name);
///// String
String result9 = SystemPropertiesUtil.getString(name);
assertThat(result9).isNull();
result9 = SystemPropertiesUtil.getString(name, "1.1");
assertThat(result9).isEqualTo("1.1");
System.setProperty(name, "2.1");
result9 = SystemPropertiesUtil.getString(name, "1.1");
assertThat(result9).isEqualTo("2.1");
System.clearProperty(name);
}
@Test
public void stringSystemProperty() {
String name = "ss.test" + RandomUtil.nextInt();
String envName = "ss_test" + RandomUtil.nextInt();
// default 值
String result = SystemPropertiesUtil.getString(name, envName, "123");
assertThat(result).isEqualTo("123");
// env值
String result2 = SystemPropertiesUtil.getString(name, "HOME", "123");
assertThat(result2).isNotEqualTo("123");
// system properties值
System.setProperty(name, "456");
String result3 = SystemPropertiesUtil.getString(name, envName, "123");
assertThat(result3).isEqualTo("456");
try {
// 非法字符
String result4 = SystemPropertiesUtil.getString(name, name, "123");
fail("should fail before");
} catch (Exception e) {
assertThat(e).isInstanceOf(IllegalArgumentException.class);
}
System.clearProperty(name);
}
@Test
public void intSystemProperty() {
String name = "ss.test" + RandomUtil.nextInt();
String envName = "ss_test" + RandomUtil.nextInt();
// default 值
int result = SystemPropertiesUtil.getInteger(name, envName, 123);
assertThat(result).isEqualTo(123);
// env值没有数字类型的,忽略
// system properties值
System.setProperty(name, "456");
int result3 = SystemPropertiesUtil.getInteger(name, envName, 123);
assertThat(result3).isEqualTo(456);
System.clearProperty(name);
}
@Test
public void longSystemProperty() {
String name = "ss.test" + RandomUtil.nextInt();
String envName = "ss_test" + RandomUtil.nextInt();
// default 值
long result = SystemPropertiesUtil.getLong(name, envName, 123L);
assertThat(result).isEqualTo(123L);
// env值没有数字类型的,忽略
// system properties值
System.setProperty(name, "456");
long result3 = SystemPropertiesUtil.getLong(name, envName, 123L);
assertThat(result3).isEqualTo(456L);
System.clearProperty(name);
}
@Test
public void doubleSystemProperty() {
String name = "ss.test" + RandomUtil.nextInt();
String envName = "ss_test" + RandomUtil.nextInt();
// default 值
double result = SystemPropertiesUtil.getDouble(name, envName, 123d);
assertThat(result).isEqualTo(123d);
// env值没有数字类型的,忽略
// system properties值
System.setProperty(name, "456");
double result3 = SystemPropertiesUtil.getDouble(name, envName, 123d);
assertThat(result3).isEqualTo(456d);
System.clearProperty(name);
}
@Test
public void booleanSystemProperty() {
String name = "ss.test" + RandomUtil.nextInt();
String envName = "ss_test" + RandomUtil.nextInt();
// default 值
boolean result = SystemPropertiesUtil.getBoolean(name, envName, true);
assertThat(result).isTrue();
// env值没有boolean类型的,忽略
// system properties值
System.setProperty(name, "true");
boolean result3 = SystemPropertiesUtil.getBoolean(name, envName, false);
assertThat(result3).isTrue();
System.clearProperty(name);
}
@Test
public void listenableProperties() {
String name = "ss.test" + RandomUtil.nextInt();
TestPropertiesListener listener = new TestPropertiesListener(name);
SystemPropertiesUtil.registerSystemPropertiesListener(listener);
System.setProperty(name, "haha");
assertThat(listener.newValue).isEqualTo("haha");
}
public static class TestPropertiesListener extends PropertiesListener {
public TestPropertiesListener(String propertyName) {
super(propertyName);
}
public String newValue;
@Override
public void onChange(String propertyName, String value) {
newValue = value;
}
};
}