You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by gw...@apache.org on 2007/01/31 12:18:48 UTC

svn commit: r501803 [3/5] - in /incubator/tuscany/java/cts/sdo2.1/src/main: java/test/sdo21/ java/test/sdo21/framework/ java/test/sdo21/paramatizedTests/ java/test/sdo21/paramatizedTests/api/ java/test/sdo21/paramatizedTests/conversion/ java/test/sdo21...

Added: incubator/tuscany/java/cts/sdo2.1/src/main/java/test/sdo21/paramatizedTests/general/ActiveUpdatingTest.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/cts/sdo2.1/src/main/java/test/sdo21/paramatizedTests/general/ActiveUpdatingTest.java?view=auto&rev=501803
==============================================================================
--- incubator/tuscany/java/cts/sdo2.1/src/main/java/test/sdo21/paramatizedTests/general/ActiveUpdatingTest.java (added)
+++ incubator/tuscany/java/cts/sdo2.1/src/main/java/test/sdo21/paramatizedTests/general/ActiveUpdatingTest.java Wed Jan 31 03:18:45 2007
@@ -0,0 +1,311 @@
+/*
+ *  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.paramatizedTests.general;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+
+import test.sdo21.CTSSuite;
+import test.sdo21.paramatizedTests.BaseSDOParamatizedTest;
+
+import commonj.sdo.DataObject;
+import commonj.sdo.Sequence;
+import commonj.sdo.Type;
+import commonj.sdo.helper.DataFactory;
+
+/**
+ * Tests for proper updates to DataObject and their value changes due to the updates.
+ */
+@RunWith(Parameterized.class)
+public class ActiveUpdatingTest extends BaseSDOParamatizedTest {
+    
+
+    /**
+     * Tests for proper updates to DataObject and their value changes due to the updates.
+     */
+    public ActiveUpdatingTest(DataObject testDO, String description) {
+        super(testDO, description);
+    }
+
+    /**
+     * testActiveUpdatingList verifies that updates made to a List returned from
+     * a DataObject are reflected in the DataObject and vice versa.
+     */
+    @Test
+    public void testActiveUpdatingList() {
+       
+        Type type = testDO.getType();
+        DataFactory df = CTSSuite.getTestHelper().getDataFactory();
+        DataObject root = df.create(type);
+        DataObject child1 = df.create(type);
+        DataObject child2 = df.create(type);
+        DataObject child3 = df.create(type);
+
+        List addList = new ArrayList();
+        List returnedList;
+
+        addList.add(child1);
+
+        root.setList("children", addList);
+
+        // Verify the pre-condition. The List initially has a size of 1.
+        assertEquals("The List returned by getList was not of the expected size.", root.getList("children").size(), 1);
+
+        returnedList = root.getList("children");
+
+        /**
+         * Add a member to the returned List and verify that it is reflected in
+         * the DataObject.
+         */
+
+        returnedList.add(child2);
+
+        assertEquals("Update to returned List did not affect DataObject correctly.  Size of children is not 2", root
+            .getList("children").size(), 2);
+        assertEquals("Update to returned List did not affect DataObject correctly.  child1 is equal to root", child1
+            .getContainer(), root);
+        assertEquals("Update to returned List did not affect DataObject correctly.  child2 is equal to root", child2
+            .getContainer(), root);
+
+        /**
+         * Delete a child and verify that the returned List is automatically
+         * affected.
+         */
+
+        child1.delete();
+        assertEquals("Deleting a DataObject did not affect the returned List.", returnedList.size(), 1);
+
+        /**
+         * Verify that the DataObject delete did not affect the original List
+         * used in the DataObject.setList().
+         */
+
+        assertEquals("Deleting a DataObject should not affect a List unassociated with the DataObject.",
+                     addList.size(),
+                     1);
+
+        /**
+         * Call DataObject.setList() and verify that the previously returned
+         * List reflects the new List.
+         */
+
+        addList.add(child2);
+        addList.add(child3);
+        root.setList("children", addList);
+
+        assertEquals("The List retruned by DataObject.getList() was not affected by a subsequent DataObject.setList().",
+                     returnedList.size(),
+                     3);
+        /**
+         * Call List.remove() on the returned List and verify that the
+         * DataObject is affected.
+         */
+
+        DataObject child = (DataObject)returnedList.get(1);
+
+        // Verify the precondition. The child should have root as its container.
+        assertEquals("List.setList() did not cause the expected containment relationship.", child.getContainer(), root);
+
+        returnedList.remove(1);
+
+        assertEquals("List.remove() did not have the expected effect on the DataObject.  There are more than 2 children",
+                     root.getList("children").size(),
+                     2);
+        assertNull("List.remove() did not have the expected effect on the DataObject. child container is not null",
+                   child.getContainer());
+
+        /**
+         * Call List.clear() and veirfy that the DataObject is affected.
+         */
+        returnedList.clear();
+
+        assertEquals("List.clear() on the returned List did not have the expected effect on the DataObject. The size of the list of children is not 0",
+                     root.getList("children").size(),
+                     0);
+        assertNull("List.clear() on the returned List did not have the expected effect on the DataObject.  child1.getContainer is not null",
+                   child1.getContainer());
+        assertNull("List.clear() on the returned List did not have the expected effect on the DataObject.  child2.getContainer is not null",
+                   child2.getContainer());
+
+    }
+
+    /**
+     * testActiveUpdatingSequence verifies that updates made to a Sequence
+     * returned from a DataObject are reflected in the DataObject and vice
+     * versa.
+     */
+    @Test
+    public void testActiveUpdatingSequence() {
+
+        
+        DataObject sequenceDO = testDO.getDataObject("sequencedElem");
+        Sequence sequence = sequenceDO.getSequence();
+        List letterList = sequenceDO.getList("Letters");
+        List numberList = sequenceDO.getList("Numbers");
+
+        assertTrue("The Type of sequencedElem is not sequenced.  testActiveUpdatingSequence may not proceed",
+                   sequenceDO.getType().isSequenced());
+
+        letterList.clear();
+        numberList.clear();
+
+        // Verify the precondition. The Sequence should be empty.
+        assertEquals("The Sequence should initially be empty.", sequence.size(), 0);
+
+        /**
+         * Add values to the DataObject and verify that the Sequence is
+         * affected.
+         */
+
+        letterList.add("A");
+        letterList.add("B");
+        numberList.add(Integer.valueOf(8));
+
+        // The expected arrangement of sequence is as follows
+        // {<Letters, "A">, <Letters, "B">, <Numbers, 8>}
+
+        assertEquals("Adding values to the DataObject did not affect the returned Sequence.  Sequence size is not 3",
+                     sequence.size(),
+                     3);
+        assertEquals("Adding values to the DataObject did not affect the returned Sequence.  getValue[0] is not A",
+                     sequence.getValue(0),
+                     "A");
+        assertEquals("Adding values to the DataObject did not affect the returned Sequence. getValue[1] is not B",
+                     sequence.getValue(1),
+                     "B");
+        assertEquals("Adding values to the DataObject did not affect the returned Sequence. getValue[2] is not equal to 8",
+                     sequence.getValue(2),
+                     Integer.valueOf(8));
+
+        /**
+         * Remove a value from the DataObject and verify that the Sequence is
+         * affected.
+         */
+
+        letterList.remove(1);
+
+        // The expected arrangement of sequence is as follows: {<Letters, "A">,
+        // <Numbers, 8>}
+        assertEquals("Removing a value from the DataObject did not affect the returned Sequence.", sequence.size(), 2);
+        assertEquals("Removing a value from the DataObject did not affect the returned Sequence.",
+                     sequence.getValue(0),
+                     "A");
+        assertEquals("Removing a value from the DataObject did not affect the returned Sequence.",
+                     sequence.getValue(1),
+                     Integer.valueOf(8));
+
+        /**
+         * Remove a value from the Sequence and verify that the DataObject is
+         * affected.
+         */
+
+        sequence.remove(1);
+
+        // The expected arrangement of sequence is as follows: {<Letters, "A">}
+
+        assertEquals("Removing a value from the Sequence did not affect the DataObject.  Size of List for numbers is not 0",
+                     sequenceDO.getList("Numbers").size(),
+                     0);
+
+        /**
+         * Add a value to the Sequence and verify that the DataObject is
+         * affected.
+         */
+        sequence.add("Numbers", Integer.valueOf(16));
+
+        // The expected arrangement of sequence is as follows: {<Letters, "A">,
+        // <Numbers, 16>}
+
+        assertEquals("Adding a value to the Sequence did not have the expected effect on the DataObject.", sequenceDO
+            .getList("Numbers").size(), 1);
+        assertEquals("Adding a value to the Sequence did not have the expected effect on the DataObject.", sequenceDO
+            .getList("Numbers").get(0), Integer.valueOf(16));
+
+        // Add several values to the Sequence (via the DataObject) to make
+        // Sequence.move() meaningful.
+
+        letterList.add("C");
+        numberList.add(Integer.valueOf(15));
+        numberList.add(Integer.valueOf(4));
+        letterList.add("K");
+        letterList.add("M");
+        numberList.add(Integer.valueOf(-10));
+
+        // The expected arrangement of sequence is as follows
+        // {<Letters, "A">, <Numbers, 16>, <Letters, "C">, <Numbers, 15>,
+        // <Numbers, 4>, <Letters, "K">, <Letters, "M">, <Numbers, -10>}
+
+        /**
+         * Use Sequence.move() and verify that the changes are reflected in the
+         * DataObject.
+         */
+
+        sequence.move(1, 5);
+        sequence.move(4, 2);
+
+        // The expected arrangement of sequence is as follows
+        // {<Letters, "A">, <Letters, "K">, <Letters, "C">, <Numbers, 15>,
+        // <Numbers, 16>, <Numbers, 4>, <Letters, "M">, <Numbers, -10>}
+
+        assertEquals("Sequence.move() did not have the expected effect on the DataObject represented by the Sequence.",
+                     letterList.size(),
+                     4);
+        assertEquals("Sequence.move() did not have the expected effect on the DataObject represented by the Sequence.",
+                     letterList.get(0),
+                     "A");
+        assertEquals("Sequence.move() did not have the expected effect on the DataObject represented by the Sequence.",
+                     letterList.get(1),
+                     "K");
+        assertEquals("Sequence.move() did not have the expected effect on the DataObject represented by the Sequence.",
+                     letterList.get(2),
+                     "C");
+        assertEquals("Sequence.move() did not have the expected effect on the DataObject represented by the Sequence.",
+                     letterList.get(3),
+                     "M");
+
+        assertEquals("Sequence.move() did not have the expected effect on the DataObject represented by the Sequence.",
+                     numberList.size(),
+                     4);
+        assertEquals("Sequence.move() did not have the expected effect on the DataObject represented by the Sequence.",
+                     numberList.get(0),
+                     Integer.valueOf(15));
+        assertEquals("Sequence.move() did not have the expected effect on the DataObject represented by the Sequence.",
+                     numberList.get(1),
+                     Integer.valueOf(16));
+        assertEquals("Sequence.move() did not have the expected effect on the DataObject represented by the Sequence.",
+                     numberList.get(2),
+                     Integer.valueOf(4));
+        assertEquals("Sequence.move() did not have the expected effect on the DataObject represented by the Sequence.",
+                     numberList.get(3),
+                     Integer.valueOf(-10));
+
+        // TODO: Add a value to a specific location within the Sequence and
+        // veirfy the effect on the DataObject. Awaiting Tuscany-931
+    }
+}

