cvs commit: spice/sandbox/metaclass/src/test/org/realityforge/metaclass/io SAXMetaClassSerializerTestCase.java EqAttributesConstraint.java
Peter Donald <[email protected]>
| Newsgroups | gmane.comp.java.spice.cvs |
|---|---|
| Message-ID | <[email protected]> |
donaldp 03/10/27 21:20:52
Modified: sandbox/metaclass/src/test/org/realityforge/metaclass/io
EqAttributesConstraint.java
Added: sandbox/metaclass/src/test/org/realityforge/metaclass/io
SAXMetaClassSerializerTestCase.java
Log:
Add support for writing XML descriptors and fully unit test the serializer
Revision Changes Path
1.2 +5 -1 spice/sandbox/metaclass/src/test/org/realityforge/metaclass/io/EqAttributesConstraint.java
Index: EqAttributesConstraint.java
===================================================================
RCS file: /cvsroot/spice/spice/sandbox/metaclass/src/test/org/realityforge/metaclass/io/EqAttributesConstraint.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- EqAttributesConstraint.java 28 Oct 2003 04:14:28 -0000 1.1
+++ EqAttributesConstraint.java 28 Oct 2003 05:20:52 -0000 1.2
@@ -15,14 +15,17 @@
public boolean eval( Object object )
{
- if ( !( object instanceof AttributesImpl ) )
+ System.out.println( "EqAttributesConstraint.eval(" + object + ")" );
+ if ( !( object instanceof AttributesImpl ) )
{
+ System.out.println( "Bad Type!" );
return false;
}
final AttributesImpl other = (AttributesImpl) object;
final int length = _attributes.getLength();
if ( other.getLength() != length )
{
+ System.out.println( "Bad Length! " + other.getLength() + "!=" + length );
return false;
}
for ( int i = 0; i < length; i++ )
@@ -32,6 +35,7 @@
final String otherValue = other.getValue( qName );
if ( !value.equals( otherValue ) )
{
+ System.out.println( "Bad Value for " + qName + " " + value + "!=" + otherValue );
return false;
}
}
1.1 spice/sandbox/metaclass/src/test/org/realityforge/metaclass/io/SAXMetaClassSerializerTestCase.java
Index: SAXMetaClassSerializerTestCase.java
===================================================================
package org.realityforge.metaclass.io;
import java.util.Properties;
import com.mockobjects.constraint.Constraint;
import com.mockobjects.dynamic.C;
import com.mockobjects.dynamic.Mock;
import com.mockobjects.dynamic.ConstraintMatcher;
import com.mockobjects.dynamic.FullConstraintMatcher;
import junit.framework.TestCase;
import org.xml.sax.ContentHandler;
import org.xml.sax.helpers.AttributesImpl;
import org.realityforge.metaclass.model.Attribute;
import org.realityforge.metaclass.model.ParameterDescriptor;
import org.realityforge.metaclass.model.MethodDescriptor;
import org.realityforge.metaclass.model.FieldDescriptor;
import org.realityforge.metaclass.model.ClassDescriptor;
public class SAXMetaClassSerializerTestCase
extends TestCase
{
public void testSerializeText()
throws Exception
{
final Mock mockHandler = new Mock( ContentHandler.class );
final String text = "blah";
mockHandler.expect( "characters", C.args( C.IS_ANYTHING, C.eq( 0 ), C.eq( text.length() ) ) );
final ContentHandler handler = (ContentHandler) mockHandler.proxy();
final SAXMetaClassSerializer serializer = new SAXMetaClassSerializer();
serializer.text( handler, text );
mockHandler.verify();
}
public void testSerializeAttributeParams()
throws Exception
{
final String name = "X";
final String value = "Y";
final Mock mockHandler = new Mock( ContentHandler.class );
final AttributesImpl attrs = new AttributesImpl();
add( attrs, SAXMetaClassSerializer.NAME_ATTRIBUTE, name );
add( attrs, SAXMetaClassSerializer.VALUE_ATTRIBUTE, value );
start( mockHandler, SAXMetaClassSerializer.PARAM_ELEMENT, attrs );
end( mockHandler, SAXMetaClassSerializer.PARAM_ELEMENT );
final ContentHandler handler = (ContentHandler) mockHandler.proxy();
final SAXMetaClassSerializer serializer = new SAXMetaClassSerializer();
final Properties parameters = new Properties();
parameters.put( name, value );
final Attribute attribute = new Attribute( "ignored", parameters );
serializer.serializeAttributeParams( handler, attribute );
mockHandler.verify();
}
public void testSerializeAttributes()
throws Exception
{
final Mock mockHandler = new Mock( ContentHandler.class );
start( mockHandler, SAXMetaClassSerializer.ATTRIBUTES_ELEMENT, new AttributesImpl() );
final String attributeName = "blah";
final AttributesImpl attributeAttrs = new AttributesImpl();
add( attributeAttrs, SAXMetaClassSerializer.NAME_ATTRIBUTE, attributeName );
start( mockHandler, SAXMetaClassSerializer.ATTRIBUTE_ELEMENT, attributeAttrs );
end( mockHandler, SAXMetaClassSerializer.ATTRIBUTE_ELEMENT );
end( mockHandler, SAXMetaClassSerializer.ATTRIBUTES_ELEMENT );
final ContentHandler handler = (ContentHandler) mockHandler.proxy();
final SAXMetaClassSerializer serializer = new SAXMetaClassSerializer();
final Attribute attribute = new Attribute( attributeName );
serializer.serializeAttributes( handler, new Attribute[]{attribute} );
mockHandler.verify();
}
public void testSerializeMethodParameters()
throws Exception
{
final String name = "X";
final String value = "Y";
final Mock mockHandler = new Mock( ContentHandler.class );
final AttributesImpl attrs = new AttributesImpl();
add( attrs, SAXMetaClassSerializer.NAME_ATTRIBUTE, name );
add( attrs, SAXMetaClassSerializer.TYPE_ATTRIBUTE, value );
start( mockHandler, SAXMetaClassSerializer.PARAMETERS_ELEMENT, attrs );
end( mockHandler, SAXMetaClassSerializer.PARAMETERS_ELEMENT );
final ContentHandler handler = (ContentHandler) mockHandler.proxy();
final SAXMetaClassSerializer serializer = new SAXMetaClassSerializer();
final ParameterDescriptor[] parameters = new ParameterDescriptor[]
{
new ParameterDescriptor( name, value )
};
serializer.serializeParameters( handler, parameters );
mockHandler.verify();
}
public void testSerializeMethods()
throws Exception
{
final String name = "X";
final String type = "Y";
final Mock mockHandler = new Mock( ContentHandler.class );
start( mockHandler, SAXMetaClassSerializer.METHODS_ELEMENT, new AttributesImpl() );
final AttributesImpl attrs = new AttributesImpl();
add( attrs, SAXMetaClassSerializer.NAME_ATTRIBUTE, name );
add( attrs, SAXMetaClassSerializer.TYPE_ATTRIBUTE, type );
start( mockHandler, SAXMetaClassSerializer.METHOD_ELEMENT, attrs );
end( mockHandler, SAXMetaClassSerializer.METHOD_ELEMENT );
end( mockHandler, SAXMetaClassSerializer.METHODS_ELEMENT );
final ContentHandler handler = (ContentHandler) mockHandler.proxy();
final SAXMetaClassSerializer serializer = new SAXMetaClassSerializer();
final MethodDescriptor[] methods = new MethodDescriptor[]
{
new MethodDescriptor( name, type, ParameterDescriptor.EMPTY_SET, Attribute.EMPTY_SET )
};
serializer.serializeMethods( handler, methods );
mockHandler.verify();
}
public void testSerializeFields()
throws Exception
{
final String name = "X";
final String type = "Y";
final Mock mockHandler = new Mock( ContentHandler.class );
start( mockHandler, SAXMetaClassSerializer.FIELDS_ELEMENT, new AttributesImpl() );
final AttributesImpl attrs = new AttributesImpl();
add( attrs, SAXMetaClassSerializer.NAME_ATTRIBUTE, name );
add( attrs, SAXMetaClassSerializer.TYPE_ATTRIBUTE, type );
start( mockHandler, SAXMetaClassSerializer.FIELD_ELEMENT, attrs );
end( mockHandler, SAXMetaClassSerializer.FIELD_ELEMENT );
end( mockHandler, SAXMetaClassSerializer.FIELDS_ELEMENT );
final ContentHandler handler = (ContentHandler) mockHandler.proxy();
final SAXMetaClassSerializer serializer = new SAXMetaClassSerializer();
final FieldDescriptor[] fields = new FieldDescriptor[]
{
new FieldDescriptor( name, type, Attribute.EMPTY_SET )
};
serializer.serializeFields( handler, fields );
mockHandler.verify();
}
public void testSerializeClass()
throws Exception
{
final String type = "Y";
final Mock mockHandler = new Mock( ContentHandler.class );
final AttributesImpl attrs = new AttributesImpl();
add( attrs, SAXMetaClassSerializer.TYPE_ATTRIBUTE, type );
add( attrs, SAXMetaClassSerializer.VERSION_ATTRIBUTE, MetaClassIOXml.VERSION );
start( mockHandler, SAXMetaClassSerializer.CLASS_ELEMENT, attrs );
end( mockHandler, SAXMetaClassSerializer.CLASS_ELEMENT );
final ContentHandler handler = (ContentHandler) mockHandler.proxy();
final SAXMetaClassSerializer serializer = new SAXMetaClassSerializer();
final ClassDescriptor descriptor =
new ClassDescriptor( type,
Attribute.EMPTY_SET,
FieldDescriptor.EMPTY_SET,
MethodDescriptor.EMPTY_SET );
serializer.serializeClass( handler, descriptor );
mockHandler.verify();
}
public void testSerializeClassAsDocument()
throws Exception
{
final String type = "Y";
final Mock mockHandler = new Mock( ContentHandler.class );
final AttributesImpl attrs = new AttributesImpl();
add( attrs, SAXMetaClassSerializer.TYPE_ATTRIBUTE, type );
add( attrs, SAXMetaClassSerializer.VERSION_ATTRIBUTE, MetaClassIOXml.VERSION );
mockHandler.expect( "startDocument", C.NO_ARGS );
start( mockHandler, SAXMetaClassSerializer.CLASS_ELEMENT, attrs );
end( mockHandler, SAXMetaClassSerializer.CLASS_ELEMENT );
mockHandler.expect( "endDocument", C.NO_ARGS );
final ContentHandler handler = (ContentHandler) mockHandler.proxy();
final SAXMetaClassSerializer serializer = new SAXMetaClassSerializer();
final ClassDescriptor descriptor =
new ClassDescriptor( type,
Attribute.EMPTY_SET,
FieldDescriptor.EMPTY_SET,
MethodDescriptor.EMPTY_SET );
serializer.serialize( handler, descriptor );
mockHandler.verify();
}
private void end( final Mock mockHandler, final String name )
{
mockHandler.expect( "endElement", END( name ) );
}
private void start( final Mock mockHandler,
final String name,
final AttributesImpl attrs )
{
mockHandler.expect( "startElement", ST( name, attrs ) );
}
private static ConstraintMatcher END( final String name )
{
final Constraint[] constraints = new Constraint[]
{
C.eq( "" ), C.eq( name ), C.eq( name )
};
return new FullConstraintMatcher( constraints );
}
private static ConstraintMatcher ST( final String name,
final AttributesImpl attr )
{
final Constraint[] constraints = new Constraint[]
{
C.eq( "" ), C.eq( name ), C.eq( name ), AT( attr )
};
return new FullConstraintMatcher( constraints );
}
private static Constraint AT( final AttributesImpl attr )
{
return new EqAttributesConstraint( attr );
}
private void add( final AttributesImpl atts,
final String name,
final String value )
{
atts.addAttribute( "", name, name, "CDATA", value );
}
}
-------------------------------------------------------
This SF.net email is sponsored by: The SF.net Donation Program.
Do you like what SourceForge.net is doing for the Open
Source Community? Make a contribution, and help us add new
features and functionality. Click here: http://sourceforge.net/donate/