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()); + } /**
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]