Propchange: incubator/tuscany/java/cts/sdo2.1/src/main/java/test/sdo21/paramatizedTests/general/ActiveUpdatingTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/cts/sdo2.1/src/main/java/test/sdo21/paramatizedTests/general/ActiveUpdatingTest.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: incubator/tuscany/java/cts/sdo2.1/src/main/java/test/sdo21/paramatizedTests/general/ContainmentTest.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/cts/sdo2.1/src/main/java/test/sdo21/paramatizedTests/general/ContainmentTest.java?view=auto&rev=501803
==============================================================================
--- incubator/tuscany/java/cts/sdo2.1/src/main/java/test/sdo21/paramatizedTests/general/ContainmentTest.java (added)
+++ incubator/tuscany/java/cts/sdo2.1/src/main/java/test/sdo21/paramatizedTests/general/ContainmentTest.java Wed Jan 31 03:18:45 2007
@@ -0,0 +1,341 @@
+/*
+ *  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.paramatizedTests.general;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+
+import test.sdo21.CTSSuite;
+import test.sdo21.paramatizedTests.BaseSDOParamatizedTest;
+
+import commonj.sdo.DataObject;
+import commonj.sdo.Property;
+import commonj.sdo.Type;
+
+/**
+ * Junit 4.1 test case. Tests containment alterations:
+ * <ul>
+ *   <li>container/contained relationship</li>
+ *   <li>containment cycle</li>
+ * </ul>
+ */
+@RunWith(Parameterized.class)
+public class ContainmentTest extends BaseSDOParamatizedTest {
+
+    public ContainmentTest(DataObject testDO, String description) {
+        super(testDO, description);
+    }
+
+    /**
+     * testContainmentIntegrity insures that containment alterations are
+     * reflected on both sides of the container/contained relationship.
+     * Additionally, containment eclusivity is checked following several
+     * scenarios.
+     */
+    @Test
+    public void testContainmentIntegrity() {
+        Type type = testDO.getType();
+        List returnedList;
+        List addList = new ArrayList();
+        DataObject dataObj1 = CTSSuite.getTestHelper().getDataFactory().create(type);
+        DataObject dataObj2 = CTSSuite.getTestHelper().getDataFactory().create(type);
+        Property containmentProp = testDO.getProperty("children");
+
+        // Ensure that any previous containment relationships are broken.
+
+        addList.clear();
+        testDO.setList("children", addList);
+        testDO.detach();
+
+        // Assign identifier to the created DataObjects
+
+        testDO.setString("stringVal", "testDO");
+        dataObj1.setString("stringVal", "dataObj1");
+        dataObj2.setString("stringVal", "dataObj2");
+
+        // Verify pre-conditions
+
+        assertTrue("Property.isContainment() returned an unexpected value.", containmentProp.isContainment());
+
+        assertNull("DataObject.getContainer() returned an unexpected value.", testDO.getContainer());
+        assertNull("DataObject.getContainmentProprety() returned an unexpected value.", testDO.getContainmentProperty());
+
+        /**
+         * Assign both dataObj1 and dataObj2 to testDO container, then verify
+         * containment of dataObj1 and dataObj2 by testDO
+         */
+
+        addList.add(dataObj1);
+        addList.add(dataObj2);
+        testDO.setList(containmentProp, addList);
+
+        // Verify containment of dataObj1 and dataObj2 by testDO
+        assertEquals("DataObject.getContainer() did not return the appropriate DataObject.",
+                     dataObj1.getContainer(),
+                     testDO);
+
+        assertEquals("DataObject.getContainer() did not return the appropriate DataObject.",
+                     dataObj2.getContainer(),
+                     testDO);
+
+        assertEquals("DataObject.getContainmentProperty() did not return the appropriate Property.", dataObj1
+            .getContainmentProperty(), containmentProp);
+
+        assertEquals("DataObject.getContainmentProperty() did not return the appropriate Property.", dataObj2
+            .getContainmentProperty(), containmentProp);
+
+        returnedList = testDO.getList(containmentProp);
+
+        assertEquals("DataObject.getList() size is incorrect", returnedList.size(), 2);
+        assertEquals("DataObject.getList() did not return the List specified in DataObject.setList()", returnedList
+            .get(0), dataObj1);
+        assertEquals("DataObject.getList() did not return the List specified in DataObject.setList()", returnedList
+            .get(1), dataObj2);
+
+        /**
+         * Assign dataObj2 to dataObj1 container, then verify dataObj2 is
+         * automatically removed from testDO container
+         */
+
+        // After the following section, it should be true that: testDO contains
+        // dataObj1 contains dataObj2
+        addList.clear();
+        addList.add(dataObj2);
+        dataObj1.setList(containmentProp, addList);
+
+        // Verify automatic removal of dataObj2 from testDO container
+
+        returnedList = testDO.getList(containmentProp);
+        assertEquals("Once placed in a new container, the DataObject should no longer appear in the former container.",
+                     returnedList.size(),
+                     1);
+        assertEquals("Once placed in a new container, the DataObject should no longer appear in the former container.",
+                     returnedList.get(0),
+                     dataObj1);
+
+        // Verify that dataObj2 was correctly added to dataObj1 container
+
+        returnedList = dataObj1.getList(containmentProp);
+        assertEquals("Once assigned to a new container, the DataObject should appear in the new container.",
+                     returnedList.size(),
+                     1);
+        assertEquals("Once assigned to a new container, the DataObject should appear in the new container.",
+                     returnedList.get(0),
+                     dataObj2);
+        assertEquals("DataObject.getContainer() did not return the appropriate DataObject.",
+                     dataObj2.getContainer(),
+                     dataObj1);
+
+        // After the following section, it should be true that: dataObj1
+        // contains testDO contains dataObj2
+
+        dataObj1.detach();
+        addList.clear();
+        addList.add(dataObj2);
+        testDO.setList(containmentProp, addList);
+        addList.clear();
+        addList.add(testDO);
+        dataObj1.setList(containmentProp, addList);
+
+        /**
+         * Verify that detach() removes the object from its container.
+         */
+
+        testDO.detach();
+
+        returnedList = dataObj1.getList(containmentProp);
+        assertEquals("Detaching the contained object did not remove it from container", returnedList.size(), 0);
+
+        assertNull("DataObject.getContainer() did not return null as expected for a detached DataObject.", testDO
+            .getContainer());
+
+        /**
+         * Verify that DataObject.detach() does not affect objects contained by
+         * the detached DataObject
+         */
+
+        returnedList = testDO.getList(containmentProp);
+
+        assertEquals("Detaching a DataObject should not affect it as a container.", returnedList.size(), 1);
+        assertEquals("Detaching a DataObject should not affect it as a container.", returnedList.get(0), dataObj2);
+        assertEquals("Detaching a DataObject should not affect it as a container.", dataObj2.getContainer(), testDO);
+
+        /**
+         * Verify that DataObject.delete() removes the object from its container
+         * and affects the containment of objects within the deleted DataObject
+         */
+
+        // After the following section, it should be true that: dataObj1
+        // contains testDO contains dataObj2
+        addList.clear();
+        addList.add(testDO);
+        dataObj1.setList(containmentProp, addList);
+
+        assertEquals("DataObject.getContainer() did not result in the set value.", testDO.getContainer(), dataObj1);
+
+        testDO.delete();
+
+        assertEquals("Deleting the DataObject did not remove it from its container.", dataObj1.getList(containmentProp)
+            .size(), 0);
+
+        assertNotNull("Deleting the DataObject did not affect its view of its container.", testDO);
+
+        assertEquals("Deleting the DataObject did not empty it as a container.",
+                     testDO.getList(containmentProp).size(),
+                     0);
+
+        assertNull("Deleting the containing DataObject was not reflected in the contained DataObject.", dataObj2
+            .getContainer());
+
+    }
+
+    /**
+     * testContainmentCycle ensures that a containment cycle is prevented
+     * appropriately. Attempts are made at 1-member and n-member cycles, as well
+     * as cycles created via setting the containment property through the
+     * DataObject and setting through a returned List. In all cases, an
+     * exception should be thrown and the cycle prevented
+     * 
+     * @param testDO
+     */
+
+    public static void testContainmentCycle(DataObject testDO) {
+        Type type = testDO.getType();
+        List addList = new ArrayList();
+        List returnedList = testDO.getList("children");
+        DataObject dataObj1 = CTSSuite.getTestHelper().getDataFactory().create(type);
+        DataObject dataObj2 = CTSSuite.getTestHelper().getDataFactory().create(type);
+        boolean exceptionCaught;
+
+        // Ensure that any previous containment relationships are broken.
+
+        addList.clear();
+        testDO.setList("children", addList);
+        testDO.detach();
+
+        // Assign identifier to the created DataObjects
+
+        testDO.setString("stringVal", "testDO");
+        dataObj1.setString("stringVal", "dataObj1");
+        dataObj2.setString("stringVal", "dataObj2");
+
+        /**
+         * Attempt to create a one-member containment cycle via
+         * DataObject.set____ and verify that an exception is thrown
+         */
+
+        addList.add(dataObj1);
+        addList.add(testDO);
+
+        exceptionCaught = false;
+        try {
+            testDO.setList("children", addList);
+        } catch (Exception e) {
+            exceptionCaught = true;
+        }
+
+        assertTrue("Attempting to create a one member containment cycle using a set method on the DataObject should result in an Exception.",
+                   exceptionCaught);
+
+        /**
+         * Attempt to create a one-member containment cycle via a returned List
+         * and verify that an exception is thrown
+         */
+
+        addList.clear();
+        testDO.setList("children", addList);
+
+        exceptionCaught = false;
+        try {
+            returnedList.add(testDO);
+        } catch (Exception e) {
+            exceptionCaught = true;
+        }
+        assertTrue("Attempting to create a one member containment cycle using a returned List should result in an Exception.",
+                   exceptionCaught);
+
+        /**
+         * Attempt to create an n-member containment cycle via
+         * DataObject.set____ and verify that an exception is thrown
+         */
+
+        addList.clear();
+        addList.add(dataObj1);
+
+        testDO.setList("children", addList);
+
+        addList.clear();
+        addList.add(dataObj2);
+
+        dataObj1.setList("children", addList);
+
+        addList.clear();
+        addList.add(testDO);
+
+        // testDO contains dataObj1 contains dataObj2. dataObj2 containing
+        // testDO (or dataObj1 or dataObj2) would form a cycle.
+
+        exceptionCaught = false;
+        try {
+            dataObj2.setList("children", addList);
+        } catch (Exception e) {
+            exceptionCaught = true;
+        }
+        assertTrue("Attempting to create a containment cycle should result in an Exception.", exceptionCaught);
+
+        /**
+         * Attempt to create an n-member containment cycle via a returned List
+         * and verify that an exception is thrown
+         */
+
+        addList.clear();
+        testDO.setList("children", addList);
+
+        addList.add(dataObj2);
+        dataObj1.setList("children", addList);
+
+        addList.clear();
+        addList.add(testDO);
+        dataObj2.setList("children", addList);
+
+        // dataObj1 contains dataObj2 contains testDO. testDO containing
+        // dataObj1 (or dataObj2 or testDO) would form a cycle.
+
+        exceptionCaught = false;
+        try {
+            returnedList.add(dataObj1);
+        } catch (Exception e) {
+            exceptionCaught = true;
+        }
+
+        assertTrue("Attempting to create an n-member containment cycle using a returned List should result in an Exception.",
+                   exceptionCaught);
+    }
+}

