/******************************************************************************* * Copyright (c) 1998, 2015 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; } }