blob: 9541b0bfe9049b009c17820858b3038718657353 [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 java.lang.System;
import junit.framework.TestCase;
import junit.textui.TestRunner;
import org.eclipse.persistence.sdo.SDOConstants;
import org.eclipse.persistence.sdo.SDOProperty;
import org.eclipse.persistence.exceptions.SDOException;
public class SDODataObjectUnsetIsSetTest extends SDODataObjectTestCases {
public SDODataObjectUnsetIsSetTest(String name) {
super(name);
}
public static void main(String[] args) {
String[] arguments = { "-c", "org.eclipse.persistence.testing.sdo.model.dataobject.SDODataObjectUnsetIsSetTest" };
TestRunner.main(arguments);
}
//purpose: if dataObject just been new and property has not been set, iset() return false
public void testIsSetWithNotYetSetDefinedProperty_SingleValue() {
Property test = dataObject.getInstanceProperty(DEFINED_PROPERTY_NAME);
assertFalse(dataObject.isSet(test));
}
//purpose: if dataObject just been new and property has not been set, iset() return false
public void testIsSetWithNotYetSetDefinedProperty_SingleValue_Path() {
assertFalse(dataObject.isSet(DEFINED_PROPERTY_NAME));
}
//purpose: if dataObject just been new and property has not been set, iset() return false
public void testIsSetWithNotYetSetDefinedProperty_SingleValue_Index() {
assertFalse(dataObject.isSet(0));
}
//purpose: if dataObject just been new and property has not been set, iset() return false
public void testIsSetWithNotYetSetDefinedProperty_SingleValue_Path_a_b() {
assertFalse(dataObject_Path_a_b.isSet(DEFINED_PROPERTY_NAME_A_B));
}
//purpose: if property has not been unSet, iset() return false
public void testIsSetWithUnSetDefinedProperty_SingleValue() {
Property test = dataObject.getInstanceProperty(DEFINED_PROPERTY_NAME);
dataObject.unset(test);
assertFalse(dataObject.isSet(test));
}
//purpose: if property has been set and then unSet, isSet() return true first and false later
public void testIsSetWithSetThenUnSetDefinedProperty_SingleValue() {
Property test = dataObject.getInstanceProperty(DEFINED_PROPERTY_NAME);
dataObject.set(test, CONTROL_STRING_1);
assertTrue(dataObject.isSet(test));
dataObject.unset(test);
assertFalse(dataObject.isSet(test));
}
//purpose: if current value isn't default value, iset() return false
public void testIsSetWithCurrentAsDefinedPropertyDefault_SingleValue() {
Property test = dataObject.getInstanceProperty(DEFINED_PROPERTY_NAME);
dataObject.set(test, CONTROL_STRING_2);
assertFalse(dataObject.get(test).equals(DEFAULT_VALUE));
assertTrue(dataObject.isSet(test));
}
//purpose: if property has been set to default value, iset() return true.
//SDO Specification 2.1:
//"Any call to set() without a call to unset() will cause isSet() to return true, regardless of the value being set. "(Page 16)
public void testIsSetWithSetDefinedPropertyAsDefault_SingleValue() {
Property test = dataObject.getInstanceProperty(DEFINED_PROPERTY_NAME);
dataObject.set(test, test.getDefault());
assertTrue(dataObject.get(test).equals(DEFAULT_VALUE));
assertTrue(dataObject.isSet(test));
}
//purpose: if property has been set, iset() return true
public void testIsSetWithDefinedPropertyJustSet_SingleValue() {
Property test = dataObject.getInstanceProperty(DEFINED_PROPERTY_NAME);
dataObject.set(test, CONTROL_STRING_1);
assertTrue(dataObject.isSet(test));
}
//purpose: set a property's value, then unset it, get its value should now return defaule value.
public void testUnSetWithDefinedProperty_SingleValue() {
Property test = dataObject.getInstanceProperty(DEFINED_PROPERTY_NAME);
dataObject.set(test, CONTROL_STRING_1);
dataObject.unset(test);
// TODO: Verify ValueStore refactor does not change behavior
assertEquals(DEFAULT_VALUE, (String)dataObject.get(test));
}
//purpose: set a property's value, then unset it, get its value should now return defaule value.
public void testUnSetWithDefinedProperty_SingleValue_Path() {
dataObject.set(DEFINED_PROPERTY_NAME, CONTROL_STRING_1);
dataObject.unset(DEFINED_PROPERTY_NAME);
// TODO: Verify ValueStore refactor does not change behavior
assertEquals(DEFAULT_VALUE, (String)dataObject.get(DEFINED_PROPERTY_NAME));
}
//purpose: set a property's value, then unset it, get its value should now return defaule value.
public void testUnSetWithDefinedProperty_SingleValue_Index() {
dataObject.set(DEFINED_PROPERTY_NAME, CONTROL_STRING_1);
dataObject.unset(0);
assertEquals(DEFAULT_VALUE, (String)dataObject.get(DEFINED_PROPERTY_NAME));
}
//purpose: set a property's value, then unset it, get its value should now return defaule value.
public void testUnSetWithDefinedProperty_SingleValue_Path_a_b() {
dataObject_Path_a_b.unset(DEFINED_PROPERTY_NAME_A_B);
assertEquals(DEFAULT_VALUE, (String)dataObject_Path_a_b.get(DEFINED_PROPERTY_NAME_A_B));
}
//purpose: unset undefined property should cause exception
public void testUnSetWithUndefinedProperty_SingleValue() {
Property test = dataObject.getInstanceProperty(UNDEFINED_PROPERTY_NAME);
try {
dataObject.unset(test);
} catch (SDOException e) {
assertEquals(SDOException.CANNOT_PERFORM_OPERATION_ON_NULL_ARGUMENT ,e.getErrorCode());
return;
}
fail("an SDOException should have occurred.");
}
//purpose: set undefined property should cause exception
public void testSetWithUndefinedProperty_SingleValue() {
Property test = dataObject.getInstanceProperty(UNDEFINED_PROPERTY_NAME);
try {
dataObject.isSet(test);
} catch (SDOException e) {
assertEquals(SDOException.CANNOT_PERFORM_OPERATION_ON_NULL_ARGUMENT ,e.getErrorCode());
return;
}
fail("An SDOException should have occurred.");
}
//bug 5770518
public void testUnsetUndefinedByProp() {
SDOProperty prop = new SDOProperty(getHelperContext());
prop.setName("nonExistant");
prop.setType(SDOConstants.SDO_STRING);
dataObject.unset(prop);
}
//bug 5770518
public void testUnsetUndefinedByPath() {
dataObject.unset("nonExistant");
//nothing should happen ie: no exception
}
//bug 5770518
public void testUnsetUndefinedByIndex() {
int totalSize = dataObject.getInstanceProperties().size();
try {
dataObject.unset(totalSize + 1);
} catch (SDOException e) {
assertEquals(SDOException.PROPERTY_NOT_FOUND_AT_INDEX, e.getErrorCode());
return;
}
fail("An SDOException should have occurred.");
}
//purpose: set a non-nullable property's value to null - this should result in an unset op
public void testSetNonNullablePropertyToNull() {
Property test = dataObject.getInstanceProperty(DEFINED_PROPERTY_NAME);
dataObject.set(test, null);
// TODO: Verify ValueStore refactor does not change behavior
assertTrue("Set non-nullable property to null didn't result in an unset operation being performed as expected", dataObject.isSet(test) == false);
}
//purpose: set a non-nullable many property's value to null - this should result in an unset op
public void testSetNonNullableManyPropertyToNull() {
Property test = dataObject.getInstanceProperty(DEFINED_MANY_PROPERTY_NAME);
dataObject.set(test, null);
// TODO: Verify ValueStore refactor does not change behavior
assertTrue("Set non-nullable many property to null didn't result in an unset operation being performed as expected", dataObject.isSet(test) == false);
}
}