Propchange: incubator/tuscany/java/cts/sdo2.1/src/main/java/test/sdo21/paramatizedTests/general/ContainmentTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/cts/sdo2.1/src/main/java/test/sdo21/paramatizedTests/general/ContainmentTest.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: incubator/tuscany/java/cts/sdo2.1/src/main/java/test/sdo21/paramatizedTests/general/DeleteTest.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/cts/sdo2.1/src/main/java/test/sdo21/paramatizedTests/general/DeleteTest.java?view=auto&rev=501803
==============================================================================
--- incubator/tuscany/java/cts/sdo2.1/src/main/java/test/sdo21/paramatizedTests/general/DeleteTest.java (added)
+++ incubator/tuscany/java/cts/sdo2.1/src/main/java/test/sdo21/paramatizedTests/general/DeleteTest.java Wed Jan 31 03:18:45 2007
@@ -0,0 +1,112 @@
+/*
+ *  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.paramatizedTests.general;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+
+import test.sdo21.CTSSuite;
+import test.sdo21.paramatizedTests.BaseSDOParamatizedTest;
+
+import commonj.sdo.DataObject;
+import commonj.sdo.Property;
+import commonj.sdo.Type;
+import commonj.sdo.helper.DataFactory;
+
+/**
+ * Junit 4.1 test case. Tests containment alterations:
+ * <ul>
+ *   <li>recursive deletion</li>
+ * </ul>
+ * 
+ */
+@RunWith(Parameterized.class)
+public class DeleteTest extends BaseSDOParamatizedTest {
+
+    public DeleteTest(DataObject testDO, String description) {
+        super(testDO, description);
+    }
+
+    /**
+     * testRecursiveDeletion verifies that when a DataObject is deleted, all
+     * (recursively) contained DataObjects are also deleted.
+     */
+    @Test
+    public void testRecursiveDeletion() {
+        Type type = testDO.getType();
+        Property containmentProp = type.getProperty("children");
+
+        assertTrue("Cannot continue with test because Property.isContainment() is false.", containmentProp
+            .isContainment());
+
+        DataFactory df =  CTSSuite.getTestHelper().getDataFactory();
+        DataObject child1 = df.create(type);
+        DataObject child2 = df.create(type);
+        DataObject child3 = df.create(type);
+
+        List addList = new ArrayList();
+
+        /**
+         * Establish a series of containment relationships
+         */
+
+        addList.add(child1);
+        testDO.setList(containmentProp, addList);
+
+        addList.clear();
+        addList.add(child2);
+        child1.setList(containmentProp, addList);
+
+        addList.clear();
+        addList.add(child3);
+        child2.setList(containmentProp, addList);
+
+        /**
+         * Verify that containment has been established correctly.
+         */
+
+        assertEquals("The expected containment relationships were not correctly formed.", child3.getContainer(), child2);
+        assertEquals("The expected containment relationships were not correctly formed.", child2.getContainer(), child1);
+        assertEquals("The expected containment relationships were not correctly formed.", child1.getContainer(), testDO);
+
+        /**
+         * Delete the root DataObject and verify that contained DataObjects are
+         * recursively affected.
+         */
+
+        testDO.delete();
+
+        assertEquals("DataObject.delete() did not recursively affect contained DataObjects.", testDO
+            .getList(containmentProp).size(), 0);
+        assertNull("DataObject.delete() did not recursively affect contained DataObjects.", child1.getContainer());
+        assertNull("DataObject.delete() did not recursively affect contained DataObjects.", child2.getContainer());
+        assertNull("DataObject.delete() did not recursively affect contained DataObjects.", child3.getContainer());
+
+    }
+}

