| /* |
| * 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); |
| } |
| } |