blob: 736e5bce3ef076e4162f2f03ccee02fd7de99dfa [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 1998, 2013 Oracle and/or its affiliates. All rights reserved.
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0
* which accompanies this distribution.
* The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
* and the Eclipse Distribution License is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
* Contributors:
* Oracle - initial API and implementation from Oracle TopLink
******************************************************************************/
package org.eclipse.persistence.testing.tests.conversion;
import org.eclipse.persistence.internal.helper.*;
import org.eclipse.persistence.tools.schemaframework.PopulationManager;
import org.eclipse.persistence.testing.framework.*;
import org.eclipse.persistence.testing.models.conversion.ConversionDataObject;
import org.eclipse.persistence.testing.models.conversion.ConversionManagerSystem;
/**
* <P>
* <B>Purpose</B>: This test model tests the Conversion Manager.<P>
*
* <B>Motivation</B>: The Conversion Manager is crucial to TopLink since all conversions from
* and to the Database are handled by it. This test case was written to ensure that all the
* conversions that are being handled by the Conversion Manager are being done properly.<P>
*
* <B>Design</B>: This test model contains a domain class ConversionDataObject
* which has one instance variable of each type that the Conversion Manager supports.
* The test instantiates several of these objects and runs through the standard Read,
* Write, Insert, Delete and Update tests.<P>
*
* <B>Responsibilities</B>: Ensure that the Conversion Manager can convert all types
* when writing to or reading from the Database.<P>
*
* <B>Features Used</B>:
* <UL>
* <LI>ConversionManager
* </UL>
*
* <B>Paths Covered</B>: The following conversions are made:
* <UL>
* <LI>Character value (both primitive and wrapper) to/from Database
* <LI>Integer value (both primitive and wrapper) to/from Database
* <LI>Float value (both primitive and wrapper) to/from Database
* <LI>Boolean value (both primitive and wrapper) to/from Database
* <LI>Long value (both primitive and wrapper) to/from Database
* <LI>Double value (both primitive and wrapper) to/from Database
* <LI>Byte value (both primitive and wrapper) to/from Database
* <LI>Byte array to/from Database
* <LI>Short value (both primitive and wrapper) to/from Database
* <LI><CODE>Number</CODE> value to/from Database
* <LI><CODE>java.math.BigDecimal</CODE> value to/from Database
* <LI><CODE>java.math.BigInteger</CODE> value to/from Database
* <LI><CODE>java.sql.Date</CODE> value to/from Database
* <LI><CODE>java.sql.Time</CODE> value to/from Database
* <LI><CODE>java.sql.Timestamp</CODE> value to/from Database
* <LI><CODE>java.util.Date</CODE> value to/from Database
* <LI><CODE>String</CODE> value to/from Database
* </UL>
*
* @author Rick Barkhouse
*/
public class ConversionManagerTestModel extends TestModel {
/**
* ConversionManagerTestModel constructor comment.
*/
public ConversionManagerTestModel() {
setDescription("This suite tests all possible conversions through direct field mapping.");
}
public void addForcedRequiredSystems() {
addForcedRequiredSystem(new ConversionManagerSystem());
}
public void addTests() {
addTest(getReadObjectTestSuite());
addTest(getReadAllTestSuite());
addTest(getDeleteObjectTestSuite());
addTest(getInsertObjectTestSuite());
addTest(getUpdateObjectTestSuite());
addTest(getConvertObjectTestSuite());
addTest(getConvertClassTypeTestSuite());
addTest(getClassLoaderTestSuite());
}
public TestSuite getDeleteObjectTestSuite() {
TestSuite suite = new TestSuite();
suite.setName("ConversionManagerDeleteObjectTestSuite");
suite.setDescription("This suite tests the deletion of each object in the conversion manager model.");
PopulationManager manager = PopulationManager.getDefaultManager();
suite.addTest(new DeleteObjectTest(manager.getObject(ConversionDataObject.class, "example1")));
suite.addTest(new DeleteObjectTest(manager.getObject(ConversionDataObject.class, "example2")));
suite.addTest(new DeleteObjectTest(manager.getObject(ConversionDataObject.class, "example3")));
return suite;
}
public TestSuite getInsertObjectTestSuite() {
TestSuite suite = new TestSuite();
suite.setName("ConversionManagerInsertObjectTestSuite");
suite.setDescription("This suite tests the insertion of each object in the conversion manager model.");
suite.addTest(new InsertObjectTest(ConversionDataObject.example1()));
suite.addTest(new InsertObjectTest(ConversionDataObject.example2()));
suite.addTest(new InsertObjectTest(ConversionDataObject.example3()));
return suite;
}
public TestSuite getReadAllTestSuite() {
TestSuite suite = new TestSuite();
suite.setName("ConversionManagerReadAllTestSuite");
suite.setDescription("This suite tests the reading of all the objects of each class in the conversion manager model.");
suite.addTest(new ReadAllTest(ConversionDataObject.class, 3));
return suite;
}
public TestSuite getReadObjectTestSuite() {
TestSuite suite = new TestSuite();
suite.setName("ConversionManagerReadObjectTestSuite");
suite.setDescription("This suite test the reading of each object in the conversion manager model.");
PopulationManager manager = PopulationManager.getDefaultManager();
suite.addTest(new ReadObjectTest(manager.getObject(ConversionDataObject.class, "example1")));
suite.addTest(new ReadObjectTest(manager.getObject(ConversionDataObject.class, "example2")));
suite.addTest(new ReadObjectTest(manager.getObject(ConversionDataObject.class, "example3")));
return suite;
}
public TestSuite getUpdateObjectTestSuite() {
TestSuite suite = new TestSuite();
suite.setName("ConversionManagerUpdateObjectTestSuite");
suite.setDescription("This suite tests the updating of each object in the conversion manager model.");
PopulationManager manager = PopulationManager.getDefaultManager();
suite.addTest(new WriteObjectTest(manager.getObject(ConversionDataObject.class, "example1")));
suite.addTest(new UnitOfWorkBasicUpdateObjectTest(manager.getObject(ConversionDataObject.class, "example1")));
suite.addTest(new UnitOfWorkBasicUpdateObjectTest(manager.getObject(ConversionDataObject.class, "example2")));
suite.addTest(new UnitOfWorkBasicUpdateObjectTest(manager.getObject(ConversionDataObject.class, "example3")));
return suite;
}
public TestSuite getConvertObjectTestSuite() {
TestSuite suite = new TestSuite();
suite.setName("ConversionManagerConvertObjectTestSuite");
suite.setDescription("This test suite verifies object conversion.");
// test conversions
suite.addTest(new ConvertObjectTest(Helper.buildHexStringFromBytes(new byte[] { 4, 5, 6 }), ClassConstants.ABYTE));
suite.addTest(new ConvertObjectTest(new char[] { 'a', 'b', 'c' }, ClassConstants.ACHAR));
suite.addTest(new ConvertObjectTest(new java.math.BigInteger("100"), ClassConstants.BIGDECIMAL));
suite.addTest(new ConvertObjectTest(new java.math.BigInteger("100"), ClassConstants.BIGINTEGER));
suite.addTest(new ConvertObjectTest(new String("100"), ClassConstants.BIGINTEGER));
suite.addTest(new ConvertObjectTest(new Integer(100), ClassConstants.BIGINTEGER));
suite.addTest(new ConvertObjectTest(new Character('1'), ClassConstants.BOOLEAN));
suite.addTest(new ConvertObjectTest(new Character('t'), ClassConstants.BOOLEAN));
suite.addTest(new ConvertObjectTest(new Character('0'), ClassConstants.BOOLEAN));
suite.addTest(new ConvertObjectTest(new Character('f'), ClassConstants.BOOLEAN));
suite.addTest(new ConvertObjectTest(Helper.buildHexStringFromBytes(new byte[] { 4 }), ClassConstants.PBYTE));
suite.addTest(new ConvertObjectTest(new Integer(100), ClassConstants.CHAR));
//suite.addTest(new ConvertObjectTest(new org.eclipse.persistence.internal.helper.Date(1), ClassConstants.SQLDATE));
suite.addTest(new ConvertObjectTest(new java.util.GregorianCalendar(), ClassConstants.SQLDATE));
suite.addTest(new ConvertObjectTest(new Long(100), ClassConstants.SQLDATE));
suite.addTest(new ConvertObjectTest(new Boolean("true"), ClassConstants.LONG));
suite.addTest(new ConvertObjectTest(new Boolean("false"), ClassConstants.LONG));
suite.addTest(new ConvertObjectTest(new String("1"), ClassConstants.NUMBER));
suite.addTest(new ConvertObjectTest(new Boolean("true"), ClassConstants.NUMBER));
suite.addTest(new ConvertObjectTest(new Boolean("false"), ClassConstants.NUMBER));
suite.addTest(new ConvertObjectTest(new Integer(1), ClassConstants.SHORT));
suite.addTest(new ConvertObjectTest(new Boolean("true"), ClassConstants.SHORT));
suite.addTest(new ConvertObjectTest(new Boolean("false"), ClassConstants.SHORT));
//suite.addTest(new ConvertObjectTest(new org.eclipse.persistence.internal.helper.Time(100), ClassConstants.TIME));
suite.addTest(new ConvertObjectTest(new String("12:00:00"), ClassConstants.TIME));
suite.addTest(new ConvertObjectTest(new java.util.Date(100), ClassConstants.TIME));
suite.addTest(new ConvertObjectTest(new java.util.GregorianCalendar(), ClassConstants.TIME));
suite.addTest(new ConvertObjectTest(new Long(100), ClassConstants.TIME));
//suite.addTest(new ConvertObjectTest(new org.eclipse.persistence.internal.helper.Timestamp(100), ClassConstants.TIMESTAMP));
suite.addTest(new ConvertObjectTest(new String("12:00:00"), ClassConstants.TIMESTAMP));
suite.addTest(new ConvertObjectTest(new java.util.Date(100), ClassConstants.TIMESTAMP));
suite.addTest(new ConvertObjectTest(new java.util.GregorianCalendar(), ClassConstants.TIMESTAMP));
suite.addTest(new ConvertObjectTest(new java.util.GregorianCalendar(), ClassConstants.UTILDATE));
suite.addTest(new ConvertObjectTest(new Long(100), ClassConstants.UTILDATE));
// test exception handling
suite.addTest(new ConvertObjectTest(new Character('1'), ClassConstants.BIGDECIMAL, true));
suite.addTest(new ConvertObjectTest(new Character('1'), ClassConstants.BIGINTEGER, true));
suite.addTest(new ConvertObjectTest(new String("a"), ClassConstants.BIGINTEGER, true));
suite.addTest(new ConvertObjectTest(new java.sql.Date(1), ClassConstants.BOOLEAN, true));
suite.addTest(new ConvertObjectTest(new java.sql.Date(1), ClassConstants.BYTE, true));
suite.addTest(new ConvertObjectTest(new String("a"), ClassConstants.BYTE, true));
suite.addTest(new ConvertObjectTest(new char[] { 'a' }, ClassConstants.APBYTE, true));
suite.addTest(new ConvertObjectTest(new java.util.GregorianCalendar(), ClassConstants.CHAR, true));
suite.addTest(new ConvertObjectTest(new Boolean("true"), ClassConstants.SQLDATE, true));
suite.addTest(new ConvertObjectTest(new String("a"), ClassConstants.DOUBLE, true));
suite.addTest(new ConvertObjectTest(new Boolean("true"), ClassConstants.DOUBLE, true));
suite.addTest(new ConvertObjectTest(new String("a"), ClassConstants.FLOAT, true));
suite.addTest(new ConvertObjectTest(new Boolean("true"), ClassConstants.FLOAT, true));
suite.addTest(new ConvertObjectTest(new java.sql.Date(1), ClassConstants.INTEGER, true));
suite.addTest(new ConvertObjectTest(new String("a"), ClassConstants.LONG, true));
suite.addTest(new ConvertObjectTest(new java.util.GregorianCalendar(), ClassConstants.LONG, true));
suite.addTest(new ConvertObjectTest(new String("a"), ClassConstants.NUMBER, true));
suite.addTest(new ConvertObjectTest(new java.util.GregorianCalendar(), ClassConstants.NUMBER, true));
suite.addTest(new ConvertObjectTest(new String("a"), ClassConstants.SHORT, true));
suite.addTest(new ConvertObjectTest(new java.util.GregorianCalendar(), ClassConstants.SHORT, true));
suite.addTest(new ConvertObjectTest(new Boolean("true"), ClassConstants.TIME, true));
suite.addTest(new ConvertObjectTest(new Boolean("true"), ClassConstants.TIMESTAMP, true));
suite.addTest(new ConvertObjectTest(new Boolean("true"), ClassConstants.UTILDATE, true));
suite.addTest(new ConvertObjectTest(new Integer(1), ConversionManager.class, true));
suite.addTest(new ConvertByteCharArrayToStringTest());
return suite;
}
public TestSuite getConvertClassTypeTestSuite() {
TestSuite suite = new TestSuite();
suite.setName("ConversionManagerConvertClassTypeTestSuite");
suite.setDescription("This test suite verifies class type conversion.");
suite.addTest(new ConvertClassTypeTest("int", Integer.TYPE));
suite.addTest(new ConvertClassTypeTest("boolean", Boolean.TYPE));
suite.addTest(new ConvertClassTypeTest("char", Character.TYPE));
suite.addTest(new ConvertClassTypeTest("short", Short.TYPE));
suite.addTest(new ConvertClassTypeTest("byte", Byte.TYPE));
suite.addTest(new ConvertClassTypeTest("float", Float.TYPE));
suite.addTest(new ConvertClassTypeTest("double", Double.TYPE));
suite.addTest(new ConvertClassTypeTest("long", Long.TYPE));
suite.addTest(new ConvertClassTypeTest("", null));
suite.addTest(new ConvertClassTypeTest(char.class, Character.class));
suite.addTest(new ConvertClassTypeTest(float.class, Float.class));
suite.addTest(new ConvertClassTypeTest(short.class, Short.class));
suite.addTest(new ConvertClassTypeTest(byte.class, Byte.class));
suite.addTest(new ConvertClassTypeTest(boolean.class, Boolean.class));
return suite;
}
public TestSuite getClassLoaderTestSuite() {
TestSuite suite = new TestSuite();
suite.setName("ConversionManagerClassLoaderTestSuite");
suite.setDescription("This test suite tests the getLoader method.");
suite.addTest(new ClassLoaderTest());
return suite;
}
}