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