blob: 0867877e388617c5681d3c804841224e0e155a2f [file] [log] [blame]
/*
* Copyright (c) 1998, 2021 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 v. 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0,
* or the Eclipse Distribution License v. 1.0 which is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
* SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
*/
// Contributors:
// Oracle - initial API and implementation from Oracle TopLink
package org.eclipse.persistence.testing.sdo.helper.datafactory;
import commonj.sdo.DataObject;
import junit.textui.TestRunner;
import org.eclipse.persistence.sdo.SDOConstants;
import org.eclipse.persistence.sdo.SDOProperty;
import org.eclipse.persistence.sdo.SDOType;
import org.eclipse.persistence.sdo.helper.SDOTypeHelper;
import org.eclipse.persistence.testing.sdo.helper.xmlhelper.SDOXMLHelperTestCases;
import org.eclipse.persistence.exceptions.SDOException;
public class SDODataFactoryCreateSimpleTestCases extends SDOXMLHelperTestCases {
protected SDOType simpleType;
public SDODataFactoryCreateSimpleTestCases(String name) {
super(name);
}
@Override
public void setUp() {
super.setUp();
simpleType = getSDOType();
}
public void testCreateByType() {
DataObject dataObject = dataFactory.create(simpleType);
assertEquals(simpleType, dataObject.getType());
}
public void testCreateByClass() {
DataObject dataObject = dataFactory.create(USAddress.class);
assertEquals(simpleType, dataObject.getType());
}
public void testCreateByInvalidClass() {
Class oldClass = simpleType.getInstanceClass();
simpleType.setInstanceClass(String.class);
try {
DataObject dataObject = dataFactory.create(simpleType);
fail("An SDOException should have occurred but didn't");
} catch (SDOException e) {
assertEquals(SDOException.CLASS_NOT_FOUND ,e.getErrorCode());
} finally {
simpleType.setInstanceClass(oldClass);
}
}
public void testCreateByNullClass() {
Class oldClass = simpleType.getInstanceClass();
String oldClassName = simpleType.getInstanceClassName();
simpleType.setInstanceClass(null);
simpleType.setInstanceClassName(null);
try {
DataObject dataObject = dataFactory.create(USAddress.class);
fail("An exception should have occurred but didn't");
} catch (IllegalArgumentException e) {
} finally {
simpleType.setInstanceClass(oldClass);
simpleType.setInstanceClassName(oldClassName);
}
}
private SDOType getSDOType() {
SDOType type = new SDOType("http://testing", "USAddress");
type.setAbstract(false);
type.setInstanceClass(USAddress.class);
SDOProperty prop = new SDOProperty(aHelperContext);
prop.setName("name");
prop.setType(SDOConstants.SDO_STRING);
prop.setContainingType(type);
type.addDeclaredProperty(prop);
SDOProperty prop2 = new SDOProperty(aHelperContext);
prop2.setName("street");
prop2.setType(SDOConstants.SDO_STRING);
prop2.setContainingType(type);
type.addDeclaredProperty(prop2);
((SDOTypeHelper)typeHelper).addType(type);
return type;
}
public static void main(String[] args) {
String[] arguments = { "-c", "org.eclipse.persistence.testing.sdo.helper.datafactory.SDODataFactoryCreateSimpleTestCases" };
TestRunner.main(arguments);
}
}