Skip to content
Snippets Groups Projects
Commit 53331d4b authored by buczekp's avatar buczekp
Browse files

[LMS-1767] improved escaping of sets and added new tests

SVN: 18754
parent ba2f738b
No related branches found
No related tags found
No related merge requests found
......@@ -19,7 +19,12 @@ package ch.systemsx.cisd.common.utilities;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.TreeSet;
import org.testng.AssertJUnit;
import org.testng.annotations.Test;
......@@ -31,7 +36,7 @@ import ch.systemsx.cisd.common.utilities.ReflectionStringTraverser.ReflectionFie
*
* @author Tomasz Pylak
*/
public class ReflectionPrimitiveFieldTraverserTest extends AssertJUnit
public class ReflectionFieldTraverserTest extends AssertJUnit
{
private static class ReflectionStringCapitalizerVisitor implements ReflectionFieldVisitor
{
......@@ -59,15 +64,20 @@ public class ReflectionPrimitiveFieldTraverserTest extends AssertJUnit
private List<TestClass> list;
private Set<TestClass> set;
protected TestClass[] array;
private List<String> stringList;
private Set<String> stringSet;
protected String[] stringArray;
public TestClass complexChild;
private String text;
}
@Test
......@@ -75,12 +85,17 @@ public class ReflectionPrimitiveFieldTraverserTest extends AssertJUnit
{
TestClass object = create("object");
object.list = new ArrayList<TestClass>(Arrays.asList(create("list1"), create("list2")));
object.set =
new LinkedHashSet<TestClass>(Arrays.asList(create("set1"), create("set2"),
create("set3")));
object.array = new TestClass[]
{ create("array1"), create("array2") };
object.complexChild = create("complexChild");
object.stringList = new ArrayList<String>(Arrays.asList("stringList1"));
object.stringList = new ArrayList<String>(Arrays.asList("stringList1", "stringList2"));
object.stringSet =
new TreeSet<String>(Arrays.asList("stringSet2", "stringSet1", "stringSet3"));
object.stringArray = new String[]
{ "stringArray1" };
{ "stringArray1", "stringArray2" };
ReflectionStringTraverser.traverseDeep(object, new ReflectionStringCapitalizerVisitor());
......@@ -90,20 +105,83 @@ public class ReflectionPrimitiveFieldTraverserTest extends AssertJUnit
assertEquals("LIST1", object.list.get(0).text);
assertEquals("LIST2", object.list.get(1).text);
assertEquals(3, object.set.size());
List<TestClass> setAsList = new ArrayList<TestClass>(object.set);
assertEquals("SET1", setAsList.get(0).text);
assertEquals("SET2", setAsList.get(1).text);
assertEquals("SET3", setAsList.get(2).text);
assertEquals(2, object.array.length);
assertEquals("ARRAY1", object.array[0].text);
assertEquals("ARRAY2", object.array[1].text);
assertEquals(1, object.stringList.size());
assertEquals(2, object.stringList.size());
assertEquals("STRINGLIST1", object.stringList.get(0));
assertEquals("STRINGLIST2", object.stringList.get(1));
assertEquals(1, object.stringArray.length);
// escaped set should preserved order
assertEquals(3, object.stringSet.size());
List<String> stringSetAsList = new ArrayList<String>(object.stringSet);
assertEquals("STRINGSET1", stringSetAsList.get(0));
assertEquals("STRINGSET2", stringSetAsList.get(1));
assertEquals("STRINGSET3", stringSetAsList.get(2));
assertEquals(2, object.stringArray.length);
assertEquals("STRINGARRAY1", object.stringArray[0]);
assertEquals("STRINGARRAY2", object.stringArray[1]);
assertEquals("COMPLEXCHILD", object.complexChild.text);
assertEquals("static", TestStaticFinal.dummyStaticString);
}
// FIXME [LMS-1893] lists of strings are not handled properly
@Test(groups = "broken")
public void testTraverseListOfStrings()
{
List<String> stringList = new ArrayList<String>(Arrays.asList("el1", "el2", "el3"));
ReflectionStringTraverser
.traverseDeep(stringList, new ReflectionStringCapitalizerVisitor());
assertEquals(3, stringList.size());
assertEquals("EL1", stringList.get(0));
assertEquals("EL2", stringList.get(1));
assertEquals("EL3", stringList.get(2));
}
// FIXME [LMS-1893] sets of strings are not handled properly
@Test(groups = "broken")
public void testTraverseSetOfStrings()
{
Set<String> stringSet = new LinkedHashSet<String>(Arrays.asList("el1", "el2", "el3"));
ReflectionStringTraverser.traverseDeep(stringSet, new ReflectionStringCapitalizerVisitor());
List<String> stringList = new ArrayList<String>(stringSet);
assertEquals(3, stringList.size());
assertEquals("EL1", stringList.get(0));
assertEquals("EL2", stringList.get(1));
assertEquals("EL3", stringList.get(2));
}
// FIXME [LMS-1893] currently only values are escaped - there should be special handling of maps
@Test(groups = "broken")
public void testTraverseMapWithStrings()
{
List<String> stringList = new ArrayList<String>(Arrays.asList("el1", "el2", "el3"));
TestClass testClass = create("text");
Map<TestClass, List<String>> stringMap = new HashMap<TestClass, List<String>>();
stringMap.put(testClass, stringList);
ReflectionStringTraverser.traverseDeep(stringMap, new ReflectionStringCapitalizerVisitor());
assertEquals(1, stringMap.entrySet().size());
TestClass key = stringMap.keySet().iterator().next();
List<String> value = stringMap.values().iterator().next();
assertEquals("TEXT", key.text);
assertEquals(3, value.size());
assertEquals("EL1", value.get(0));
assertEquals("EL2", value.get(1));
assertEquals("EL3", value.get(2));
}
private static TestClass create(String value)
{
TestClass object = new TestClass();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment