blob: 8e3b8cd098153c328744108f1d5574fddca955ad [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.model.dataobject;
import commonj.sdo.Property;
import junit.framework.TestCase;
import junit.textui.TestRunner;
import org.eclipse.persistence.sdo.SDOProperty;
import org.eclipse.persistence.exceptions.SDOException;
public class SDODataObjectSetGetWithIndexTest extends SDODataObjectTestCases {
public SDODataObjectSetGetWithIndexTest(String name) {
super(name);
}
public static void main(String[] args) {
String[] arguments = { "-c", "org.eclipse.persistence.testing.sdo.model.dataobject.SDODataObjectSetGetWithIndexTest" };
TestRunner.main(arguments);
}
//purpose: a property index is in instance property boundry
public void testInstancePropertiesWithDefinedProperty() {
// check it is in the list
assertTrue(DEFINED_PROPERTY_INDEX <= (dataObject.getInstanceProperties().size() - 1));
}
//required conditions: none
//purpose: Set value for property with valid index and retrieve it.
public void testSetGetWithDefinedProperty() {
dataObject.set(DEFINED_PROPERTY_INDEX, CONTROL_STRING_1);// set defined Property value
String testValue = (String)dataObject.get(DEFINED_PROPERTY_INDEX);
assertEquals(CONTROL_STRING_1, testValue);// check value is set as we want
}
//purpose: Confirm that index id out of boundry of instance properties list.
public void testInstancePropertiesWithUndefinedProperty() {
// check it is not in the list
assertFalse(UNDEFINED_PROPERTY_INDEX <= (dataObject.getInstanceProperties().size() - 1));
}
//required conditions: 1) DataObject is open
//purpose: when property is undefined, getting it should throw exception
// !! inside !!
public void testGetWithUnDefinedProperty_openDataObject() {
try {
dataObject.get(UNDEFINED_PROPERTY_INDEX);// get undefined Property value
} catch (SDOException e) {
assertEquals(SDOException.PROPERTY_NOT_FOUND_AT_INDEX ,e.getErrorCode());
return;
}
fail("an SDOException should have occurred.");
}
// !! !!
//required conditions: 1) DataObject is open
//purpose: when property is undefined, set still does 'set', get still 'get', instance property list is still ok.
// test undefined is not in instance property list
// tset after set, it is in the list, and value is what we want
public void testSetGetWithUnDefinedProperty_openDataObject() {
try {
dataObject.set(UNDEFINED_PROPERTY_INDEX, CONTROL_STRING_1);// set undefined Property value
} catch (SDOException e) {
assertEquals(SDOException.PROPERTY_NOT_FOUND_AT_INDEX ,e.getErrorCode());
return;
}
fail("an SDOException should have occurred.");
}
//purpose: check dataObject is not open
public void testDataObject_Not_Open() {
assertFalse(dataObject_Not_Open.getType().isOpen());// check if DataObject is not Opened
}
//purpose: check property index is out of bountry of instance property list
public void testDataObject_Not_In_List() {
// check if it is undefined
assertFalse(UNDEFINED_PROPERTY_INDEX < (dataObject_Not_Open.getInstanceProperties().size() - 1));
}
//!! !!
//required conditions: 1) DataObject is not open
//purpose: IllegalArgumentException can be thrown for undefined Property when set.
public void testSetPropertyInvalidIndex_WithDataObject_Not_Open() {
try {
dataObject_Not_Open.set(UNDEFINED_PROPERTY_INDEX, CONTROL_STRING_1);// set undefined Property value
} catch (SDOException e) {
assertEquals(SDOException.PROPERTY_NOT_FOUND_AT_INDEX ,e.getErrorCode());
return;
}
fail("an SDOException should have occurred.");
}
//required conditions: 1) DataObject is not open
//purpose: IllegalArgumentException can be thrown for undefined Property when get.
public void testGetInvalidPropertyIndex_WithDataObject_Not_Open() {
try {
dataObject_Not_Open.get(UNDEFINED_PROPERTY_INDEX);// get undefined Property value
} catch (SDOException e) {
assertEquals(SDOException.PROPERTY_NOT_FOUND_AT_INDEX ,e.getErrorCode());
return;
}
fail("an SDOException should have occurred.");
}
//required conditions: 1) DataObject is not open
//purpose: IllegalArgumentException can be thrown for valid Property index when set.
public void testSetValidPropertyINdex_WithDataObject_Not_Open() {
try {
dataObject_Not_Open.set(DEFINED_PROPERTY_INDEX, CONTROL_STRING_1);// set defined Property value
} catch (SDOException e) {
assertEquals(SDOException.PROPERTY_NOT_FOUND_AT_INDEX ,e.getErrorCode());
return;
}
fail("an SDOException should have occurred.");
}
//required conditions: 1) DataObject is open 2) Property is read only
//purpose: UnsupportedOperationException can be thrown for read only Property when set.
public void testSetinvalidPropertyIndex_WithProperty_ReadOnly() {
// check if it is defined
assertTrue(DEFINED_PROPERTY_READONLY_INDEX <= (dataObject_WithReadOnlyProperty.getInstanceProperties().size() - 1));
// check property is read only
assertTrue(dataObject_WithReadOnlyProperty.getInstanceProperty(DEFINED_PROPERTY_READONLY_NAME).isReadOnly());
try {
dataObject_WithReadOnlyProperty.set(DEFINED_PROPERTY_READONLY_INDEX, CONTROL_STRING_1);// set undefined Property value
fail("An UnsupportedOperationException should have been thrown.");
} catch (UnsupportedOperationException e) {
}
}
//required condition: none
//purpose: defined property not being set value, should return default value
public void testGetDefinedProperty_ForDefaultValue() {
String testValue = (String)dataObject.get(DEFINED_PROPERTY_INDEX);
// TODO: Verify ValueStore refactor does not change behavior
assertEquals(DEFAULT_VALUE, testValue);
}
//required condition: none
//purpose: test get with index -1
public void testGetWith_MINUS_ONE() {
try {
dataObject_Not_Open.get(MINUS_ONE);// get undefined Property value
fail("An IllegalArgumentException should have been thrown.");
} catch (SDOException e) {
assertEquals(SDOException.PROPERTY_NOT_FOUND_AT_INDEX ,e.getErrorCode());
return;
}
fail("an SDOException should have occurred.");
}
//required condition: none
//purpose: test set with -1
public void testSetWith_MINUS_ONE() {
try {
SDOProperty NUll = null;
dataObject_Not_Open.set(MINUS_ONE, CONTROL_STRING_1);// set undefined Property value
} catch (SDOException e) {
assertEquals(SDOException.PROPERTY_NOT_FOUND_AT_INDEX ,e.getErrorCode());
return;
}
fail("an SDOException should have occurred.");
}
}