1 /*
2 * Copyright (C) The JContainer Group. All rights reserved.
3 *
4 * This software is published under the terms of the JContainer
5 * Software License version 1.1, a copy of which has been included
6 * with this distribution in the LICENSE.txt file.
7 */
8 package org.jcontainer.dna.impl;
9
10 import java.lang.reflect.Proxy;
11 import junit.framework.TestCase;
12 import org.xml.sax.ContentHandler;
13 import org.xml.sax.helpers.AttributesImpl;
14
15 public class SAXConfigurationSerializerTestCase
16 extends TestCase
17 {
18 public void testSerializeZeroLengthAttributes()
19 throws Exception
20 {
21 final DefaultConfiguration configuration = new DefaultConfiguration( "element", "", "" );
22 final SAXConfigurationSerializer serializer = new SAXConfigurationSerializer();
23 final AttributesImpl attributes = serializer.serializeAttributes( configuration );
24 assertEquals( "attributes.getLength()", 0, attributes.getLength() );
25 }
26
27 public void testSerializeAttributes()
28 throws Exception
29 {
30 final DefaultConfiguration configuration = new DefaultConfiguration( "element", "", "" );
31 final String name = "key";
32 final String value = "value";
33 configuration.setAttribute( name, value );
34 final SAXConfigurationSerializer serializer = new SAXConfigurationSerializer();
35 final AttributesImpl attributes = serializer.serializeAttributes( configuration );
36 assertEquals( "attributes.getLength()", 1, attributes.getLength() );
37 assertEquals( "attributes.getLocalName(0)", name, attributes.getLocalName( 0 ) );
38 assertEquals( "attributes.getQName(0)", name, attributes.getQName( 0 ) );
39 assertEquals( "attributes.getURI(0)", "", attributes.getURI( 0 ) );
40 assertEquals( "attributes.getType(0)", "CDATA", attributes.getType( 0 ) );
41 assertEquals( "attributes.getType(0)", value, attributes.getValue( 0 ) );
42 }
43
44 public void testSerializeElementWithNoContentOrChildren()
45 throws Exception
46 {
47 final String name = "element";
48 final DefaultConfiguration configuration = new DefaultConfiguration( name, "", "" );
49 final SAXConfigurationSerializer serializer = new MockSAXConfigurationSerializer();
50
51 final MockInvocationRecorder recorder = new MockInvocationRecorder();
52 recorder.addInvocation( SAXMethods.START_ELEMENT,
53 new Object[]{"", name, name,
54 MockSAXConfigurationSerializer.ATTRIBUTES},
55 null );
56 recorder.addInvocation( SAXMethods.END_ELEMENT,
57 new Object[]{"", name, name},
58 null );
59
60 final ContentHandler handler = (ContentHandler)
61 Proxy.newProxyInstance( getClass().getClassLoader(),
62 new Class[]{ContentHandler.class},
63 recorder );
64
65 serializer.serializeElement( configuration, handler );
66 }
67
68 public void testSerializeElementWithValue()
69 throws Exception
70 {
71 final String name = "element";
72 final String value = "value";
73 final DefaultConfiguration configuration = new DefaultConfiguration( name, "", "" );
74 configuration.setValue( value );
75 final SAXConfigurationSerializer serializer = new MockSAXConfigurationSerializer();
76
77 final MockInvocationRecorder recorder = new MockInvocationRecorder();
78 recorder.addInvocation( SAXMethods.START_ELEMENT,
79 new Object[]{"", name, name,
80 MockSAXConfigurationSerializer.ATTRIBUTES},
81 null );
82 recorder.addInvocation( SAXMethods.CHARACTERS,
83 new Object[]{value.toCharArray(), new Integer( 0 ), new Integer( 0 )},
84 null );
85 recorder.addInvocation( SAXMethods.END_ELEMENT,
86 new Object[]{"", name, name},
87 null );
88
89 final ContentHandler handler = (ContentHandler)
90 Proxy.newProxyInstance( getClass().getClassLoader(),
91 new Class[]{ContentHandler.class},
92 recorder );
93
94 serializer.serializeElement( configuration, handler );
95 }
96
97 public void testSerializeElementWithChild()
98 throws Exception
99 {
100 final String name = "element";
101 final String childName = "child";
102 final DefaultConfiguration configuration = new DefaultConfiguration( name, "", "" );
103 final DefaultConfiguration child = new DefaultConfiguration( childName, "", "" );
104 configuration.addChild( child );
105 final SAXConfigurationSerializer serializer = new MockSAXConfigurationSerializer();
106
107 final MockInvocationRecorder recorder = new MockInvocationRecorder();
108 recorder.addInvocation( SAXMethods.START_ELEMENT,
109 new Object[]{"", name, name,
110 MockSAXConfigurationSerializer.ATTRIBUTES},
111 null );
112 recorder.addInvocation( SAXMethods.START_ELEMENT,
113 new Object[]{"", childName, childName,
114 MockSAXConfigurationSerializer.ATTRIBUTES},
115 null );
116 recorder.addInvocation( SAXMethods.END_ELEMENT,
117 new Object[]{"", childName, childName},
118 null );
119 recorder.addInvocation( SAXMethods.END_ELEMENT,
120 new Object[]{"", name, name},
121 null );
122
123 final ContentHandler handler = (ContentHandler)
124 Proxy.newProxyInstance( getClass().getClassLoader(),
125 new Class[]{ContentHandler.class},
126 recorder );
127
128 serializer.serializeElement( configuration, handler );
129 }
130
131 public void testSerializeElementWithChildAndContent()
132 throws Exception
133 {
134 final String name = "element";
135 final String childName = "child";
136 final String value = "text";
137 final DefaultConfiguration configuration = new DefaultConfiguration( name, "", "" );
138 final DefaultConfiguration child = new DefaultConfiguration( childName, "", "" );
139 configuration.addChild( child );
140 child.setValue( value );
141 final SAXConfigurationSerializer serializer = new MockSAXConfigurationSerializer();
142
143 final MockInvocationRecorder recorder = new MockInvocationRecorder();
144 recorder.addInvocation( SAXMethods.START_ELEMENT,
145 new Object[]{"", name, name,
146 MockSAXConfigurationSerializer.ATTRIBUTES},
147 null );
148 recorder.addInvocation( SAXMethods.START_ELEMENT,
149 new Object[]{"", childName, childName,
150 MockSAXConfigurationSerializer.ATTRIBUTES},
151 null );
152 recorder.addInvocation( SAXMethods.CHARACTERS,
153 new Object[]{value.toCharArray(), new Integer( 0 ), new Integer( 0 )},
154 null );
155 recorder.addInvocation( SAXMethods.END_ELEMENT,
156 new Object[]{"", childName, childName},
157 null );
158 recorder.addInvocation( SAXMethods.END_ELEMENT,
159 new Object[]{"", name, name},
160 null );
161
162 final ContentHandler handler = (ContentHandler)
163 Proxy.newProxyInstance( getClass().getClassLoader(),
164 new Class[]{ContentHandler.class},
165 recorder );
166
167 serializer.serializeElement( configuration, handler );
168 }
169
170 public void testSerializeElementAsPartOfDocument()
171 throws Exception
172 {
173 final String name = "element";
174 final DefaultConfiguration configuration = new DefaultConfiguration( name, "", "" );
175 final SAXConfigurationSerializer serializer = new MockSAXConfigurationSerializer();
176
177 final MockInvocationRecorder recorder = new MockInvocationRecorder();
178 recorder.addInvocation( SAXMethods.START_DOCUMENT,
179 new Object[ 0 ],
180 null );
181 recorder.addInvocation( SAXMethods.START_ELEMENT,
182 new Object[]{"", name, name,
183 MockSAXConfigurationSerializer.ATTRIBUTES},
184 null );
185 recorder.addInvocation( SAXMethods.END_ELEMENT,
186 new Object[]{"", name, name},
187 null );
188 recorder.addInvocation( SAXMethods.END_DOCUMENT,
189 new Object[ 0 ],
190 null );
191
192 final ContentHandler handler = (ContentHandler)
193 Proxy.newProxyInstance( getClass().getClassLoader(),
194 new Class[]{ContentHandler.class},
195 recorder );
196
197 serializer.serialize( configuration, handler );
198 }
199 }
This page was automatically generated by Maven