diff options
Diffstat (limited to 'sdo-java/trunk-cts/sdo2.1/src/main/java/test/sdo21/tests/api/PropertyTest.java')
-rw-r--r-- | sdo-java/trunk-cts/sdo2.1/src/main/java/test/sdo21/tests/api/PropertyTest.java | 263 |
1 files changed, 263 insertions, 0 deletions
diff --git a/sdo-java/trunk-cts/sdo2.1/src/main/java/test/sdo21/tests/api/PropertyTest.java b/sdo-java/trunk-cts/sdo2.1/src/main/java/test/sdo21/tests/api/PropertyTest.java new file mode 100644 index 0000000000..e70226c10a --- /dev/null +++ b/sdo-java/trunk-cts/sdo2.1/src/main/java/test/sdo21/tests/api/PropertyTest.java @@ -0,0 +1,263 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + * + * $Rev$ $Date$ + */ +package test.sdo21.tests.api; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; + +import java.util.List; + +import org.junit.After; +import org.junit.Before; +import org.junit.Ignore; +import org.junit.Test; + +import test.sdo21.framework.CTSTestCase; +import test.sdo21.tests.TestData.StandardDynamicFactory; +import test.sdo21.tests.TestData.StandardFactory; +import test.sdo21.tests.TestData.TestDataFactory; + +import commonj.sdo.DataObject; +import commonj.sdo.Property; + + +public class PropertyTest extends CTSTestCase { + private DataObject testDO; + TestDataFactory factory; + + public PropertyTest() { + // Tests on the Property interface should be independent of the metadata creation mechanism + // so just pick one Standard Factory + factory = new StandardDynamicFactory(); + } + + @Before + public void setUp () throws Exception { + super.setUp(); + factory.defineMetaData(getScope()); + testDO = factory.createTestData(getScope(), StandardFactory.API_TYPE); + } + + + @After + public void tearDown() throws Exception { + super.tearDown(); + } + + /** + * Verify Property.getDefault() for a newly created DataObject. + * @throws Exception + */ + @Test + public void testGetDefaultNewDO() throws Exception { + verifyGetDefault(factory.createTestData(getScope(), StandardFactory.API_TYPE)); + } + + /** + * Verify Property.getDefault() for a cleared DataObject. + */ + @Test + public void testGetDefaultClearedDO() { + // Set the values for each Property using populateFields, then unset + // them using unsetFields. + try { + ((StandardFactory)factory).populateFields(testDO, getScope()); + } catch (Exception e) { + fail("could not populate DataObject fields"); + } + unsetFields(testDO); + verifyGetDefault(testDO); + } + + /** + * Verify Property.getName() + */ + @Test + public void testPropertyGetName() { + Property property = testDO.getInstanceProperty("containMany"); + assertEquals("Property.getName() returned an unexpected value.", property.getName(), "containMany"); + } + + /** + * Verify Property.getType() + */ + @Test + public void testPropertyGetType() { + Property property = testDO.getInstanceProperty("containMany"); + + assertEquals("Property.getType() returned an unexpected value.", property.getType(), testDO.getType()); + } + + /** + * Verify Property.isMany()==true + */ + @Test + public void testPropertyIsManyTrue() { + Property property = testDO.getInstanceProperty("containMany"); + assertTrue("Property.isMany() returned an unexpected value.", property.isMany()); + } + + /** + * Verify Property.isMany()==false + */ + @Test + public void testPropertyIsManyFalse() { + Property property = testDO.getInstanceProperty("booleanVal"); + assertFalse("Property.isMany() returned an unexpected value.", property.isMany()); + } + + /** + * Verify Property.isContainment()==true + */ + @Test + public void testPropertyIsContainmentTrue() { + Property property = testDO.getInstanceProperty("containMany"); + assertTrue("Property.isContainment() returned an unexpected value.", property.isContainment()); + } + + /** + * Verify Property.isContainment()==false + */ + @Test + public void testPropertyIsContainmentFalse() { + Property property = testDO.getInstanceProperty("booleanVal"); + assertFalse("Property.isContainment() returned true when expecting false.", property.isContainment()); + } + + /** + * Verify Property.isReadOnly()==true + */ + @Test + public void testPropertyIsReadOnlyTrue() { + Property property = testDO.getInstanceProperty("readOnlyVal"); + assertTrue("Property.isReadOnly() returned false when expecting true.", property.isReadOnly()); + } + + /** + * Verify Property.isReadOnly()==false + */ + @Test + public void testPropertyIsReadOnlyFalse() { + Property property = testDO.getInstanceProperty("booleanVal"); + assertFalse("Property.isReadOnly() returned true when expecting false.", property.isReadOnly()); + } + + /** + * Verify Property.getContainingType + */ + @Test + public void testPropertyGetContainingType() { + Property property = testDO.getInstanceProperty("booleanVal"); + assertEquals("Property.getContainingType() returned an unexpected value.", property.getContainingType(), testDO + .getType()); + } + + /** + * Verify Property.getAliasNames() == empty List + */ + @Test + public void testPropertyGetAliasNamesEmpty() { + Property property = testDO.getInstanceProperty("booleanVal"); + assertEquals("Property.getAliasNames() returned a List of unexpected size.", 0, property.getAliasNames().size()); + } + + /** + * Verify Property.getAliasNames() == populated List + */ + @Ignore("Awaiting implementation of SDOUtil.addAliasName") + @Test + public void testPropertyGetAliasNames() { + List aliasNames = testDO.getInstanceProperty("decimalVal2").getAliasNames(); + assertEquals("Property.getAliasNames() returned a List of unexpected size.", 1, aliasNames.size()); + + String alias = (String)aliasNames.get(0); + assertEquals("Property.getAliasNames() returned a List with unexpected contents.", "Dec2", alias); + } + + /** + * Verify Property.getOpposite() == null + */ + @Test + public void testPropertyGetOppositeNull() { + Property property = testDO.getInstanceProperty("booleanVal"); + assertNull("Property.getOpposite() did not return null as expected.", property.getOpposite()); + } + + /** + * Verify Property.getOpposite() != null + */ + @Test + @Ignore + public void testPropertyGetOpposite() { + // TODO write this test + } + + /** + * verifyGetDefault is a private method that loops through each Property in + * the passed DataObject and verifies that the value is equal to the value + * returned by getDefault for each Property. The precondition is that unset + * has been called for any Property for which a value has been set. + * + * @param testedDO + */ + + private void verifyGetDefault(DataObject testedDO) { + List properties = testedDO.getInstanceProperties(); + Property property; + + for (int i = 0; i < properties.size(); i++) { + property = (Property)properties.get(i); + if (!(property.isReadOnly())) { + if (property.isMany()) { + assertNull("Property.getDefault() did not return null for many-valued Property " + property.getName() + + "'.", property.getDefault()); + } else { + assertEquals("Property.getDefault() did not return the correct default value for Property '" + property + .getName() + + "'.", testedDO.get(property), property.getDefault()); + } + } + } + } + + /** + * unsetFields() is a private method that loops through the Properties in + * the passed DataObject and unsets each Property. + * + * @param unsetDO + */ + + private void unsetFields(DataObject unsetDO) { + List properties = unsetDO.getInstanceProperties(); + Property currProp; + + for (int i = 0; i < properties.size(); i++) + { + currProp = (Property) properties.get(i); + if (!(currProp.isReadOnly())) { + unsetDO.unset(i); + } + } + } +} |