[Practicalxml-commits] SF.net SVN: practicalxml:[123] branches/dev-1.1/src/test/java/net/sf/ practi
Brought to you by:
kdgregory
From: Auto-Generated S. C. M. <pra...@li...> - 2009-09-08 15:10:27
|
Revision: 123 http://practicalxml.svn.sourceforge.net/practicalxml/?rev=123&view=rev Author: kdgregory Date: 2009-09-08 15:10:15 +0000 (Tue, 08 Sep 2009) Log Message: ----------- more testcase repackaging Added Paths: ----------- branches/dev-1.1/src/test/java/net/sf/practicalxml/converter/bean/TestBeanConverter.java Removed Paths: ------------- branches/dev-1.1/src/test/java/net/sf/practicalxml/converter/TestBeanConverter.java Deleted: branches/dev-1.1/src/test/java/net/sf/practicalxml/converter/TestBeanConverter.java =================================================================== --- branches/dev-1.1/src/test/java/net/sf/practicalxml/converter/TestBeanConverter.java 2009-09-08 14:55:08 UTC (rev 122) +++ branches/dev-1.1/src/test/java/net/sf/practicalxml/converter/TestBeanConverter.java 2009-09-08 15:10:15 UTC (rev 123) @@ -1,426 +0,0 @@ -// Copyright 2008-2009 severally by the contributors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package net.sf.practicalxml.converter; - -import java.math.BigDecimal; -import java.util.Arrays; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.SortedSet; - -import org.w3c.dom.Document; -import org.w3c.dom.Element; - -import net.sf.practicalxml.DomUtil; -import net.sf.practicalxml.OutputUtil; -import net.sf.practicalxml.converter.bean.AbstractBeanConverterTestCase; -import net.sf.practicalxml.converter.bean.Bean2XmlOptions; -import net.sf.practicalxml.converter.bean.Xml2BeanOptions; -import net.sf.practicalxml.junit.DomAsserts; - - -/** - * Tests for the top-level <code>BeanConverter</code> methods. These are all - * "out and back" tests to verify that we can read the XML that we produce - * (and to show cases where we can't). Detailed tests (verifying specific - * output) are in {@link TestBean2XmlDriver} and {@link TestXml2BeanDriver}. - * <p> - * Note that each conversion has a commented-out line that will print the - * generated XML. Uncommenting these lines may help you understand how - * conversion works in particular cases. - */ -public class TestBeanConverter -extends AbstractBeanConverterTestCase -{ - public TestBeanConverter(String name) - { - super(name); - } - - -//---------------------------------------------------------------------------- -// Support Code -//---------------------------------------------------------------------------- - - private static void assertConversionFailure( - String message, BeanConverter converter, Element elem, Class<?> klass) - { - try - { - converter.convertToJava(elem, klass); - fail(message); - } - catch (ConversionException ee) - { -// System.out.println(ee); - } - } - -//---------------------------------------------------------------------------- -// Test Cases -//---------------------------------------------------------------------------- - - // an initial test to verify everything works - public void testConvertStringDefault() throws Exception - { - BeanConverter outConverter = new BeanConverter(); - BeanConverter inConverter = new BeanConverter(); - - String obj = "this is a test"; - Element root = outConverter.convertToXml(obj, "test"); -// System.out.println(OutputUtil.compactString(root.getOwnerDocument())); - assertEquals("test", DomUtil.getLocalName(root)); - - Object result = inConverter.convertToJava(root, String.class); - assertEquals(obj, result); - } - - - public void testConvertPrimitiveDefault() throws Exception - { - BeanConverter outConverter = new BeanConverter(); - BeanConverter inConverter = new BeanConverter(); - - for (PrimitiveValue value : PRIMITIVE_VALUES) - { - Object obj = value.getValue(); - Element root = outConverter.convertToXml(obj, "test"); -// System.out.println(OutputUtil.compactString(root.getOwnerDocument())); - - Object result = inConverter.convertToJava(root, value.getKlass()); - assertEquals(obj, result); - } - } - - - public void testConvertPrimitiveFormatXsd() throws Exception - { - BeanConverter outConverter = new BeanConverter(Bean2XmlOptions.XSD_FORMAT); - BeanConverter inConverter = new BeanConverter(Xml2BeanOptions.EXPECT_XSD_FORMAT); - - for (PrimitiveValue value : PRIMITIVE_VALUES) - { - Object obj = value.getValue(); - Element root = outConverter.convertToXml(obj, "test"); -// System.out.println(OutputUtil.compactString(root.getOwnerDocument())); - - Object result = inConverter.convertToJava(root, value.getKlass()); - assertEquals(obj, result); - } - } - - - public void testConvertNullDefault() throws Exception - { - BeanConverter outConverter = new BeanConverter(); - BeanConverter inConverter = new BeanConverter(); - - Element root = outConverter.convertToXml(null, "test"); -// System.out.println(OutputUtil.compactString(root.getOwnerDocument())); - - Object result = inConverter.convertToJava(root, String.class); - assertNull(result); - } - - - public void testConvertNullUseAndRequireXsiNil() throws Exception - { - BeanConverter outConverter = new BeanConverter(Bean2XmlOptions.XSI_NIL); - BeanConverter inConverter = new BeanConverter(Xml2BeanOptions.REQUIRE_XSI_NIL); - - Element root = outConverter.convertToXml(null, "test"); -// System.out.println(OutputUtil.compactString(root.getOwnerDocument())); - - Object result = inConverter.convertToJava(root, String.class); - assertNull(result); - } - - - public void testConvertNullFailureRequireXsiNil() throws Exception - { - BeanConverter outConverter = new BeanConverter(); - BeanConverter inConverter = new BeanConverter(Xml2BeanOptions.REQUIRE_XSI_NIL); - - Element root = outConverter.convertToXml(null, "test"); -// System.out.println(OutputUtil.compactString(root.getOwnerDocument())); - - assertConversionFailure("accepted DOM with null entry but no xsi:nil", - inConverter, root, String.class); - } - - - public void testPrimitiveArrayDefault() throws Exception - { - int[] data = new int[] { 1, 2, 4, 5 }; - - BeanConverter outConverter = new BeanConverter(); - BeanConverter inConverter = new BeanConverter(); - - Element root = outConverter.convertToXml(data, "test"); -// System.out.println(OutputUtil.compactString(root.getOwnerDocument())); - - int[] result = inConverter.convertToJava(root, int[].class); - assertTrue(Arrays.equals(data, result)); - } - - - public void testStringListDefault() throws Exception - { - List<String> data = Arrays.asList("foo", "bar", "baz"); - - BeanConverter outConverter = new BeanConverter(); - BeanConverter inConverter = new BeanConverter(); - - Element root = outConverter.convertToXml(data, "test"); -// System.out.println(OutputUtil.compactString(root.getOwnerDocument())); - - List<String> result = inConverter.convertToJava(root, List.class); - assertEquals(data, result); - } - - - // demonstrates that the list will be read as List<String> even though - // it was written as List<Integer> - public void testIntegerListDefault() throws Exception - { - List<Integer> data = Arrays.asList(1, 2, 3); - assert(data.get(0) instanceof Integer); - - BeanConverter outConverter = new BeanConverter(); - BeanConverter inConverter = new BeanConverter(); - - Element root = outConverter.convertToXml(data, "test"); -// System.out.println(OutputUtil.compactString(root.getOwnerDocument())); - - List<?> result = inConverter.convertToJava(root, List.class); - assertTrue(result instanceof List); - assertTrue(result.get(0) instanceof String); - } - - - // demonstrates that you don't need to require xsi:type to use it - public void testIntegerListWithXsiType() throws Exception - { - List<Integer> data = Arrays.asList(1, 2, 3); - assert(data.get(0) instanceof Integer); - - BeanConverter outConverter = new BeanConverter(Bean2XmlOptions.ADD_XSI_TYPE); - BeanConverter inConverter = new BeanConverter(); - - Element root = outConverter.convertToXml(data, "test"); -// System.out.println(OutputUtil.compactString(root.getOwnerDocument())); - - List<?> result = inConverter.convertToJava(root, List.class); - assertEquals(data, result); - } - - - // demonstrates that the caller drives the inbound conversion - public void testConvertListToSortedSet() throws Exception - { - List<String> data = Arrays.asList("foo", "bar", "baz", "bar"); - - BeanConverter outConverter = new BeanConverter(); - BeanConverter inConverter = new BeanConverter(); - - Element root = outConverter.convertToXml(data, "test"); -// System.out.println(OutputUtil.compactString(root.getOwnerDocument())); - - Set<?> result = inConverter.convertToJava(root, SortedSet.class); - Iterator<?> itx = result.iterator(); - assertEquals("bar", itx.next()); - assertEquals("baz", itx.next()); - assertEquals("foo", itx.next()); - assertFalse(itx.hasNext()); - } - - - public void testMapDefault() throws Exception - { - Map<String,String> data = new HashMap<String,String>(); - data.put("foo", "argle"); - data.put("bar", "bargle"); - data.put("baz", "bazgle"); - - BeanConverter outConverter = new BeanConverter(); - BeanConverter inConverter = new BeanConverter(); - - Element root = outConverter.convertToXml(data, "test"); -// System.out.println(OutputUtil.compactString(root.getOwnerDocument())); - - DomAsserts.assertCount(3, root, "/test/data"); - DomAsserts.assertCount(1, root, "/test/data[@key='foo']"); - DomAsserts.assertEquals("argle", root, "/test/data[@key='foo']"); - - Map<?,?> result = inConverter.convertToJava(root, Map.class); - assertEquals(data, result); - } - - - // demonstrates that the input converter handles either format by default - public void testMapIntrospected() throws Exception - { - Map<String,String> data = new HashMap<String,String>(); - data.put("foo", "argle"); - data.put("bar", "bargle"); - data.put("baz", "bazgle"); - - BeanConverter outConverter = new BeanConverter(Bean2XmlOptions.INTROSPECT_MAPS); - BeanConverter inConverter = new BeanConverter(); - - Element root = outConverter.convertToXml(data, "test"); -// System.out.println(OutputUtil.compactString(root.getOwnerDocument())); - - DomAsserts.assertCount(0, root, "/test/data"); - DomAsserts.assertCount(1, root, "/test/foo"); - DomAsserts.assertEquals("argle", root, "/test/foo"); - - Map<?,?> result = inConverter.convertToJava(root, Map.class); - assertEquals(data, result); - } - - - public void testSimpleBeanDefault() throws Exception - { - SimpleBean data = new SimpleBean("abc", 123, new BigDecimal("456.789"), true); - - BeanConverter outConverter = new BeanConverter(); - BeanConverter inConverter = new BeanConverter(); - - Element root = outConverter.convertToXml(data, "test"); -// System.out.println(OutputUtil.compactString(root.getOwnerDocument())); - - SimpleBean result = inConverter.convertToJava(root, SimpleBean.class); - data.assertEquals(result); - } - - - public void testSimpleBeanRequireXsiType() throws Exception - { - SimpleBean data = new SimpleBean("abc", 123, new BigDecimal("456.789"), true); - - BeanConverter outconverter1 = new BeanConverter(Bean2XmlOptions.ADD_XSI_TYPE); - BeanConverter outconverter2 = new BeanConverter(); - BeanConverter inConverter = new BeanConverter(Xml2BeanOptions.REQUIRE_XSI_TYPE); - - Element valid = outconverter1.convertToXml(data, "test"); -// System.out.println(OutputUtil.compactString(valid.getOwnerDocument())); - - SimpleBean result = inConverter.convertToJava(valid, SimpleBean.class); - data.assertEquals(result); - - Element invalid = outconverter2.convertToXml(data, "test"); -// System.out.println(OutputUtil.compactString(invalid.getOwnerDocument())); - - assertConversionFailure("converter requiring xsi:type accepted XML without", - inConverter, invalid, SimpleBean.class); - } - - - public void testListOfSimpleBeanWithXsiTypeAndNulls() throws Exception - { - SimpleBean bean1 = new SimpleBean("abc", 123, new BigDecimal("456.789"), true); - SimpleBean bean2 = new SimpleBean("zyx", 987, null, false); - List<SimpleBean> data = Arrays.asList(bean1, bean2); - - BeanConverter outConverter = new BeanConverter(Bean2XmlOptions.ADD_XSI_TYPE); - BeanConverter inConverter = new BeanConverter(); - - Element root = outConverter.convertToXml(data, "test"); -// System.out.println(OutputUtil.compactString(root.getOwnerDocument())); - - List<SimpleBean> result = inConverter.convertToJava(root, List.class); - assertEquals(2, result.size()); - bean1.assertEquals(result.get(0)); - bean2.assertEquals(result.get(1)); - } - - - // another demonstration that caller drives input conversion - // ... and note that we don't care about xsi:type in this case - public void testListOfSimpleBeanToArrayOfSame() throws Exception - { - SimpleBean bean1 = new SimpleBean("abc", 123, new BigDecimal("456.789"), true); - SimpleBean bean2 = new SimpleBean("zyx", 987, null, false); - List<SimpleBean> data = Arrays.asList(bean1, bean2); - - BeanConverter outConverter = new BeanConverter(); - BeanConverter inConverter = new BeanConverter(); - - Element root = outConverter.convertToXml(data, "test"); -// System.out.println(OutputUtil.compactString(root.getOwnerDocument())); - - SimpleBean[] result = inConverter.convertToJava(root, SimpleBean[].class); - assertEquals(2, result.length); - bean1.assertEquals(result[0]); - bean2.assertEquals(result[1]); - } - - - public void testCompoundBeanDefault() throws Exception - { - CompoundBean data = new CompoundBean( - new SimpleBean("abc", 123, new BigDecimal("456.789"), true), - new int[] { 1, 5, 7, 9 }, - Arrays.asList("foo", "bar", "baz")); - - BeanConverter outConverter = new BeanConverter(); - BeanConverter inConverter = new BeanConverter(); - - Element root = outConverter.convertToXml(data, "test"); -// System.out.println(OutputUtil.compactString(root.getOwnerDocument())); - - CompoundBean result = inConverter.convertToJava(root, CompoundBean.class); - data.assertEquals(result); - } - - - public void testSimpleBeanWithNamespace() throws Exception - { - SimpleBean data = new SimpleBean("abc", 123, new BigDecimal("456.789"), true); - - BeanConverter outConverter = new BeanConverter(); - BeanConverter inConverter = new BeanConverter(); - - Element root = outConverter.convertToXml(data, "urn:foo", "bar:test"); -// System.out.println(OutputUtil.compactString(root.getOwnerDocument())); - - Element child = DomUtil.getChild(root, "sval"); - assertEquals("urn:foo", child.getNamespaceURI()); - assertEquals("bar", child.getPrefix()); - - SimpleBean result = inConverter.convertToJava(root, SimpleBean.class); - data.assertEquals(result); - } - - - // this one is here just for coverage - public void testSimpleBeanFromDocument() throws Exception - { - SimpleBean data = new SimpleBean("abc", 123, new BigDecimal("456.789"), true); - - BeanConverter outConverter = new BeanConverter(); - BeanConverter inConverter = new BeanConverter(); - - Document dom = outConverter.convertToXml(data, "test").getOwnerDocument(); -// System.out.println(OutputUtil.compactString(dom)); - - SimpleBean result = inConverter.convertToJava(dom, SimpleBean.class); - data.assertEquals(result); - } -} \ No newline at end of file Copied: branches/dev-1.1/src/test/java/net/sf/practicalxml/converter/bean/TestBeanConverter.java (from rev 121, branches/dev-1.1/src/test/java/net/sf/practicalxml/converter/TestBeanConverter.java) =================================================================== --- branches/dev-1.1/src/test/java/net/sf/practicalxml/converter/bean/TestBeanConverter.java (rev 0) +++ branches/dev-1.1/src/test/java/net/sf/practicalxml/converter/bean/TestBeanConverter.java 2009-09-08 15:10:15 UTC (rev 123) @@ -0,0 +1,428 @@ +// Copyright 2008-2009 severally by the contributors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package net.sf.practicalxml.converter.bean; + +import java.math.BigDecimal; +import java.util.Arrays; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.SortedSet; + +import org.w3c.dom.Document; +import org.w3c.dom.Element; + +import net.sf.practicalxml.DomUtil; +import net.sf.practicalxml.OutputUtil; +import net.sf.practicalxml.converter.BeanConverter; +import net.sf.practicalxml.converter.ConversionException; +import net.sf.practicalxml.converter.bean.AbstractBeanConverterTestCase; +import net.sf.practicalxml.converter.bean.Bean2XmlOptions; +import net.sf.practicalxml.converter.bean.Xml2BeanOptions; +import net.sf.practicalxml.junit.DomAsserts; + + +/** + * Tests for the top-level <code>BeanConverter</code> methods. These are all + * "out and back" tests to verify that we can read the XML that we produce + * (and to show cases where we can't). Detailed tests (verifying specific + * output) are in {@link TestBean2XmlDriver} and {@link TestXml2BeanDriver}. + * <p> + * Note that each conversion has a commented-out line that will print the + * generated XML. Uncommenting these lines may help you understand how + * conversion works in particular cases. + */ +public class TestBeanConverter +extends AbstractBeanConverterTestCase +{ + public TestBeanConverter(String name) + { + super(name); + } + + +//---------------------------------------------------------------------------- +// Support Code +//---------------------------------------------------------------------------- + + private static void assertConversionFailure( + String message, BeanConverter converter, Element elem, Class<?> klass) + { + try + { + converter.convertToJava(elem, klass); + fail(message); + } + catch (ConversionException ee) + { +// System.out.println(ee); + } + } + +//---------------------------------------------------------------------------- +// Test Cases +//---------------------------------------------------------------------------- + + // an initial test to verify everything works + public void testConvertStringDefault() throws Exception + { + BeanConverter outConverter = new BeanConverter(); + BeanConverter inConverter = new BeanConverter(); + + String obj = "this is a test"; + Element root = outConverter.convertToXml(obj, "test"); +// System.out.println(OutputUtil.compactString(root.getOwnerDocument())); + assertEquals("test", DomUtil.getLocalName(root)); + + Object result = inConverter.convertToJava(root, String.class); + assertEquals(obj, result); + } + + + public void testConvertPrimitiveDefault() throws Exception + { + BeanConverter outConverter = new BeanConverter(); + BeanConverter inConverter = new BeanConverter(); + + for (PrimitiveValue value : PRIMITIVE_VALUES) + { + Object obj = value.getValue(); + Element root = outConverter.convertToXml(obj, "test"); +// System.out.println(OutputUtil.compactString(root.getOwnerDocument())); + + Object result = inConverter.convertToJava(root, value.getKlass()); + assertEquals(obj, result); + } + } + + + public void testConvertPrimitiveFormatXsd() throws Exception + { + BeanConverter outConverter = new BeanConverter(Bean2XmlOptions.XSD_FORMAT); + BeanConverter inConverter = new BeanConverter(Xml2BeanOptions.EXPECT_XSD_FORMAT); + + for (PrimitiveValue value : PRIMITIVE_VALUES) + { + Object obj = value.getValue(); + Element root = outConverter.convertToXml(obj, "test"); +// System.out.println(OutputUtil.compactString(root.getOwnerDocument())); + + Object result = inConverter.convertToJava(root, value.getKlass()); + assertEquals(obj, result); + } + } + + + public void testConvertNullDefault() throws Exception + { + BeanConverter outConverter = new BeanConverter(); + BeanConverter inConverter = new BeanConverter(); + + Element root = outConverter.convertToXml(null, "test"); +// System.out.println(OutputUtil.compactString(root.getOwnerDocument())); + + Object result = inConverter.convertToJava(root, String.class); + assertNull(result); + } + + + public void testConvertNullUseAndRequireXsiNil() throws Exception + { + BeanConverter outConverter = new BeanConverter(Bean2XmlOptions.XSI_NIL); + BeanConverter inConverter = new BeanConverter(Xml2BeanOptions.REQUIRE_XSI_NIL); + + Element root = outConverter.convertToXml(null, "test"); +// System.out.println(OutputUtil.compactString(root.getOwnerDocument())); + + Object result = inConverter.convertToJava(root, String.class); + assertNull(result); + } + + + public void testConvertNullFailureRequireXsiNil() throws Exception + { + BeanConverter outConverter = new BeanConverter(); + BeanConverter inConverter = new BeanConverter(Xml2BeanOptions.REQUIRE_XSI_NIL); + + Element root = outConverter.convertToXml(null, "test"); +// System.out.println(OutputUtil.compactString(root.getOwnerDocument())); + + assertConversionFailure("accepted DOM with null entry but no xsi:nil", + inConverter, root, String.class); + } + + + public void testPrimitiveArrayDefault() throws Exception + { + int[] data = new int[] { 1, 2, 4, 5 }; + + BeanConverter outConverter = new BeanConverter(); + BeanConverter inConverter = new BeanConverter(); + + Element root = outConverter.convertToXml(data, "test"); +// System.out.println(OutputUtil.compactString(root.getOwnerDocument())); + + int[] result = inConverter.convertToJava(root, int[].class); + assertTrue(Arrays.equals(data, result)); + } + + + public void testStringListDefault() throws Exception + { + List<String> data = Arrays.asList("foo", "bar", "baz"); + + BeanConverter outConverter = new BeanConverter(); + BeanConverter inConverter = new BeanConverter(); + + Element root = outConverter.convertToXml(data, "test"); +// System.out.println(OutputUtil.compactString(root.getOwnerDocument())); + + List<String> result = inConverter.convertToJava(root, List.class); + assertEquals(data, result); + } + + + // demonstrates that the list will be read as List<String> even though + // it was written as List<Integer> + public void testIntegerListDefault() throws Exception + { + List<Integer> data = Arrays.asList(1, 2, 3); + assert(data.get(0) instanceof Integer); + + BeanConverter outConverter = new BeanConverter(); + BeanConverter inConverter = new BeanConverter(); + + Element root = outConverter.convertToXml(data, "test"); +// System.out.println(OutputUtil.compactString(root.getOwnerDocument())); + + List<?> result = inConverter.convertToJava(root, List.class); + assertTrue(result instanceof List); + assertTrue(result.get(0) instanceof String); + } + + + // demonstrates that you don't need to require xsi:type to use it + public void testIntegerListWithXsiType() throws Exception + { + List<Integer> data = Arrays.asList(1, 2, 3); + assert(data.get(0) instanceof Integer); + + BeanConverter outConverter = new BeanConverter(Bean2XmlOptions.ADD_XSI_TYPE); + BeanConverter inConverter = new BeanConverter(); + + Element root = outConverter.convertToXml(data, "test"); +// System.out.println(OutputUtil.compactString(root.getOwnerDocument())); + + List<?> result = inConverter.convertToJava(root, List.class); + assertEquals(data, result); + } + + + // demonstrates that the caller drives the inbound conversion + public void testConvertListToSortedSet() throws Exception + { + List<String> data = Arrays.asList("foo", "bar", "baz", "bar"); + + BeanConverter outConverter = new BeanConverter(); + BeanConverter inConverter = new BeanConverter(); + + Element root = outConverter.convertToXml(data, "test"); +// System.out.println(OutputUtil.compactString(root.getOwnerDocument())); + + Set<?> result = inConverter.convertToJava(root, SortedSet.class); + Iterator<?> itx = result.iterator(); + assertEquals("bar", itx.next()); + assertEquals("baz", itx.next()); + assertEquals("foo", itx.next()); + assertFalse(itx.hasNext()); + } + + + public void testMapDefault() throws Exception + { + Map<String,String> data = new HashMap<String,String>(); + data.put("foo", "argle"); + data.put("bar", "bargle"); + data.put("baz", "bazgle"); + + BeanConverter outConverter = new BeanConverter(); + BeanConverter inConverter = new BeanConverter(); + + Element root = outConverter.convertToXml(data, "test"); +// System.out.println(OutputUtil.compactString(root.getOwnerDocument())); + + DomAsserts.assertCount(3, root, "/test/data"); + DomAsserts.assertCount(1, root, "/test/data[@key='foo']"); + DomAsserts.assertEquals("argle", root, "/test/data[@key='foo']"); + + Map<?,?> result = inConverter.convertToJava(root, Map.class); + assertEquals(data, result); + } + + + // demonstrates that the input converter handles either format by default + public void testMapIntrospected() throws Exception + { + Map<String,String> data = new HashMap<String,String>(); + data.put("foo", "argle"); + data.put("bar", "bargle"); + data.put("baz", "bazgle"); + + BeanConverter outConverter = new BeanConverter(Bean2XmlOptions.INTROSPECT_MAPS); + BeanConverter inConverter = new BeanConverter(); + + Element root = outConverter.convertToXml(data, "test"); +// System.out.println(OutputUtil.compactString(root.getOwnerDocument())); + + DomAsserts.assertCount(0, root, "/test/data"); + DomAsserts.assertCount(1, root, "/test/foo"); + DomAsserts.assertEquals("argle", root, "/test/foo"); + + Map<?,?> result = inConverter.convertToJava(root, Map.class); + assertEquals(data, result); + } + + + public void testSimpleBeanDefault() throws Exception + { + SimpleBean data = new SimpleBean("abc", 123, new BigDecimal("456.789"), true); + + BeanConverter outConverter = new BeanConverter(); + BeanConverter inConverter = new BeanConverter(); + + Element root = outConverter.convertToXml(data, "test"); +// System.out.println(OutputUtil.compactString(root.getOwnerDocument())); + + SimpleBean result = inConverter.convertToJava(root, SimpleBean.class); + data.assertEquals(result); + } + + + public void testSimpleBeanRequireXsiType() throws Exception + { + SimpleBean data = new SimpleBean("abc", 123, new BigDecimal("456.789"), true); + + BeanConverter outconverter1 = new BeanConverter(Bean2XmlOptions.ADD_XSI_TYPE); + BeanConverter outconverter2 = new BeanConverter(); + BeanConverter inConverter = new BeanConverter(Xml2BeanOptions.REQUIRE_XSI_TYPE); + + Element valid = outconverter1.convertToXml(data, "test"); +// System.out.println(OutputUtil.compactString(valid.getOwnerDocument())); + + SimpleBean result = inConverter.convertToJava(valid, SimpleBean.class); + data.assertEquals(result); + + Element invalid = outconverter2.convertToXml(data, "test"); +// System.out.println(OutputUtil.compactString(invalid.getOwnerDocument())); + + assertConversionFailure("converter requiring xsi:type accepted XML without", + inConverter, invalid, SimpleBean.class); + } + + + public void testListOfSimpleBeanWithXsiTypeAndNulls() throws Exception + { + SimpleBean bean1 = new SimpleBean("abc", 123, new BigDecimal("456.789"), true); + SimpleBean bean2 = new SimpleBean("zyx", 987, null, false); + List<SimpleBean> data = Arrays.asList(bean1, bean2); + + BeanConverter outConverter = new BeanConverter(Bean2XmlOptions.ADD_XSI_TYPE); + BeanConverter inConverter = new BeanConverter(); + + Element root = outConverter.convertToXml(data, "test"); +// System.out.println(OutputUtil.compactString(root.getOwnerDocument())); + + List<SimpleBean> result = inConverter.convertToJava(root, List.class); + assertEquals(2, result.size()); + bean1.assertEquals(result.get(0)); + bean2.assertEquals(result.get(1)); + } + + + // another demonstration that caller drives input conversion + // ... and note that we don't care about xsi:type in this case + public void testListOfSimpleBeanToArrayOfSame() throws Exception + { + SimpleBean bean1 = new SimpleBean("abc", 123, new BigDecimal("456.789"), true); + SimpleBean bean2 = new SimpleBean("zyx", 987, null, false); + List<SimpleBean> data = Arrays.asList(bean1, bean2); + + BeanConverter outConverter = new BeanConverter(); + BeanConverter inConverter = new BeanConverter(); + + Element root = outConverter.convertToXml(data, "test"); +// System.out.println(OutputUtil.compactString(root.getOwnerDocument())); + + SimpleBean[] result = inConverter.convertToJava(root, SimpleBean[].class); + assertEquals(2, result.length); + bean1.assertEquals(result[0]); + bean2.assertEquals(result[1]); + } + + + public void testCompoundBeanDefault() throws Exception + { + CompoundBean data = new CompoundBean( + new SimpleBean("abc", 123, new BigDecimal("456.789"), true), + new int[] { 1, 5, 7, 9 }, + Arrays.asList("foo", "bar", "baz")); + + BeanConverter outConverter = new BeanConverter(); + BeanConverter inConverter = new BeanConverter(); + + Element root = outConverter.convertToXml(data, "test"); +// System.out.println(OutputUtil.compactString(root.getOwnerDocument())); + + CompoundBean result = inConverter.convertToJava(root, CompoundBean.class); + data.assertEquals(result); + } + + + public void testSimpleBeanWithNamespace() throws Exception + { + SimpleBean data = new SimpleBean("abc", 123, new BigDecimal("456.789"), true); + + BeanConverter outConverter = new BeanConverter(); + BeanConverter inConverter = new BeanConverter(); + + Element root = outConverter.convertToXml(data, "urn:foo", "bar:test"); +// System.out.println(OutputUtil.compactString(root.getOwnerDocument())); + + Element child = DomUtil.getChild(root, "sval"); + assertEquals("urn:foo", child.getNamespaceURI()); + assertEquals("bar", child.getPrefix()); + + SimpleBean result = inConverter.convertToJava(root, SimpleBean.class); + data.assertEquals(result); + } + + + // this one is here just for coverage + public void testSimpleBeanFromDocument() throws Exception + { + SimpleBean data = new SimpleBean("abc", 123, new BigDecimal("456.789"), true); + + BeanConverter outConverter = new BeanConverter(); + BeanConverter inConverter = new BeanConverter(); + + Document dom = outConverter.convertToXml(data, "test").getOwnerDocument(); +// System.out.println(OutputUtil.compactString(dom)); + + SimpleBean result = inConverter.convertToJava(dom, SimpleBean.class); + data.assertEquals(result); + } +} \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |