Menu

[r3159]: / trunk / ch.sahits.codegen.java.jugr / jet_templates / equalshashCodeTestCase.javajet  Maximize  Restore  History

Download this file

144 lines (131 with data), 6.2 kB

<%@ jet imports="java.util.* ch.sahits.model.* ch.sahits.model.db.* ch.sahits.model.java.* ch.sahits.model.java.db.* ch.sahits.codegen.java.model.util.* java.lang.reflect.* " package="PAGAGE_NAME" class="CLASS_NAME" %>
<%DataBaseTable dbt = (DataBaseTable) argument; %>
<%=ConvenientCodegen.toPackageDefinition(dbt.getPackageName()) 
%><% Set importClasses = new HashSet();
     importClasses.addAll(dbt.usedClasses()); 
	if (dbt.hasSuperClass() && !dbt.superclasses().get(0).equals(Object.class)){
		// Add interfaces from abstract methods of super class
		Class clazz = (Class)dbt.superclasses().get(0);
		MethodReflector mr = new MethodReflector(clazz);
		importClasses.addAll(mr.neededImportsOfAbstractMethods());
	}
	if (!dbt. interfaces().isEmpty()){
		Class[] interfaces = dbt.getInterfaces();
		for (int i=0;i<interfaces.length; i++ ){
			MethodReflector mr = new MethodReflector(interfaces[i]);
			importClasses.addAll(mr.needeImportsOfNonPrivateMethods());
		}
	 }
     for (Iterator i = importClasses.iterator(); i.hasNext(); ){
         Class c = (Class)i.next();
         if (!ConvenientCodegen.isPrimitiveClass(c)){
%>import <%=c.getName() %>;

<% } // end if
 } %><% if (dbt.hasSuperClass() && !ConvenientCodegen.isPrimitiveClass((Class)dbt.superclasses().get(0))){
%>
import <%=((Class)dbt.superclasses().get(0)).getName() %>;<%
} %><% if (!dbt.interfaces().isEmpty()){
	   Class[] interfaces = dbt.getInterfaces();
	   for (int i=0;i<interfaces.length; i++ ){%>
import <%=interfaces[i].getName() %>;
<% }
} %>
import java.util.Random;
import java.util.UUID;


/**
 * This class represents the database table
 * <%=dbt.getTableName() %>.
 */
