You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by rd...@apache.org on 2003/09/28 16:18:31 UTC
cvs commit: jakarta-commons/betwixt/src/test/org/apache/commons/betwixt TestBeanReader.java
rdonkin 2003/09/28 07:18:31
Modified: betwixt/src/test/org/apache/commons/betwixt
TestBeanReader.java
Log:
Added some tests for a bug in the double linked collection reading stuff. Commented the failures out for now but will retry once the reader refactoring has been completed.
Revision Changes Path
1.18 +65 -0 jakarta-commons/betwixt/src/test/org/apache/commons/betwixt/TestBeanReader.java
Index: TestBeanReader.java
===================================================================
RCS file: /home/cvs/jakarta-commons/betwixt/src/test/org/apache/commons/betwixt/TestBeanReader.java,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -r1.17 -r1.18
--- TestBeanReader.java 14 Aug 2003 20:18:39 -0000 1.17
+++ TestBeanReader.java 28 Sep 2003 14:18:31 -0000 1.18
@@ -75,6 +75,7 @@
import java.util.Calendar;
import java.util.Locale;
import java.util.TimeZone;
+import java.util.ArrayList;
import java.text.ParseException;
import java.text.SimpleDateFormat;
@@ -97,6 +98,8 @@
import org.apache.commons.betwixt.strategy.HyphenatedNameMapper;
import org.apache.commons.betwixt.strategy.ConvertUtilsObjectStringConverter;
+import org.apache.commons.collections.CollectionUtils;
+
import org.apache.commons.digester.Rule;
import org.apache.commons.digester.ExtendedBaseRules;
@@ -693,6 +696,68 @@
assertEquals("Bad address (10)", "Shipley", address.getCity());
assertEquals("Bad address (11)", "United Kingdom", address.getCountry());
assertEquals("Bad address (12)", "BD18 2BJ", address.getCode());
+ }
+
+ public void testIndirectReference() throws Exception
+ {
+ Tweedledum dum = new Tweedledum();
+ Tweedledee dee = new Tweedledee(dum);
+ StringWriter out = new StringWriter();
+ out.write("<?xml version='1.0'?>");
+ BeanWriter writer = new BeanWriter(out);
+ writer.setWriteIDs(false);
+ writer.write(dee);
+ String xml = "<?xml version='1.0'?><Tweedledee><name>Tweedledee</name>"
+ + "<brother><name>Tweedledum</name></brother></Tweedledee>";
+ xmlAssertIsomorphic(parseString(xml), parseString(out) , true);
+
+ BeanReader reader = new BeanReader();
+
+ reader.setMatchIDs(false);
+ reader.registerBeanClass(Tweedledee.class);
+ Tweedledee bean = (Tweedledee) reader.parse(new StringReader(xml));
+ assertNotNull(bean.getBrother());
+ }
+
+ public void _testDoubleLinkedCollectionRead() throws Exception
+ {
+ String xml = "<?xml version='1.0'?><DOUBLE_LINKED_PARENT_BEAN>"
+ + "<NAME>Cronus</NAME>"
+ + "<CHILDREN>"
+ + "<CHILD><NAME>Hades</NAME></CHILD>"
+ + "<CHILD><NAME>Hera</NAME></CHILD>"
+ + "<CHILD><NAME>Hestia</NAME></CHILD>"
+ + "<CHILD><NAME>Demeter</NAME></CHILD>"
+ + "<CHILD><NAME>Poseidon</NAME></CHILD>"
+ + "<CHILD><NAME>Zeus</NAME></CHILD>"
+ + "</CHILDREN></DOUBLE_LINKED_PARENT_BEAN>";
+
+ BeanReader reader = new BeanReader();
+ reader.getXMLIntrospector().setElementNameMapper(new HyphenatedNameMapper(true, "_"));
+ reader.registerBeanClass(DoubleLinkedParentBean.class);
+ DoubleLinkedParentBean bean = (DoubleLinkedParentBean) reader.parse(new StringReader(xml));
+
+ assertNotNull("Bean read", bean);
+ assertEquals("Cronus", "Parent name", bean.getName());
+ assertEquals("Number of children", 6, bean.getSize());
+
+ ArrayList list = new ArrayList();
+ CollectionUtils.addAll(list, bean.getChildren());
+
+ DoubleLinkedChildBean childZero = (DoubleLinkedChildBean) list.get(0);
+ DoubleLinkedChildBean childOne = (DoubleLinkedChildBean) list.get(1);
+ DoubleLinkedChildBean childTwo = (DoubleLinkedChildBean) list.get(2);
+ DoubleLinkedChildBean childThree = (DoubleLinkedChildBean) list.get(3);
+ DoubleLinkedChildBean childFour = (DoubleLinkedChildBean) list.get(4);
+ DoubleLinkedChildBean childFive = (DoubleLinkedChildBean) list.get(5);
+
+ assertEquals("Child name zero", "Hades", childZero.getName());
+ assertEquals("Child name one", "Hera", childZero.getName());
+ assertEquals("Child name two", "Hestia", childZero.getName());
+ assertEquals("Child name three", "Demeter", childZero.getName());
+ assertEquals("Child name four", "Poseidon", childZero.getName());
+ assertEquals("Child name five", "Zeus", childZero.getName());
+
}
/**