01: /*
02: * Licensed to the Apache Software Foundation (ASF) under one or more
03: * contributor license agreements. See the NOTICE file distributed with
04: * this work for additional information regarding copyright ownership.
05: * The ASF licenses this file to You under the Apache License, Version 2.0
06: * (the "License"); you may not use this file except in compliance with
07: * the License. You may obtain a copy of the License at
08: *
09: * http://www.apache.org/licenses/LICENSE-2.0
10: *
11: * Unless required by applicable law or agreed to in writing, software
12: * distributed under the License is distributed on an "AS IS" BASIS,
13: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14: * See the License for the specific language governing permissions and
15: * limitations under the License.
16: */
17: package org.apache.commons.betwixt;
18:
19: import java.io.StringReader;
20: import java.io.StringWriter;
21:
22: import org.apache.commons.betwixt.io.BeanReader;
23: import org.apache.commons.betwixt.io.BeanWriter;
24:
25: public class TestStringCollections extends AbstractTestCase {
26:
27: public TestStringCollections(String testName) {
28: super (testName);
29: }
30:
31: public void testIntrospection() throws Exception {
32: XMLIntrospector introspector = new XMLIntrospector();
33: XMLBeanInfo xmlBeanInfo = introspector
34: .introspect(PoemBean.class);
35: ElementDescriptor beanDescriptor = xmlBeanInfo
36: .getElementDescriptor();
37: ElementDescriptor[] beanChildren = beanDescriptor
38: .getElementDescriptors();
39: assertEquals("Only one child", 1, beanChildren.length);
40: ElementDescriptor[] linesChildren = beanChildren[0]
41: .getElementDescriptors();
42: assertEquals("Only one lines child", 1, linesChildren.length);
43: assertFalse("Line child is not hollow", linesChildren[0]
44: .isHollow());
45: }
46:
47: public void testWritePoem() throws Exception {
48: String expected = "<?xml version='1.0'?>"
49: + "<PoemBean>"
50: + "<lines>"
51: + "<line>It is an ancient Mariner,</line>"
52: + "<line>And he stoppeth one of three.</line>"
53: + "<line>\"By thy long grey beard and the glittering eye,</line>"
54: + "<line>Now wherefore stopp'st thou me?\"</line>"
55: + "</lines>" + "</PoemBean>";
56: PoemBean bean = new PoemBean();
57: bean.addLine("It is an ancient Mariner,");
58: bean.addLine("And he stoppeth one of three.");
59: bean
60: .addLine("\"By thy long grey beard and the glittering eye,");
61: bean.addLine("Now wherefore stopp'st thou me?\"");
62:
63: StringWriter out = new StringWriter();
64: out.write("<?xml version='1.0'?>");
65: BeanWriter writer = new BeanWriter(out);
66: writer.getBindingConfiguration().setMapIDs(false);
67: writer.write(bean);
68:
69: String xml = out.toString();
70: xmlAssertIsomorphic(parseString(expected), parseString(xml));
71: }
72:
73: public void testReadPoem() throws Exception {
74: String xml = "<?xml version='1.0'?>"
75: + "<PoemBean>"
76: + "<lines>"
77: + "<line>It is an ancient Mariner,</line>"
78: + "<line>And he stoppeth one of three.</line>"
79: + "<line>\"By thy long grey beard and the glittering eye,</line>"
80: + "<line>Now wherefore stopp'st thou me?\"</line>"
81: + "</lines>" + "</PoemBean>";
82: BeanReader reader = new BeanReader();
83: reader.registerBeanClass(PoemBean.class);
84: PoemBean bean = (PoemBean) reader.parse(new StringReader(xml));
85: assertNotNull("Expected bean to be output");
86: Object[] lines = bean.getLines().toArray();
87: assertEquals("Expected four lines", 4, lines.length);
88: assertEquals("First line of Rime Of The Ancient Mariner",
89: "It is an ancient Mariner,", lines[0]);
90: assertEquals("Second line of Rime Of The Ancient Mariner",
91: "And he stoppeth one of three.", lines[1]);
92: assertEquals("Third line of Rime Of The Ancient Mariner",
93: "\"By thy long grey beard and the glittering eye,",
94: lines[2]);
95: assertEquals("Fourth line of Rime Of The Ancient Mariner",
96: "Now wherefore stopp'st thou me?\"", lines[3]);
97:
98: }
99: }
|