Propchange: incubator/tuscany/java/cts/sdo2.1/src/main/java/test/sdo21/paramatizedTests/general/DeleteTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/cts/sdo2.1/src/main/java/test/sdo21/paramatizedTests/general/DeleteTest.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: incubator/tuscany/java/cts/sdo2.1/src/main/java/test/sdo21/paramatizedTests/general/package.html
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/cts/sdo2.1/src/main/java/test/sdo21/paramatizedTests/general/package.html?view=auto&rev=501803
==============================================================================
--- incubator/tuscany/java/cts/sdo2.1/src/main/java/test/sdo21/paramatizedTests/general/package.html (added)
+++ incubator/tuscany/java/cts/sdo2.1/src/main/java/test/sdo21/paramatizedTests/general/package.html Wed Jan 31 03:18:45 2007
@@ -0,0 +1,25 @@
+<html>
+<!--
+  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$
+-->
+<body>
+Contains paramatized test cases for other general test.
+</body>
+</html>

Propchange: incubator/tuscany/java/cts/sdo2.1/src/main/java/test/sdo21/paramatizedTests/general/package.html
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/cts/sdo2.1/src/main/java/test/sdo21/paramatizedTests/general/package.html
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Propchange: incubator/tuscany/java/cts/sdo2.1/src/main/java/test/sdo21/paramatizedTests/general/package.html
------------------------------------------------------------------------------
    svn:mime-type = text/html

Added: incubator/tuscany/java/cts/sdo2.1/src/main/java/test/sdo21/paramatizedTests/package.html
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/cts/sdo2.1/src/main/java/test/sdo21/paramatizedTests/package.html?view=auto&rev=501803
==============================================================================
--- incubator/tuscany/java/cts/sdo2.1/src/main/java/test/sdo21/paramatizedTests/package.html (added)
+++ incubator/tuscany/java/cts/sdo2.1/src/main/java/test/sdo21/paramatizedTests/package.html Wed Jan 31 03:18:45 2007
@@ -0,0 +1,25 @@
+<html>
+<!--
+  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$
+-->
+<body>
+Contains base class of paramatized test cases.
+</body>
+</html>

Propchange: incubator/tuscany/java/cts/sdo2.1/src/main/java/test/sdo21/paramatizedTests/package.html
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/cts/sdo2.1/src/main/java/test/sdo21/paramatizedTests/package.html
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Propchange: incubator/tuscany/java/cts/sdo2.1/src/main/java/test/sdo21/paramatizedTests/package.html
------------------------------------------------------------------------------
    svn:mime-type = text/html

Added: incubator/tuscany/java/cts/sdo2.1/src/main/java/test/sdo21/paramatizedTests/util/ParamatizedTestUtil.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/cts/sdo2.1/src/main/java/test/sdo21/paramatizedTests/util/ParamatizedTestUtil.java?view=auto&rev=501803
==============================================================================
--- incubator/tuscany/java/cts/sdo2.1/src/main/java/test/sdo21/paramatizedTests/util/ParamatizedTestUtil.java (added)
+++ incubator/tuscany/java/cts/sdo2.1/src/main/java/test/sdo21/paramatizedTests/util/ParamatizedTestUtil.java Wed Jan 31 03:18:45 2007
@@ -0,0 +1,258 @@
+/*
+ *  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.paramatizedTests.util;
+
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.math.BigDecimal;
+import java.math.BigInteger;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import test.sdo21.CTSSuite;
+
+import commonj.sdo.DataObject;
+import commonj.sdo.Property;
+import commonj.sdo.Type;
+
+/**
+ * Utility methods for SDO Tests. Provides methods to populate fields of
+ * DataObjects, serializing DataObjects etc.
+ * 
+ */
+public class ParamatizedTestUtil {
+    public final static String TEST_TYPE = "APITest";
+    public final static String TEST_MODEL = "/api_test.xsd";
+    public final static String TEST_NAMESPACE = "http://www.example.com/api_test";
+    public final static String DATA_XML = "/api_test_full.xml";
+
+    /**
+     * populateFields uses set<Type> to set each of the fields in the
+     * DataObject. It is used to ensure a known set of expected values that are
+     * not other than the default values for the various fields.
+     * 
+     * TODO:  need to create a static sequence here.
+     * @param testDO
+     * @throws ExpectedConditionError
+     */
+    public static void populateFields(DataObject testDO) throws Exception {
+        testDO.setString("stringVal", "String 1");
+        testDO.setBoolean("booleanVal", true);
+        testDO.setBoolean("booleanVal2", false);
+        testDO.setByte("byteVal", (byte)-127);
+        testDO.setString("stringVal2", "Second string!");
+        testDO.setBigDecimal("decimalVal", new BigDecimal(-3.00003));
+        testDO.setBigDecimal("decimalVal2", new BigDecimal(18883.999999));
+        testDO.setInt("intVal", (int)33333);
+        testDO.setFloat("floatVal", (float)0.88881);
+        testDO.setDouble("doubleVal", (double)119.13813);
+        testDO.setDate("dateVal", new Date(System.currentTimeMillis()));
+        testDO.setShort("shortVal", (short)-800);
+        testDO.setLong("longVal", (long)88881113);
+        List children = new ArrayList();
+        children.add(CTSSuite.getTestHelper().getDataFactory().create(testDO.getType()));
+        testDO.setList("children", children);
+        testDO.setBytes("bytesVal", new byte[] {120, 80, -40});
+        testDO.setBigInteger("integerVal", new BigInteger("88819313"));
+        testDO.setChar("charVal", '*');
+        if (testDO.getType().getInstanceClass() != null) {
+        	//TODO:  need to create a static sequence here.
+        	//Sequenced createStatic = StaticSdoFactory.INSTANCE.createSequenced();
+            //testDO.setDataObject("sequencedElem", (DataObject)createStatic);
+        } else {
+            testDO.setDataObject("sequencedElem", CTSSuite.getTestHelper().getDataFactory().create(CTSSuite
+                .getTestHelper().getTypeHelper().getType(TEST_NAMESPACE, "Sequenced")));
+        }       
+    }
+
+    /**
+     * serializeDataObject is a private method to be called by the other methods
+     * in the ScrenarioLibrary
+     * 
+     * @param dataObject
+     * @param fileName
+     * @throws IOException
+     */
+    public static void serializeDataObject(DataObject dataObject, String fileName) throws IOException {
+        FileOutputStream fos = new FileOutputStream(fileName);
+        ObjectOutputStream out = new ObjectOutputStream(fos);
+        out.writeObject(dataObject);
+        out.close();
+    }
+
+    /**
+     * deserializeDataObject is a private method to be called by the other
+     * methods in the ScrenarioLibrary
+     * 
+     * @param fileName
+     * @return
+     * @throws IOException
+     * @throws ClassNotFoundException
+     */
+    public static DataObject deserializeDataObject(String fileName) throws IOException, ClassNotFoundException {
+        FileInputStream fis = new FileInputStream(fileName);
+        ObjectInputStream input = new ObjectInputStream(fis);
+        DataObject dataObject = (DataObject)input.readObject();
+        input.close();
+        return dataObject;
+    }
+
+    /**
+     * clearDataObject is used to restore all fields to their default values
+     * 
+     * @param dataObject
+     */
+    public static void clearDataObject(DataObject dataObject) {
+        List properties = dataObject.getInstanceProperties();
+
+        for (int i = 0, size = properties.size(); i < size; i++) {
+            dataObject.unset(i);
+        }
+    }
+
+    /**
+     * printDataObject is provided to aid in troubleshooting
+     * 
+     * @param dataObject
+     * @param indent
+     */
+    public static void printDataObject(DataObject dataObject, int indent) {
+        // For each property
+
+        List properties = dataObject.getInstanceProperties();
+        for (int i = 0, size = properties.size(); i < size; i++) {
+            if (dataObject.isSet(i)) {
+                Property property = (Property)properties.get(i);
+                if (property.isMany()) {
+                    // For many-valued properties, process a list of values
+                    List values = dataObject.getList(i);
+                    for (int j = 0, count = values.size(); j < count; j++)
+                        printValue(values.get(j), property, indent);
+                } else {
+                    // for single-valued properties, print out the value
+                    printValue(dataObject.get(i), property, indent);
+                }
+            }
+        }
+    }
+
+    /**
+     * areEqualTypes is used to determine of two Types are equivalent even if
+     * not identically equal. The names of the Types are compared, as well as
+     * the Types of each of the Properties making up the Type.
+     * 
+     * @param type1
+     * @param type2
+     * @return
+     */
+    public static boolean areEqualTypes(Type type1, Type type2) {
+        List properties1, properties2;
+        Property property1, property2;
+        int size = 0, j = 0, k;
+        boolean found;
+
+        // Equivalent Types have the same name
+
+        if (!(type1.getName().equals(type2.getName())))
+            return false;
+
+        // Equivalent Types have the same number of Properties
+
+        properties1 = type1.getProperties();
+        properties2 = type2.getProperties();
+        size = properties1.size();
+
+        if (size != properties2.size())
+            return false;
+
+        // Equivalent Types have Properties of the same name and Type
+
+        for (int i = 0; i < size; i++) {
+            property1 = (Property)properties1.get(i);
+            k = 0;
+            found = false;
+
+            while (k < size && !found) {
+                // j is used to prevent the initial Properties in properties2
+                // from being checked every time
+                // j is particularly useful when the Types have Properties in
+                // the order
+
+                property2 = (Property)properties2.get((k + j) % size);
+
+                if (property1.getName().equals(property2.getName())) {
+                    j++;
+                    found = true;
+
+                    // Should not use recursion here to compare the Types of the
+                    // Properties, because
+                    // it is possible that a Type may recursively contain
+                    // itself.
+
+                    if (!(property1.getType().getName().equals(property2.getType().getName())))
+                        return false;
+                }
+
+                k++;
+            }
+
+            if (!found)
+                return false;
+        }
+
+        return true;
+    }
+
+    /**
+     * printValue is a private method which is called by printDataObject
+     * 
+     * @param value
+     * @param property
+     * @param indent
+     */
+    private static void printValue(Object value, Property property, int indent) {
+        // Get the name of the property
+        String propertyName = property.getName();
+
+        // Construct a string for the proper indentation
+        String margin = "";
+        for (int i = 0; i < indent; i++)
+            margin += "\t";
+
+        if (value != null && property.isContainment()) {
+            // For containment properties, display the value
+            // with printDataObject
+
+            Type type = property.getType();
+            String typeName = type.getName();
+            System.out.println(margin + propertyName + " (" + typeName + "):");
+            printDataObject((DataObject)value, indent + 1);
+        } else {
+            // For non-containment properties, just print the value
+            System.out.println(margin + propertyName + ": " + value);
+        }
+
+    }
+
+}

