package org.skywalking.apm.util;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import java.util.Properties;
/**
* Created by wusheng on 2017/2/27.
*/
public class ConfigInitializerTest {
@Test
public void testInitialize() throws IllegalAccessException {
Properties properties = new Properties();
properties.put("Level1Object.strAttr".toLowerCase(), "stringValue");
properties.put("Level1Object.Level2Object.intAttr".toLowerCase(), "1000");
properties.put("Level1Object.Level2Object.longAttr".toLowerCase(), "1000");
properties.put("Level1Object.Level2Object.booleanAttr".toLowerCase(), "true");
ConfigInitializer.initialize(properties, TestPropertiesObject.class);
Assert.assertEquals("stringValue", TestPropertiesObject.Level1Object.strAttr);
Assert.assertEquals(1000, TestPropertiesObject.Level1Object.Level2Object.intAttr);
Assert.assertEquals(1000L, TestPropertiesObject.Level1Object.Level2Object.longAttr);
Assert.assertEquals(true, TestPropertiesObject.Level1Object.Level2Object.booleanAttr);
}
@Test
public void testInitializeWithUnsupportedConfig() throws IllegalAccessException {
Properties properties = new Properties();
properties.put("Level1Object.noExistAttr".toLowerCase(), "stringValue");
ConfigInitializer.initialize(properties, TestPropertiesObject.class);
Assert.assertNull(TestPropertiesObject.Level1Object.strAttr);
}
@Before
public void clear() {
TestPropertiesObject.Level1Object.strAttr = null;
TestPropertiesObject.Level1Object.Level2Object.intAttr = 0;
TestPropertiesObject.Level1Object.Level2Object.longAttr = 0;
TestPropertiesObject.Level1Object.Level2Object.booleanAttr = false;
}
public static class TestPropertiesObject {
public static class Level1Object {
public static String strAttr = null;
public static class Level2Object {
public static int intAttr = 0;
public static long longAttr;
public static boolean booleanAttr;
}
}
}
}