<% if (dbt.isPublic()){  %>
public <% } else if (dbt.isProtected()){ %>
protected <% } else if (dbt.isPrivate()){ %>
private <% } 
%><% if (dbt.isAbstract()) { 
%>abstract <% } 
%><% if (dbt.isFinal()) {
%>final <% } 
%>class <%=dbt.getClassName() %><% if (dbt.hasSuperClass() && !dbt.superclasses().get(0).equals(Object.class)){
%> extends <%=ConvenientCodegen.getSimpleClassName((Class)dbt.superclasses().get(0)) %><% } 
%><% if (!dbt. interfaces().isEmpty()){
Class[] interfaces = dbt.getInterfaces();
%> implements <% for (int i=0;i<interfaces.length; i++ ){ 
			  %><%=ConvenientCodegen.getSimpleClassName((Class)interfaces[i]) 
			  %><% if (i==interfaces.length-1){
			  		%> <% } else {
			  		%>, <% }
			  %><% } 
%><% } 
%> {
<% String className = dbt.getClassName().substring(0,dbt.getClassName().indexOf("Test")); %>
	private <%=className %> x;
	private <%=className %> xx;
	private <%=className %> y;
	private <%=className %> z;
	private <%=className %> zx;

	private Random rnd = new Random(<%=dbt.getClassName() %>.class.hashCode()+System.nanoTime());

	protected void setUp() throws Exception {
		x = new <%=className %>();
		<% List fields = dbt.getFields();
		for (Iterator i = fields.iterator(); i.hasNext(); ){
       DataBaseTableField field = (DataBaseTableField)i.next();
%>x.<%= ConvenientCodegen.toName( "set_"+field.getFieldName(),"_" ) %><% if (ConvenientCodegen.getSimpleClassName( field.getFieldType()).equals("int") || field.getFieldType().equals("Integer")) %>(rnd.nextInt());
<% else %>(UUID.randomUUID().toString());
		<% } %>
		xx = new <%=className %>();
		<% for (Iterator i = fields.iterator(); i.hasNext(); ){
       DataBaseTableField field = (DataBaseTableField)i.next();
%>xx.<%= ConvenientCodegen.toName( "set_"+field.getFieldName(),"_" ) %>(x.<%= ConvenientCodegen.toName( "get_"+field.getFieldName(),"_" ) %>());
		<% } %>
		y = new <%=className %>();
		<% for (Iterator i = fields.iterator(); i.hasNext(); ){
       DataBaseTableField field = (DataBaseTableField)i.next();
%>y.<%= ConvenientCodegen.toName( "set_"+field.getFieldName(),"_" ) %><% if (ConvenientCodegen.getSimpleClassName( field.getFieldType()).equals("int") || field.getFieldType().equals("Integer")) %>(rnd.nextInt());
<% else %>(UUID.randomUUID().toString());
		<% } %>
		z = new <%=className %>();
		<% for (Iterator i = fields.iterator(); i.hasNext(); ){
       DataBaseTableField field = (DataBaseTableField)i.next();
%>z.<%= ConvenientCodegen.toName( "set_"+field.getFieldName(),"_" ) %><% if (ConvenientCodegen.getSimpleClassName( field.getFieldType()).equals("int") || field.getFieldType().equals("Integer")) %>(rnd.nextInt());
<% else %>(UUID.randomUUID().toString());
		<% } %>
		zx = new <%=className %>();
		<% for (Iterator i = fields.iterator(); i.hasNext(); ){
       DataBaseTableField field = (DataBaseTableField)i.next();
%>zx.<%= ConvenientCodegen.toName( "set_"+field.getFieldName(),"_" ) %>(x.<%= ConvenientCodegen.toName( "get_"+field.getFieldName(),"_" ) %>());
		<% } %>
	}







	public void testEqualsObject() {
		assertEquals("The equals method fails on the reflexifity test: x.equals(x)==false",x, x);
		assertEquals("The equals method fails on objects with the same status: xx.equals(x)==false",xx, x);
		assertEquals("The equals method fails on objects with the same status: zx.equals(xx)==false",zx, xx);
		assertEquals("The equals method fails on the symetry test: xx.equals(x)== x.equals(xx) is false",xx.equals(x), x.equals(xx));
		assertEquals("The equals method fails on the transitivity test: (xx==x && zx==xx) but zx.equals(x)==false",zx, x);
		assertEquals("The equals method fails on the transitivity test: (x==zx && zx==y)==false but x.equals(y)==true",x.equals(zx) && zx.equals(y), x.equals(y));
		assertNotNull(x);
		assertFalse("The equals test fails on the null comparrison: x!=null == true", x.equals(null));
	}

	public void testHashCode() {
		final int firstXHash = x.hashCode();
		for (int i=0;i<100;i++){
			assertEquals("The hash value of x changed without x changing its status",firstXHash, x.hashCode());
		}
		assertEquals(x, xx);
		for (int i=0;i<100;i++){
			if (x.equals(xx)){
				assertEquals("The hashCode of equal objects differs.",x.hashCode(), xx.hashCode());
			}
		}
		assertEquals(x, zx);
		for (int i=0;i<100;i++){
			if (x.equals(zx)){
				assertEquals("The hashCode of equal objects differs.",x.hashCode(), zx.hashCode());
			}
		}
		assertEquals(xx, zx);
		for (int i=0;i<100;i++){
			if (zx.equals(xx)){
				assertEquals("The hashCode of equal objects differs.",zx.hashCode(), xx.hashCode());
			}
		}
	}
}
Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.