Propchange: incubator/tuscany/java/cts/sdo2.1/src/main/java/test/sdo21/paramatizedTests/util/ParamatizedTestUtil.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/cts/sdo2.1/src/main/java/test/sdo21/paramatizedTests/util/ParamatizedTestUtil.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: incubator/tuscany/java/cts/sdo2.1/src/main/java/test/sdo21/paramatizedTests/util/TypeCreateUtility.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/cts/sdo2.1/src/main/java/test/sdo21/paramatizedTests/util/TypeCreateUtility.java?view=auto&rev=501803
==============================================================================
--- incubator/tuscany/java/cts/sdo2.1/src/main/java/test/sdo21/paramatizedTests/util/TypeCreateUtility.java (added)
+++ incubator/tuscany/java/cts/sdo2.1/src/main/java/test/sdo21/paramatizedTests/util/TypeCreateUtility.java Wed Jan 31 03:18:45 2007
@@ -0,0 +1,234 @@
+/*
+ *  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.paramatizedTests.util;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.List;
+
+import test.sdo21.CTSSuite;
+
+import commonj.sdo.DataObject;
+import commonj.sdo.Type;
+import commonj.sdo.helper.TypeHelper;
+
+/**
+ * Utility to create Types for DataObject using a variety of mechanisms
+ *
+ */
+public class TypeCreateUtility {
+
+    /**
+     * createDynamicWithStaticResources creates the DataObject type from an
+     * existing XSD. The same XSD is used to create the Types statically using
+     * the XSD2JavaGenerator. The XSD should be kept in synch with the
+     * createDynamically method in this class.
+     * 
+     * @throws IOException
+     */
+
+    public static void createDynamicWithStaticResources() throws IOException {
+        // Populate the meta data for the test model (APITest)
+        URL url = TypeCreateUtility.class.getResource(ParamatizedTestUtil.TEST_MODEL);
+        InputStream inputStream = url.openStream();
+        CTSSuite.getTestHelper().getXSDHelper().define(inputStream, url.toString());
+        inputStream.close();
+    }
+
+    /**
+     * TODO: DAS Adheres to an existing type
+     */
+
+    public static void createDASAdherence() {
+
+    }
+
+    /**
+     * TODO: DAS dynamically generates the type
+     */
+    public static void createDASDynamically() {
+
+    }
+
+    /**
+     * createDynamically() creates the SDO Types using the TypeHelper. This
+     * method should be kept in synch with the XSD used for
+     * createDynamicallyWithStaticResources. The same XSD is used for the static
+     * generation of SDO Types using XSD2JavaGenerator.
+     */
+    public static void createDynamically() {
+        TypeHelper types = CTSSuite.getTestHelper().getTypeHelper();
+        Type stringType = types.getType("commonj.sdo", "String");
+        Type intType = types.getType("commonj.sdo", "Int");
+        Type booleanType = types.getType("commonj.sdo", "Boolean");
+        Type byteType = types.getType("commonj.sdo", "Byte");
+        Type decimalType = types.getType("commonj.sdo", "Decimal");
+        Type floatType = types.getType("commonj.sdo", "Float");
+        Type doubleType = types.getType("commonj.sdo", "Double");
+        Type dateType = types.getType("commonj.sdo", "Date");
+        Type shortType = types.getType("commonj.sdo", "Short");
+        Type longType = types.getType("commonj.sdo", "Long");
+        Type bytesType = types.getType("commonj.sdo", "Bytes");
+        Type integerType = types.getType("commonj.sdo", "Integer");
+        Type charType = types.getType("commonj.sdo", "Character");
+        // Type dateXSDType = types.getType("http://www.w3.org/2001/XMLSchema",
+        // "date");
+        // Collection aliases = new ArrayList();
+
+        DataObject abstractTypeDO = CTSSuite.getTestHelper().getDataFactory().create("commonj.sdo", "Type");
+        abstractTypeDO.set("uri", ParamatizedTestUtil.TEST_NAMESPACE);
+        abstractTypeDO.set("name", "Abstract");
+        abstractTypeDO.setBoolean("abstract", true);
+        abstractTypeDO.setBoolean("sequenced", true);
+
+        DataObject firstProperty = abstractTypeDO.createDataObject("property");
+        firstProperty.set("name", "firstName");
+        firstProperty.set("type", stringType);
+
+       DataObject lastProperty = abstractTypeDO.createDataObject("property");
+        lastProperty.set("name", "lastName");
+        lastProperty.set("type", stringType);
+
+        Type abstractType = types.define(abstractTypeDO);
+
+        DataObject sequenceTypeDO = CTSSuite.getTestHelper().getDataFactory().create("commonj.sdo", "Type");
+        sequenceTypeDO.set("uri", ParamatizedTestUtil.TEST_NAMESPACE);
+        sequenceTypeDO.set("name", "Sequenced");
+        sequenceTypeDO.setBoolean("sequenced", true);
+
+        List baseTypes = new ArrayList();
+        baseTypes.add(abstractType);
+        sequenceTypeDO.setList("baseType", baseTypes);
+
+        // TODO: Uncomment the following when SDOUtil.addAliasName is
+        // implemented
+        /*
+         * aliases.clear(); aliases.add("Seq2"); sequenceTypeDO.set("aliasName",
+         * aliases);
+         */
+
+        DataObject Letters = sequenceTypeDO.createDataObject("property");
+        Letters.set("name", "Letters");
+        Letters.set("type", stringType);
+        Letters.setBoolean("many", true);
+
+        DataObject Numbers = sequenceTypeDO.createDataObject("property");
+        Numbers.set("name", "Numbers");
+        Numbers.set("type", intType);
+        Numbers.setBoolean("many", true);
+
+        Type sequenceType = types.define(sequenceTypeDO);
+
+        DataObject testType = CTSSuite.getTestHelper().getDataFactory().create("commonj.sdo", "Type");
+        testType.set("uri", ParamatizedTestUtil.TEST_NAMESPACE);
+        testType.set("name", ParamatizedTestUtil.TEST_TYPE);
+
+        DataObject stringProperty = testType.createDataObject("property");
+        stringProperty.set("name", "stringVal");
+        stringProperty.set("type", stringType);
+
+        DataObject booleanProperty = testType.createDataObject("property");
+        booleanProperty.set("name", "booleanVal");
+        booleanProperty.set("type", booleanType);
+
+        DataObject boolean2Property = testType.createDataObject("property");
+        boolean2Property.set("name", "booleanVal2");
+        boolean2Property.set("type", booleanType);
+
+        DataObject byteProperty = testType.createDataObject("property");
+        byteProperty.set("name", "byteVal");
+        byteProperty.set("type", byteType);
+
+        DataObject string2Property = testType.createDataObject("property");
+        string2Property.set("name", "stringVal2");
+        string2Property.set("type", stringType);
+
+        DataObject decimalProperty = testType.createDataObject("property");
+        decimalProperty.set("name", "decimalVal");
+        decimalProperty.set("type", decimalType);
+
+        DataObject decimal2Property = testType.createDataObject("property");
+        decimal2Property.set("name", "decimalVal2");
+        decimal2Property.set("type", decimalType);
+
+        // TODO: Uncomment the following when SDOUtil.addAliasName is
+        // implemented
+        /*
+         * aliases.clear(); aliases.add("Dec2");
+         * decimal2Property.set("aliasName", aliases);
+         */
+        DataObject intProperty = testType.createDataObject("property");
+        intProperty.set("name", "intVal");
+        intProperty.set("type", intType);
+
+        DataObject floatProperty = testType.createDataObject("property");
+        floatProperty.set("name", "floatVal");
+        floatProperty.set("type", floatType);
+
+        DataObject doubleProperty = testType.createDataObject("property");
+        doubleProperty.set("name", "doubleVal");
+        doubleProperty.set("type", doubleType);
+
+        DataObject dateProperty = testType.createDataObject("property");
+        dateProperty.set("name", "dateVal");
+        dateProperty.set("type", dateType);
+
+        DataObject shortProperty = testType.createDataObject("property");
+        shortProperty.set("name", "shortVal");
+        shortProperty.set("type", shortType);
+
+        DataObject longProperty = testType.createDataObject("property");
+        longProperty.set("name", "longVal");
+        longProperty.set("type", longType);
+
+        DataObject childrenProperty = testType.createDataObject("property");
+        childrenProperty.set("name", "children");
+        childrenProperty.setBoolean("many", true);
+        childrenProperty.setBoolean("containment", true);
+        childrenProperty.set("type", testType);
+
+        DataObject bytesProperty = testType.createDataObject("property");
+        bytesProperty.set("name", "bytesVal");
+        bytesProperty.set("type", bytesType);
+
+        DataObject integerProperty = testType.createDataObject("property");
+        integerProperty.set("name", "integerVal");
+        integerProperty.set("type", integerType);
+
+        DataObject charProperty = testType.createDataObject("property");
+        charProperty.set("name", "charVal");
+        charProperty.set("type", charType);
+
+        /*
+         * Problem with dateXSDType - prevents subsequent properties DataObject
+         * dateXSDProperty = testType.createDataObject("property");
+         * dateXSDProperty.set("name", "dateXSDVal");
+         * dateXSDProperty.set("type", dateXSDType);
+         */
+        DataObject sequenceProperty = testType.createDataObject("property");
+        sequenceProperty.set("name", "sequencedElem");
+        sequenceProperty.set("type", sequenceType);
+
+        types.define(testType);
+    }
+}

