Add tests on instance configuration with complex types and new array syntax.
git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@675571 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/ipojo/tests/tests.core.configuration/src/main/java/org/apache/felix/ipojo/test/scenarios/component/ComplexConfiguration.java b/ipojo/tests/tests.core.configuration/src/main/java/org/apache/felix/ipojo/test/scenarios/component/ComplexConfiguration.java
new file mode 100644
index 0000000..f460048
--- /dev/null
+++ b/ipojo/tests/tests.core.configuration/src/main/java/org/apache/felix/ipojo/test/scenarios/component/ComplexConfiguration.java
@@ -0,0 +1,38 @@
+package org.apache.felix.ipojo.test.scenarios.component;
+
+import java.util.Dictionary;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+
+import org.apache.felix.ipojo.test.scenarios.configuration.service.CheckService;
+
+public class ComplexConfiguration implements CheckService {
+
+ private List m_list;
+ private Map m_map;
+ private Dictionary m_dict;
+ private String[] m_array;
+
+ private List m_complexList;
+ private Map m_complexMap;
+ private Object[] m_complexArray;
+
+ public boolean check() {
+ return true;
+ }
+
+
+ public Properties getProps() {
+ Properties props = new Properties();
+ props.put("list", m_list);
+ props.put("map", m_map);
+ props.put("dict", m_dict);
+ props.put("array", m_array);
+ props.put("complex-list", m_complexList);
+ props.put("complex-map", m_complexMap);
+ props.put("complex-array", m_complexArray);
+ return props;
+ }
+
+}
diff --git a/ipojo/tests/tests.core.configuration/src/main/java/org/apache/felix/ipojo/test/scenarios/configuration/ConfigurationTestSuite.java b/ipojo/tests/tests.core.configuration/src/main/java/org/apache/felix/ipojo/test/scenarios/configuration/ConfigurationTestSuite.java
index 60796bc..80c919d 100644
--- a/ipojo/tests/tests.core.configuration/src/main/java/org/apache/felix/ipojo/test/scenarios/configuration/ConfigurationTestSuite.java
+++ b/ipojo/tests/tests.core.configuration/src/main/java/org/apache/felix/ipojo/test/scenarios/configuration/ConfigurationTestSuite.java
@@ -34,7 +34,7 @@
ots.addTestSuite(TestBothProperties.class);
ots.addTestSuite(TestSuperMethodProperties.class);
ots.addTestSuite(ManagedServiceConfigurableProperties.class);
-
+ ots.addTestSuite(TestComplexProperties.class);
return ots;
}
diff --git a/ipojo/tests/tests.core.configuration/src/main/java/org/apache/felix/ipojo/test/scenarios/configuration/TestComplexProperties.java b/ipojo/tests/tests.core.configuration/src/main/java/org/apache/felix/ipojo/test/scenarios/configuration/TestComplexProperties.java
new file mode 100644
index 0000000..f24cc59
--- /dev/null
+++ b/ipojo/tests/tests.core.configuration/src/main/java/org/apache/felix/ipojo/test/scenarios/configuration/TestComplexProperties.java
@@ -0,0 +1,189 @@
+package org.apache.felix.ipojo.test.scenarios.configuration;
+
+import java.util.Dictionary;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
+import org.apache.felix.ipojo.test.scenarios.configuration.service.CheckService;
+import org.apache.felix.ipojo.test.scenarios.util.Utils;
+import org.osgi.framework.ServiceReference;
+
+public class TestComplexProperties extends OSGiTestCase {
+
+ private ServiceReference m_ref;
+ private CheckService m_check;
+
+ public void setUp() {
+ m_ref = Utils.getServiceReferenceByName(context, CheckService.class.getName(), "complex");
+ assertNotNull("Complex service availability", m_ref);
+ m_check = (CheckService) context.getService(m_ref);
+ }
+
+ public void tearDown() {
+ m_check = null;
+ context.ungetService(m_ref);
+ }
+
+ public void testArray() {
+ String[] array = (String[]) m_check.getProps().get("array");
+ assertEquals("Array size", 2, array.length);
+ assertEquals("Array[0]", "a", array[0]);
+ assertEquals("Array[1]", "b", array[1]);
+ }
+
+ public void testList() {
+ List list = (List) m_check.getProps().get("list");
+ assertEquals("List size", 2, list.size());
+ assertEquals("List[0]", "a", list.get(0));
+ assertEquals("List[1]", "b", list.get(1));
+ }
+
+ public void testMap() {
+ Map map = (Map) m_check.getProps().get("map");
+ assertEquals("Map size", 2, map.size());
+ assertEquals("Map[a]", "a", map.get("a"));
+ assertEquals("Map[b]", "b", map.get("b"));
+ }
+
+ public void testDictionary() {
+ Dictionary dict = (Dictionary) m_check.getProps().get("dict");
+ assertEquals("Map size", 2, dict.size());
+ assertEquals("Map[a]", "a", dict.get("a"));
+ assertEquals("Map[b]", "b", dict.get("b"));
+ }
+
+ public void testComplexArray() {
+ Object[] array = (Object[]) m_check.getProps().get("complex-array");
+ assertEquals("Array size", 2, array.length);
+ assertTrue("Array[0] type", array[0] instanceof List);
+ assertTrue("Array[1] type", array[1] instanceof List);
+ List list = (List) array[0];
+ assertEquals("List size", 2, list.size());
+ assertEquals("List[0]", "a", list.get(0));
+ assertEquals("List[1]", "b", list.get(1));
+ list = (List) array[1];
+ assertEquals("List size - 2", 2, list.size());
+ assertEquals("List[0] - 2", "c", list.get(0));
+ assertEquals("List[1] - 2", "d", list.get(1));
+ }
+
+ public void testComplexList() {
+ List list = (List) m_check.getProps().get("complex-list");
+ assertEquals("List size", 2, list.size());
+ assertTrue("List[0] type", list.get(0) instanceof List);
+ assertTrue("List[1] type", list.get(1) instanceof List);
+ List list1 = (List) list.get(0);
+ assertEquals("List size - 1", 2, list1.size());
+ assertEquals("List[0] - 1", "a", list1.get(0));
+ assertEquals("List[1] - 1", "b", list1.get(1));
+ list1 = (List) list.get(1);
+ assertEquals("List size - 2", 2, list1.size());
+ assertEquals("List[0] - 2", "c", list1.get(0));
+ assertEquals("List[1] - 2", "d", list1.get(1));
+ }
+
+ public void testComplexMap() {
+ Map map = (Map) m_check.getProps().get("complex-map");
+ assertEquals("List size", 2, map.size());
+ assertTrue("List[0] type", map.get("a") instanceof List);
+ assertTrue("List[1] type", map.get("b") instanceof List);
+ List list = (List) map.get("a");
+ assertEquals("List size - 1", 2, list.size());
+ assertEquals("List[0] - 1", "a", list.get(0));
+ assertEquals("List[1] - 1", "b", list.get(1));
+ list = (List) map.get("b");
+ assertEquals("List size - 2", 2, list.size());
+ assertEquals("List[0] - 2", "c", list.get(0));
+ assertEquals("List[1] - 2", "d", list.get(1));
+ }
+
+ public void testServiceArray() {
+ String[] array = (String[]) m_ref.getProperty("array");
+ assertEquals("Array size", 2, array.length);
+ assertEquals("Array[0]", "a", array[0]);
+ assertEquals("Array[1]", "b", array[1]);
+ }
+
+ public void testServiceList() {
+ List list = (List) m_ref.getProperty("list");
+ assertEquals("List size", 2, list.size());
+ assertEquals("List[0]", "a", list.get(0));
+ assertEquals("List[1]", "b", list.get(1));
+ }
+
+ public void testServiceMap() {
+ Map map = (Map) m_ref.getProperty("map");
+ assertEquals("Map size", 2, map.size());
+ assertEquals("Map[a]", "a", map.get("a"));
+ assertEquals("Map[b]", "b", map.get("b"));
+ }
+
+ public void testServiceDictionary() {
+ Dictionary dict = (Dictionary) m_ref.getProperty("dict");
+ assertEquals("Map size", 2, dict.size());
+ assertEquals("Map[a]", "a", dict.get("a"));
+ assertEquals("Map[b]", "b", dict.get("b"));
+ }
+
+ public void testServiceComplexArray() {
+ Object[] array = (Object[]) m_ref.getProperty("complex-array");
+ assertEquals("Array size", 2, array.length);
+ assertTrue("Array[0] type", array[0] instanceof List);
+ assertTrue("Array[1] type", array[1] instanceof List);
+ List list = (List) array[0];
+ assertEquals("List size", 2, list.size());
+ assertEquals("List[0]", "a", list.get(0));
+ assertEquals("List[1]", "b", list.get(1));
+ list = (List) array[1];
+ assertEquals("List size - 2", 2, list.size());
+ assertEquals("List[0] - 2", "c", list.get(0));
+ assertEquals("List[1] - 2", "d", list.get(1));
+ }
+
+ public void testServiceComplexList() {
+ List list = (List) m_ref.getProperty("complex-list");
+ assertEquals("List size", 2, list.size());
+ assertTrue("List[0] type", list.get(0) instanceof List);
+ assertTrue("List[1] type", list.get(1) instanceof List);
+ List list1 = (List) list.get(0);
+ assertEquals("List size - 1", 2, list1.size());
+ assertEquals("List[0] - 1", "a", list1.get(0));
+ assertEquals("List[1] - 1", "b", list1.get(1));
+ list1 = (List) list.get(1);
+ assertEquals("List size - 2", 2, list1.size());
+ assertEquals("List[0] - 2", "c", list1.get(0));
+ assertEquals("List[1] - 2", "d", list1.get(1));
+ }
+
+ public void testServiceComplexMap() {
+ Map map = (Map) m_ref.getProperty("complex-map");
+ assertEquals("List size", 2, map.size());
+ assertTrue("List[0] type", map.get("a") instanceof List);
+ assertTrue("List[1] type", map.get("b") instanceof List);
+ List list = (List) map.get("a");
+ assertEquals("List size - 1", 2, list.size());
+ assertEquals("List[0] - 1", "a", list.get(0));
+ assertEquals("List[1] - 1", "b", list.get(1));
+ list = (List) map.get("b");
+ assertEquals("List size - 2", 2, list.size());
+ assertEquals("List[0] - 2", "c", list.get(0));
+ assertEquals("List[1] - 2", "d", list.get(1));
+ }
+
+ public void testServiceEmptyArray() {
+ String[] array = (String[]) m_ref.getProperty("empty-array");
+ assertEquals("Array size", 0, array.length);
+ }
+
+ public void testServiceEmptyList() {
+ List list = (List) m_ref.getProperty("empty-list");
+ assertEquals("List size", 0, list.size());
+ }
+
+ public void testServiceEmptyMap() {
+ Map map = (Map) m_ref.getProperty("empty-map");
+ assertEquals("Map size", 0, map.size());
+ }
+
+}
diff --git a/ipojo/tests/tests.core.configuration/src/main/resources/metadata.xml b/ipojo/tests/tests.core.configuration/src/main/resources/metadata.xml
index b389cd5..f7f012c 100644
--- a/ipojo/tests/tests.core.configuration/src/main/resources/metadata.xml
+++ b/ipojo/tests/tests.core.configuration/src/main/resources/metadata.xml
@@ -145,4 +145,83 @@
</properties>
</component>
+ <component
+ classname="org.apache.felix.ipojo.test.scenarios.component.ComplexConfiguration">
+ <provides>
+ <property name="array" field="m_array"/>
+ <property name="complex-array" field="m_complexArray"/>
+ <property name="list" field="m_list"/>
+ <property name="complex-list" field="m_complexList"/>
+ <property name="map" field="m_map"/>
+ <property name="complex-map" field="m_complexMap"/>
+ <property name="dict" field="m_dict"/>
+ <property name="empty-array" type="String[]"/>
+ <property name="empty-map" type="java.util.HashMap"/>
+ <property name="empty-list" type="java.util.List"/>
+ </provides>
+ <properties>
+ <property name="array" field="m_array"/>
+ <property name="complex-array" field="m_complexArray"/>
+ <property name="list" field="m_list"/>
+ <property name="complex-list" field="m_complexList"/>
+ <property name="map" field="m_map"/>
+ <property name="complex-map" field="m_complexMap"/>
+ <property name="dict" field="m_dict"/>
+ </properties>
+ </component>
+
+ <instance component="org.apache.felix.ipojo.test.scenarios.component.ComplexConfiguration" name="complex">
+ <property name="array" type="array">
+ <property value="a"/>
+ <property value="b"/>
+ </property>
+ <property name="list" type="list">
+ <property value="a"/>
+ <property value="b"/>
+ </property>
+ <property name="dict" type="dictionary">
+ <property name="a" value="a"/>
+ <property name="b" value="b"/>
+ </property>
+ <property name="map" type="map">
+ <property name="a" value="a"/>
+ <property name="b" value="b"/>
+ </property>
+ <property name="complex-array" type="array">
+ <property type="list">
+ <property value="a"/>
+ <property value="b"/>
+ </property>
+ <property type="list">
+ <property value="c"/>
+ <property value="d"/>
+ </property>
+ </property>
+ <property name="complex-list" type="list">
+ <property type="list">
+ <property value="a"/>
+ <property value="b"/>
+ </property>
+ <property type="list">
+ <property value="c"/>
+ <property value="d"/>
+ </property>
+ </property>
+ <property name="complex-map" type="map">
+ <property name="a" type="list">
+ <property value="a"/>
+ <property value="b"/>
+ </property>
+ <property name="b" type="list">
+ <property value="c"/>
+ <property value="d"/>
+ </property>
+ </property>
+ <property name="empty-array" type="array"/>
+ <property name="empty-list" type="list"/>
+ <property name="empty-map" type="map"/>
+ </instance>
+
+
+
</ipojo>
diff --git a/ipojo/tests/tests.core.manipulation/src/main/resources/metadata.xml b/ipojo/tests/tests.core.manipulation/src/main/resources/metadata.xml
index 9f386f3..6d73ce8 100644
--- a/ipojo/tests/tests.core.manipulation/src/main/resources/metadata.xml
+++ b/ipojo/tests/tests.core.manipulation/src/main/resources/metadata.xml
@@ -30,8 +30,8 @@
<property name="boolean" field="boolProp" value="false" />
<property name="string" field="strProp" value="foo" />
<property name="strAProp" field="strAProp"
- value="{foo, bar}" />
- <property name="intAProp" field="intAProp" value="{ 1,2,3}" />
+ value="[foo, bar]" />
+ <property name="intAProp" field="intAProp" value="[ 1,2,3]" />
</provides>
</component>