Package org.codehaus.dna.impl

Source Code of org.codehaus.dna.impl.SAXConfigurationSerializerTestCase

/*
* Copyright (C) The DNA Group. All rights reserved.
*
* This software is published under the terms of the DNA
* Software License version 1.1, a copy of which has been included
* with this distribution in the LICENSE.txt file.
*/
package org.codehaus.dna.impl;

import java.lang.reflect.Proxy;
import junit.framework.TestCase;

import org.codehaus.dna.impl.DefaultConfiguration;
import org.codehaus.dna.impl.SAXConfigurationSerializer;
import org.xml.sax.ContentHandler;
import org.xml.sax.helpers.AttributesImpl;

public class SAXConfigurationSerializerTestCase
    extends TestCase
{
    public void testSerializeZeroLengthAttributes()
        throws Exception
    {
        final DefaultConfiguration configuration = new DefaultConfiguration( "element", "", "" );
        final SAXConfigurationSerializer serializer = new SAXConfigurationSerializer();
        final AttributesImpl attributes = serializer.serializeAttributes( configuration );
        assertEquals( "attributes.getLength()", 0, attributes.getLength() );
    }

    public void testSerializeAttributes()
        throws Exception
    {
        final DefaultConfiguration configuration = new DefaultConfiguration( "element", "", "" );
        final String name = "key";
        final String value = "value";
        configuration.setAttribute( name, value );
        final SAXConfigurationSerializer serializer = new SAXConfigurationSerializer();
        final AttributesImpl attributes = serializer.serializeAttributes( configuration );
        assertEquals( "attributes.getLength()", 1, attributes.getLength() );
        assertEquals( "attributes.getLocalName(0)", name, attributes.getLocalName( 0 ) );
        assertEquals( "attributes.getQName(0)", name, attributes.getQName( 0 ) );
        assertEquals( "attributes.getURI(0)", "", attributes.getURI( 0 ) );
        assertEquals( "attributes.getType(0)", "CDATA", attributes.getType( 0 ) );
        assertEquals( "attributes.getType(0)", value, attributes.getValue( 0 ) );
    }

    public void testSerializeElementWithNoContentOrChildren()
        throws Exception
    {
        final String name = "element";
        final DefaultConfiguration configuration = new DefaultConfiguration( name, "", "" );
        final SAXConfigurationSerializer serializer = new MockSAXConfigurationSerializer();

        final MockInvocationRecorder recorder = new MockInvocationRecorder();
        recorder.addInvocation( SAXMethods.START_ELEMENT,
                                new Object[]{"", name, name,
                                             MockSAXConfigurationSerializer.ATTRIBUTES},
                                null );
        recorder.addInvocation( SAXMethods.END_ELEMENT,
                                new Object[]{"", name, name},
                                null );

        final ContentHandler handler = (ContentHandler)
            Proxy.newProxyInstance( getClass().getClassLoader(),
                                    new Class[]{ContentHandler.class},
                                    recorder );

        serializer.serializeElement( configuration, handler );
    }

    public void testSerializeElementWithValue()
        throws Exception
    {
        final String name = "element";
        final String value = "value";
        final DefaultConfiguration configuration = new DefaultConfiguration( name, "", "" );
        configuration.setValue( value );
        final SAXConfigurationSerializer serializer = new MockSAXConfigurationSerializer();

        final MockInvocationRecorder recorder = new MockInvocationRecorder();
        recorder.addInvocation( SAXMethods.START_ELEMENT,
                                new Object[]{"", name, name,
                                             MockSAXConfigurationSerializer.ATTRIBUTES},
                                null );
        recorder.addInvocation( SAXMethods.CHARACTERS,
                                new Object[]{value.toCharArray(), new Integer( 0 ), new Integer( 0 )},
                                null );
        recorder.addInvocation( SAXMethods.END_ELEMENT,
                                new Object[]{"", name, name},
                                null );

        final ContentHandler handler = (ContentHandler)
            Proxy.newProxyInstance( getClass().getClassLoader(),
                                    new Class[]{ContentHandler.class},
                                    recorder );

        serializer.serializeElement( configuration, handler );
    }

    public void testSerializeElementWithChild()
        throws Exception
    {
        final String name = "element";
        final String childName = "child";
        final DefaultConfiguration configuration = new DefaultConfiguration( name, "", "" );
        final DefaultConfiguration child = new DefaultConfiguration( childName, "", "" );
        configuration.addChild( child );
        final SAXConfigurationSerializer serializer = new MockSAXConfigurationSerializer();

        final MockInvocationRecorder recorder = new MockInvocationRecorder();
        recorder.addInvocation( SAXMethods.START_ELEMENT,
                                new Object[]{"", name, name,
                                             MockSAXConfigurationSerializer.ATTRIBUTES},
                                null );
        recorder.addInvocation( SAXMethods.START_ELEMENT,
                                new Object[]{"", childName, childName,
                                             MockSAXConfigurationSerializer.ATTRIBUTES},
                                null );
        recorder.addInvocation( SAXMethods.END_ELEMENT,
                                new Object[]{"", childName, childName},
                                null );
        recorder.addInvocation( SAXMethods.END_ELEMENT,
                                new Object[]{"", name, name},
                                null );

        final ContentHandler handler = (ContentHandler)
            Proxy.newProxyInstance( getClass().getClassLoader(),
                                    new Class[]{ContentHandler.class},
                                    recorder );

        serializer.serializeElement( configuration, handler );
    }

    public void testSerializeElementWithChildAndContent()
        throws Exception
    {
        final String name = "element";
        final String childName = "child";
        final String value = "text";
        final DefaultConfiguration configuration = new DefaultConfiguration( name, "", "" );
        final DefaultConfiguration child = new DefaultConfiguration( childName, "", "" );
        configuration.addChild( child );
        child.setValue( value );
        final SAXConfigurationSerializer serializer = new MockSAXConfigurationSerializer();

        final MockInvocationRecorder recorder = new MockInvocationRecorder();
        recorder.addInvocation( SAXMethods.START_ELEMENT,
                                new Object[]{"", name, name,
                                             MockSAXConfigurationSerializer.ATTRIBUTES},
                                null );
        recorder.addInvocation( SAXMethods.START_ELEMENT,
                                new Object[]{"", childName, childName,
                                             MockSAXConfigurationSerializer.ATTRIBUTES},
                                null );
        recorder.addInvocation( SAXMethods.CHARACTERS,
                                new Object[]{value.toCharArray(), new Integer( 0 ), new Integer( 0 )},
                                null );
        recorder.addInvocation( SAXMethods.END_ELEMENT,
                                new Object[]{"", childName, childName},
                                null );
        recorder.addInvocation( SAXMethods.END_ELEMENT,
                                new Object[]{"", name, name},
                                null );

        final ContentHandler handler = (ContentHandler)
            Proxy.newProxyInstance( getClass().getClassLoader(),
                                    new Class[]{ContentHandler.class},
                                    recorder );

        serializer.serializeElement( configuration, handler );
    }

    public void testSerializeElementAsPartOfDocument()
        throws Exception
    {
        final String name = "element";
        final DefaultConfiguration configuration = new DefaultConfiguration( name, "", "" );
        final SAXConfigurationSerializer serializer = new MockSAXConfigurationSerializer();

        final MockInvocationRecorder recorder = new MockInvocationRecorder();
        recorder.addInvocation( SAXMethods.START_DOCUMENT,
                                new Object[ 0 ],
                                null );
        recorder.addInvocation( SAXMethods.START_ELEMENT,
                                new Object[]{"", name, name,
                                             MockSAXConfigurationSerializer.ATTRIBUTES},
                                null );
        recorder.addInvocation( SAXMethods.END_ELEMENT,
                                new Object[]{"", name, name},
                                null );
        recorder.addInvocation( SAXMethods.END_DOCUMENT,
                                new Object[ 0 ],
                                null );

        final ContentHandler handler = (ContentHandler)
            Proxy.newProxyInstance( getClass().getClassLoader(),
                                    new Class[]{ContentHandler.class},
                                    recorder );

        serializer.serialize( configuration, handler );
    }
}
TOP

Related Classes of org.codehaus.dna.impl.SAXConfigurationSerializerTestCase

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.