Propchange: incubator/tuscany/java/cts/sdo2.1/src/main/java/test/sdo21/paramatizedTests/util/TypeCreateUtility.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/cts/sdo2.1/src/main/java/test/sdo21/paramatizedTests/util/TypeCreateUtility.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: incubator/tuscany/java/cts/sdo2.1/src/main/java/test/sdo21/paramatizedTests/util/package.html
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/cts/sdo2.1/src/main/java/test/sdo21/paramatizedTests/util/package.html?view=auto&rev=501803
==============================================================================
--- incubator/tuscany/java/cts/sdo2.1/src/main/java/test/sdo21/paramatizedTests/util/package.html (added)
+++ incubator/tuscany/java/cts/sdo2.1/src/main/java/test/sdo21/paramatizedTests/util/package.html Wed Jan 31 03:18:45 2007
@@ -0,0 +1,25 @@
+<html>
+<!--
+  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$
+-->
+<body>
+Contains utilities for paramatized test cases.
+</body>
+</html>

Propchange: incubator/tuscany/java/cts/sdo2.1/src/main/java/test/sdo21/paramatizedTests/util/package.html
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/cts/sdo2.1/src/main/java/test/sdo21/paramatizedTests/util/package.html
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Propchange: incubator/tuscany/java/cts/sdo2.1/src/main/java/test/sdo21/paramatizedTests/util/package.html
------------------------------------------------------------------------------
    svn:mime-type = text/html

Added: incubator/tuscany/java/cts/sdo2.1/src/main/java/test/sdo21/tests/CTSGeneralSuite.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/cts/sdo2.1/src/main/java/test/sdo21/tests/CTSGeneralSuite.java?view=auto&rev=501803
==============================================================================
--- incubator/tuscany/java/cts/sdo2.1/src/main/java/test/sdo21/tests/CTSGeneralSuite.java (added)
+++ incubator/tuscany/java/cts/sdo2.1/src/main/java/test/sdo21/tests/CTSGeneralSuite.java Wed Jan 31 03:18:45 2007
@@ -0,0 +1,47 @@
+/*
+ *  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;
+
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
+
+import test.sdo21.tests.api.DataObjectTest;
+import test.sdo21.tests.conversion.DateConversionTest;
+import test.sdo21.tests.conversion.TypeConversionTest;
+import test.sdo21.tests.general.XSDSerializationTest;
+
+
+/**
+ * Declares general test classes to be run within Junit 4.1 Suite for SDO CTS
+ * which includes the following classes:<br>
+ * <ul>
+ *   <li>test.sdo21.tests.api.DataObjectTest</li>
+ *   <li>test.sdo21.tests.conversion.DateConversionTest</li>
+ *   <li>test.sdo21.tests.conversion.TypeConversionTest</li>
+ *   <li>test.sdo21.tests.general.XSDSerializationTest</li>
+ * </ul>
+ * These test cases should only be run once.
+ */
+@RunWith(Suite.class)
+@Suite.SuiteClasses( {DateConversionTest.class, XSDSerializationTest.class, DataObjectTest.class, TypeConversionTest.class})
+public class CTSGeneralSuite {
+
+}

Propchange: incubator/tuscany/java/cts/sdo2.1/src/main/java/test/sdo21/tests/CTSGeneralSuite.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/cts/sdo2.1/src/main/java/test/sdo21/tests/CTSGeneralSuite.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: incubator/tuscany/java/cts/sdo2.1/src/main/java/test/sdo21/tests/api/DataObjectTest.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/cts/sdo2.1/src/main/java/test/sdo21/tests/api/DataObjectTest.java?view=diff&rev=501803&r1=501802&r2=501803
==============================================================================
--- incubator/tuscany/java/cts/sdo2.1/src/main/java/test/sdo21/tests/api/DataObjectTest.java (original)
+++ incubator/tuscany/java/cts/sdo2.1/src/main/java/test/sdo21/tests/api/DataObjectTest.java Wed Jan 31 03:18:45 2007
@@ -1,5 +1,4 @@
-/**
- *
+/*
  *  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
@@ -16,19 +15,25 @@
  *  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 commonj.sdo.DataObject;
 import junit.framework.TestCase;
 import test.sdo21.CTSSuite;
 import test.sdo21.framework.TestHelper;
 
+import commonj.sdo.DataObject;
+
 
 public class DataObjectTest extends TestCase
 {
     private TestHelper testHelper;
 
+    /**
+     * Set of tests for DataObject APIs.
+     */
     public DataObjectTest(String string) throws Exception {
         super(string);
 

Added: incubator/tuscany/java/cts/sdo2.1/src/main/java/test/sdo21/tests/api/package.html
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/cts/sdo2.1/src/main/java/test/sdo21/tests/api/package.html?view=auto&rev=501803
==============================================================================
--- incubator/tuscany/java/cts/sdo2.1/src/main/java/test/sdo21/tests/api/package.html (added)
+++ incubator/tuscany/java/cts/sdo2.1/src/main/java/test/sdo21/tests/api/package.html Wed Jan 31 03:18:45 2007
@@ -0,0 +1,25 @@
+<html>
+<!--
+  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$
+-->
+<body>
+Contains test cases for API test.
+</body>
+</html>

Propchange: incubator/tuscany/java/cts/sdo2.1/src/main/java/test/sdo21/tests/api/package.html
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/cts/sdo2.1/src/main/java/test/sdo21/tests/api/package.html
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Propchange: incubator/tuscany/java/cts/sdo2.1/src/main/java/test/sdo21/tests/api/package.html
------------------------------------------------------------------------------
    svn:mime-type = text/html

Added: incubator/tuscany/java/cts/sdo2.1/src/main/java/test/sdo21/tests/conversion/DateConversionTest.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/cts/sdo2.1/src/main/java/test/sdo21/tests/conversion/DateConversionTest.java?view=auto&rev=501803
==============================================================================
--- incubator/tuscany/java/cts/sdo2.1/src/main/java/test/sdo21/tests/conversion/DateConversionTest.java (added)
+++ incubator/tuscany/java/cts/sdo2.1/src/main/java/test/sdo21/tests/conversion/DateConversionTest.java Wed Jan 31 03:18:45 2007
@@ -0,0 +1,395 @@
+/*
+ *  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.conversion;
+
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import java.lang.reflect.Method;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.GregorianCalendar;
+
+import org.junit.BeforeClass;
+
+import test.sdo21.CTSSuite;
+
+import commonj.sdo.helper.DataHelper;
+
+// TODO: Could convert to a paramatized test case and simplify this code a lot
+
+/**
+ * Set of tests for date and time related conversions.
+ *         DateConversionTest insures that the
+ *         DataHelper conversions accurately retain the information in the
+ *         specified fields (e.g. month, day or year). It also provides coverage
+ *         for the DataHelper API.
+ */
+public class DateConversionTest {
+    private static Calendar test_calendar;
+
+    private static Date test_date;
+
+    private static DataHelper data_helper;
+
+    private static final TestType TO_DATE_TIME =
+        new TestType("toDateTime", new int[] {Calendar.YEAR, Calendar.MONTH, Calendar.DAY_OF_MONTH,
+                                              Calendar.HOUR_OF_DAY, Calendar.MINUTE, Calendar.SECOND,
+                                              Calendar.MILLISECOND});
+
+    private static final TestType TO_DURATION =
+        new TestType("toDuration", new int[] {Calendar.YEAR, Calendar.MONTH, Calendar.DAY_OF_MONTH,
+                                              Calendar.HOUR_OF_DAY, Calendar.MINUTE, Calendar.SECOND,
+                                              Calendar.MILLISECOND});
+
+    private static final TestType TO_TIME =
+        new TestType("toTime", new int[] {Calendar.HOUR_OF_DAY, Calendar.MINUTE, Calendar.SECOND, Calendar.MILLISECOND});
+
+    private static final TestType TO_DAY = new TestType("toDay", new int[] {Calendar.DAY_OF_MONTH});
+
+    private static final TestType TO_MONTH = new TestType("toMonth", new int[] {Calendar.MONTH});
+
+    private static final TestType TO_MONTH_DAY =
+        new TestType("toMonthDay", new int[] {Calendar.MONTH, Calendar.DAY_OF_MONTH});
+
+    private static final TestType TO_YEAR = new TestType("toYear", new int[] {Calendar.YEAR});
+
+    private static final TestType TO_YEAR_MONTH =
+        new TestType("toYearMonth", new int[] {Calendar.YEAR, Calendar.MONTH});
+
+    private static final TestType TO_YEAR_MONTH_DAY =
+        new TestType("toYearMonthDay", new int[] {Calendar.YEAR, Calendar.MONTH, Calendar.DAY_OF_MONTH});
+
+    /**
+     * Junit 4.1 will execute this once prior to test cases being executed.
+     * This sets up the Calendar with current date.
+     */
+    @BeforeClass
+    public static void setupCalender() {
+        data_helper = CTSSuite.getTestHelper().getDataHelper(); 
+        test_calendar = new GregorianCalendar();
+        test_calendar.setTime(new Date(System.currentTimeMillis()));
+        test_date = test_calendar.getTime();
+    }
+
+    private static class TestType {
+        private static final Class[] DATE_CLASS_ARRAY = {Date.class};
+
+        private static final Class[] CALENDAR_CLASS_ARRAY = {Calendar.class};
+
+        Method date_method;
+
+        Method calendar_method;
+
+        int[] compare_fields;
+
+        public TestType(String method_name, int[] compare_fields) {
+            try {
+                this.date_method = DataHelper.class.getMethod(method_name, DATE_CLASS_ARRAY);
+            } catch (NoSuchMethodException e) {
+                this.date_method = null;
+            }
+
+            this.compare_fields = compare_fields;
+            try {
+                this.calendar_method = DataHelper.class.getMethod(method_name, CALENDAR_CLASS_ARRAY);
+            } catch (NoSuchMethodException e) {
+                this.calendar_method = null;
+            }
+
+        }
+
+        public Method getDateMethod() {
+            return this.date_method;
+        }
+
+        public Method getCalendarMethod() {
+            return this.calendar_method;
+        }
+    }
+
+    private static class Test {
+        String from_type;
+
+        Date from_date;
+
+        Calendar from_calendar;
+
+        Class expected_exception;
+
+        public Test() {
+            from_date = null;
+            from_calendar = null;
+            expected_exception = null;
+        }
+
+        public void initialize(TestType from_type) {
+            this.from_type = from_type.getDateMethod().getName();
+
+            try {
+                String date_string = (String)from_type.getDateMethod().invoke(data_helper, new Object[] {test_date});
+                this.from_date = data_helper.toDate(date_string);
+                date_string = (String)from_type.getCalendarMethod().invoke(data_helper, new Object[] {test_calendar});
+                this.from_calendar = data_helper.toCalendar(date_string);
+            } catch (Exception e) {
+                this.from_date = null;
+                this.from_calendar = null;
+            }
+
+        }
+
+        // This method is needed because there is not a toDate(Date) method in
+        // DataHelper.
+
+        private void initializeToDate() {
+            this.from_calendar = test_calendar;
+            this.from_date = test_date;
+            this.from_type = "toDate";
+        }
+
+        private void attemptConversion(TestType to_type) {
+            executeConversion(to_type.getDateMethod(), new Object[] {this.from_date}, to_type.compare_fields);
+            executeConversion(to_type.getCalendarMethod(), new Object[] {this.from_calendar}, to_type.compare_fields);
+        }
+
+        private void executeConversion(Method conversion, Object[] parm, int[] compare_fields) {
+            String result;
+
+            try {
+                result = (String)conversion.invoke(data_helper, parm);
+
+                assertTrue("The expected value did not result when calling " + conversion.getName()
+                    + " after initializing with "
+                    + this.from_type
+                    + ".", compareFields(parm[0], result, compare_fields));
+            } catch (Exception e) {
+                e.printStackTrace();
+                fail("An unexpected exception was thrown while calling " + conversion.getName()
+                    + " after initializing with "
+                    + this.from_type
+                    + ":"
+                    + e.toString());
+            }
+
+        }
+
+        private boolean compareFields(Object compare_to, String output, int[] compare_fields) {
+            Calendar result = data_helper.toCalendar(output);
+            Calendar expected;
+
+            if (compare_to instanceof Calendar)
+                expected = (GregorianCalendar)test_calendar;
+            else {
+                expected = new GregorianCalendar();
+                expected.setTime((Date)test_date);
+            }
+
+            for (int i = 0; i < compare_fields.length; i++) {
+                if (expected.get(compare_fields[i]) != result.get(compare_fields[i]))
+                    return false;
+            }
+            return true;
+        }
+
+    }
+
+    /**
+     * testConversionsFromDay verifies each of the conversions from Day using
+     * the DataHelper
+     */
+    @org.junit.Test
+    public void testConversionsFromDay() {
+        Test FromDay = new Test();
+        FromDay.initialize(TO_DAY);
+        FromDay.attemptConversion(TO_DAY);
+    }
+
+    /**
+     * testConversionsFromDate verifies each of the conversions from Date using
+     * the DataHelper
+     */
+    @org.junit.Test
+    public void testConversionsFromDate() {
+        Test FromDate = new Test();
+
+        FromDate.initializeToDate();
+
+        FromDate.attemptConversion(TO_DATE_TIME);
+        FromDate.attemptConversion(TO_DURATION);
+        FromDate.attemptConversion(TO_TIME);
+        FromDate.attemptConversion(TO_DAY);
+        FromDate.attemptConversion(TO_MONTH);
+        FromDate.attemptConversion(TO_MONTH_DAY);
+        FromDate.attemptConversion(TO_YEAR);
+        FromDate.attemptConversion(TO_YEAR_MONTH);
+        FromDate.attemptConversion(TO_YEAR_MONTH_DAY);
+    }
+
+    /**
+     * testConversionsFromDateTime verifies each of the conversions from
+     * DateTime using the DataHelper
+     */
+    @org.junit.Test
+    public void testConversionsFromDateTime() {
+        Test FromDateTime = new Test();
+
+        FromDateTime.initialize(TO_DATE_TIME);
+
+        FromDateTime.attemptConversion(TO_DATE_TIME);
+        FromDateTime.attemptConversion(TO_DURATION);
+        FromDateTime.attemptConversion(TO_TIME);
+        FromDateTime.attemptConversion(TO_DAY);
+        FromDateTime.attemptConversion(TO_MONTH);
+        FromDateTime.attemptConversion(TO_MONTH_DAY);
+        FromDateTime.attemptConversion(TO_YEAR);
+        FromDateTime.attemptConversion(TO_YEAR_MONTH);
+        FromDateTime.attemptConversion(TO_YEAR_MONTH_DAY);
+    }
+
+    /**
+     * testConversionsFromDuration verifies each of the conversions from
+     * Duration using the DataHelper
+     */
+    @org.junit.Test
+    public void testConversionsFromDuration() {
+        Test FromDuration = new Test();
+
+        FromDuration.initialize(TO_DURATION);
+
+        FromDuration.attemptConversion(TO_DURATION);
+        FromDuration.attemptConversion(TO_DATE_TIME);
+        FromDuration.attemptConversion(TO_TIME);
+        FromDuration.attemptConversion(TO_DAY);
+        FromDuration.attemptConversion(TO_MONTH);
+        FromDuration.attemptConversion(TO_MONTH_DAY);
+        FromDuration.attemptConversion(TO_YEAR);
+        FromDuration.attemptConversion(TO_YEAR_MONTH);
+        FromDuration.attemptConversion(TO_YEAR_MONTH_DAY);
+    }
+
+    /**
+     * testConversionsFromMonth verifies each of the conversions from Month
+     * using the DataHelper
+     */
+    @org.junit.Test
+    public void testConversionsFromMonth() {
+        Test FromMonth = new Test();
+
+        FromMonth.initialize(TO_MONTH);
+
+        FromMonth.attemptConversion(TO_MONTH);
+    }
+
+    /**
+     * testConversionsFromMonthDay verifies each of the conversions from
+     * MonthDay using the DataHelper
+     */
+    @org.junit.Test
+    public void testConversionsFromMonthDay() {
+        Test FromMonthDay = new Test();
+
+        FromMonthDay.initialize(TO_MONTH_DAY);
+        FromMonthDay.attemptConversion(TO_MONTH_DAY);
+        FromMonthDay.attemptConversion(TO_MONTH);
+        FromMonthDay.attemptConversion(TO_DAY);
+    }
+
+    /**
+     * testConversionsFromTime verifies each of the conversions from Time using
+     * the DataHelper
+     */
+    @org.junit.Test
+    public void testConversionsFromTime() {
+        Test FromTime = new Test();
+
+        FromTime.initialize(TO_TIME);
+
+        FromTime.attemptConversion(TO_TIME);
+    }
+
+    /**
+     * testConversionsFromYear verifies each of the conversions from Year using
+     * the DataHelper
+     */
+    @org.junit.Test
+    public void testConversionsFromYear() {
+        Test FromYear = new Test();
+
+        FromYear.initialize(TO_YEAR);
+
+        FromYear.attemptConversion(TO_YEAR);
+    }
+
+    /**
+     * testConversionsFromYearMonth verifies each of the conversions from
+     * YearMonth using the DataHelper
+     */
+    @org.junit.Test
+    public void testConversionsFromYearMonth() {
+        Test FromYearMonth = new Test();
+
+        FromYearMonth.initialize(TO_YEAR_MONTH);
+
+        FromYearMonth.attemptConversion(TO_YEAR_MONTH);
+        FromYearMonth.attemptConversion(TO_MONTH);
+        FromYearMonth.attemptConversion(TO_YEAR);
+    }
+
+    /**
+     * testConversionsFromYearMonthDay verifies each of the conversions from
+     * YearMonthDay using the DataHelper
+     */
+    @org.junit.Test
+    public void testConversionsFromYearMonthDay() {
+        Test FromYearMonthDay = new Test();
+
+        FromYearMonthDay.initialize(TO_YEAR_MONTH_DAY);
+
+        FromYearMonthDay.attemptConversion(TO_YEAR_MONTH_DAY);
+        FromYearMonthDay.attemptConversion(TO_YEAR_MONTH);
+        FromYearMonthDay.attemptConversion(TO_MONTH_DAY);
+        FromYearMonthDay.attemptConversion(TO_YEAR);
+        FromYearMonthDay.attemptConversion(TO_MONTH);
+        FromYearMonthDay.attemptConversion(TO_DAY);
+    }
+
+    /**
+     * testToDateFormats verifies that strings that should be recognized by
+     * toDate do not result in a null Date value when passed to
+     * DataHelper.toDate(String).
+     */
+    @org.junit.Test
+    public void testToDateFormats() {
+        String[] validStrings =
+            {"2006-03-31T03:30:45.123Z", "-2006-03-31T03:30:45.1Z", "2006-03-31T03:30:45Z", "2006-03-31T03:30:45.123",
+             "2006-03-31T03:30:45.1", "-2006-03-31T03:30:45", "2006-03-31T03:30:45.123 EDT",
+             "2006-03-31T03:30:45.1 EDT", "2006-03-31T03:30:45 EDT", "---05 PST", "---04", "--12 GMT", "--12",
+             "--08-08 EST", "--08-08", "1976-08-08 PDT", "1976-08-08", "88-12 CST", "1988-12", "2005 CDT", "1999",
+             "P2006Y 08M 10D T 12H 24M 07S", "P2006Y 10D T 12H", "-P2006Y 08M 10D T 07S.2", "P08M 10D T 07H",
+             "-P 04M 10DT12H 24S.88", "PT12H"};
+
+        for (int i = 0; i < validStrings.length; i++) {
+            assertNotNull("DataHelper.toData() should not return null for '" + validStrings[i] + "'.", data_helper
+                .toDate(validStrings[i]));
+        }
+    }
+}

Propchange: incubator/tuscany/java/cts/sdo2.1/src/main/java/test/sdo21/tests/conversion/DateConversionTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/cts/sdo2.1/src/main/java/test/sdo21/tests/conversion/DateConversionTest.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date



---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org