summaryrefslogtreecommitdiffstats
path: root/sdo-java/trunk-cts/sdo2.1/src/main/java/test/sdo21/tests/api/DynamicTypesFromSchemaTestCase.java
diff options
context:
space:
mode:
Diffstat (limited to 'sdo-java/trunk-cts/sdo2.1/src/main/java/test/sdo21/tests/api/DynamicTypesFromSchemaTestCase.java')
-rw-r--r--sdo-java/trunk-cts/sdo2.1/src/main/java/test/sdo21/tests/api/DynamicTypesFromSchemaTestCase.java295
1 files changed, 295 insertions, 0 deletions
diff --git a/sdo-java/trunk-cts/sdo2.1/src/main/java/test/sdo21/tests/api/DynamicTypesFromSchemaTestCase.java b/sdo-java/trunk-cts/sdo2.1/src/main/java/test/sdo21/tests/api/DynamicTypesFromSchemaTestCase.java
new file mode 100644
index 0000000000..3fb6c2f310
--- /dev/null
+++ b/sdo-java/trunk-cts/sdo2.1/src/main/java/test/sdo21/tests/api/DynamicTypesFromSchemaTestCase.java
@@ -0,0 +1,295 @@
+/*
+ * 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 java.io.IOException;
+import java.io.InputStream;
+import java.net.URL;
+import java.util.List;
+import java.util.ListIterator;
+import java.util.SortedSet;
+import java.util.TreeSet;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import static org.junit.Assert.fail;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.assertNotNull;
+
+import test.sdo21.framework.CTSTestCase;
+import test.sdo21.framework.TestHelper;
+
+import commonj.sdo.DataObject;
+import commonj.sdo.Property;
+import commonj.sdo.Type;
+import commonj.sdo.helper.DataFactory;
+import commonj.sdo.helper.HelperContext;
+import commonj.sdo.helper.TypeHelper;
+import commonj.sdo.helper.XMLDocument;
+import commonj.sdo.helper.XMLHelper;
+import commonj.sdo.helper.XSDHelper;
+
+/**
+ * Tests methods of DataGraph except for change summary which is tested elsewhere.
+ */
+public class DynamicTypesFromSchemaTestCase extends CTSTestCase {
+ private final String DYNAMIC_ROOT_TYPE_0 = "TestType0";
+
+ private final String DYNAMIC_ROOT_TYPE_1 = "TestType1";
+
+ private final String DYNAMIC_ROOT_TYPE_2 = "TestType2";
+
+ private final String DYNAMIC_TYPES_SCHEMA = "/dynamicTypesFromSchema.xsd";
+
+ private final String DYNAMIC_TYPES_URI = "http://www.example.com/dynamicTypesFromSchema";
+
+ private HelperContext hc;
+
+ private final String TEST_XML_DOC_0 = "/dynamicTypesFromSchema0.xml";
+
+ private final String TEST_XML_DOC_1 = "/dynamicTypesFromSchema1.xml";
+
+ private final String TEST_XML_DOC_2 = "/dynamicTypesFromSchema2.xml";
+
+ private List typeList;
+
+ @Before
+ public void setUp() throws Exception {
+ TestHelper testHelper = getTestHelper();
+ hc = testHelper.createHelperContext();
+
+ // Populate the meta data for the types defined in schema
+ URL url = getClass().getResource(DYNAMIC_TYPES_SCHEMA);
+ InputStream inputStream = url.openStream();
+ XSDHelper xsdHelper = hc.getXSDHelper();
+ typeList = xsdHelper.define(inputStream, url.toString());
+ inputStream.close();
+ }
+
+ /**
+ * test of Schema complex types
+ */
+ @Test
+ public void testDynamicTypeList() throws IOException {
+ if (typeList == null) {
+ fail("typeList unexpectedly null");
+ }
+
+ ListIterator li = typeList.listIterator();
+ SortedSet<String> typeNameSet = new TreeSet<String>();
+ while (li.hasNext()) {
+ Object obj = li.next();
+ if (obj instanceof Type) {
+ typeNameSet.add(((Type)obj).getName());
+ } else {
+ fail("a type list entry was not a type: " + obj.toString());
+ }
+ }
+ assertTrue(typeNameSet.contains("Address"));
+ assertTrue(typeNameSet.contains("Component"));
+ assertTrue(typeNameSet.contains("TestType0"));
+ assertTrue(typeNameSet.contains("TestType1"));
+ assertTrue(typeNameSet.contains("TestType2"));
+ assertTrue(typeNameSet.contains("evenNumberOfOddOrEvenDigits"));
+ assertTrue(typeNameSet.contains("evenNumberOfOddOrEvenDigitsObject"));
+ assertTrue(typeNameSet.contains("month"));
+ assertTrue(typeNameSet.contains("monthList"));
+ assertTrue(typeNameSet.contains("monthObject"));
+ assertTrue(typeNameSet.contains("oddOrEvenDigits"));
+ assertTrue(typeNameSet.contains("oddOrEvenDigitsObject"));
+ assertTrue(typeNameSet.contains("smallBigDecimal"));
+ assertTrue(typeNameSet.contains("smallBigInteger"));
+ assertTrue(typeNameSet.contains("smallInt"));
+ assertTrue(typeNameSet.contains("smallIntObject"));
+ assertTrue(typeNameSet.contains("smallOddNumber"));
+ assertTrue(typeNameSet.contains("smallOddNumberObject"));
+ assertTrue(typeNameSet.contains("status"));
+ assertTrue(typeNameSet.contains("statusOrMonthList"));
+ }
+
+ /**
+ * test #0 of Schema primitive datatypes
+ */
+ @Test
+ public void testDynamicTypesGroup0() throws IOException {
+ if (hc == null) {
+ fail("the HelperContext unexpectedly null");
+ }
+
+ TypeHelper th = hc.getTypeHelper();
+ Type rootType0 = th.getType(DYNAMIC_TYPES_URI, DYNAMIC_ROOT_TYPE_0);
+
+ assertNotNull(rootType0);
+
+ DataFactory df = hc.getDataFactory();
+ DataObject rootObject = df.create(rootType0);
+
+ assertNotNull(rootObject);
+
+ XMLHelper xh = hc.getXMLHelper();
+ XMLDocument doc = xh.load(getClass().getResourceAsStream(TEST_XML_DOC_0));
+ DataObject rootObject0 = doc.getRootObject();
+
+ assertNotNull(rootObject0);
+ List propList = rootObject0.getInstanceProperties();
+ SortedSet<String> propNameSet = new TreeSet<String>();
+ ListIterator li1 = propList.listIterator();
+ while (li1.hasNext()) {
+ Object obj = li1.next();
+ if (obj instanceof Property) {
+ propNameSet.add(((Property)obj).getName());
+ } else {
+ fail("getInstanceProperties list contained: " + obj.toString());
+ }
+ }
+ assertTrue("Property name set does not contain 'anyURI'.", propNameSet.contains("anyURI"));
+ assertTrue("Property name set does not contain 'base64Binary'.", propNameSet.contains("base64Binary"));
+ assertTrue("Property name set does not contain 'boolean'.", propNameSet.contains("boolean"));
+ assertTrue("Property name set does not contain 'date'.", propNameSet.contains("date"));
+ assertTrue("Property name set does not contain 'dateTime'.", propNameSet.contains("dateTime"));
+ assertTrue("Property name set does not contain 'decimal'.", propNameSet.contains("decimal"));
+ assertTrue("Property name set does not contain 'double'.", propNameSet.contains("double"));
+ assertTrue("Property name set does not contain 'duration'.", propNameSet.contains("duration"));
+ assertTrue("Property name set does not contain 'float'.", propNameSet.contains("float"));
+ assertTrue("Property name set does not contain 'gDay'.", propNameSet.contains("gDay"));
+ assertTrue("Property name set does not contain 'gMonth'.", propNameSet.contains("gMonth"));
+ assertTrue("Property name set does not contain 'gMonthDay'.", propNameSet.contains("gMonthDay"));
+ assertTrue("Property name set does not contain 'gYear'.", propNameSet.contains("gYear"));
+ assertTrue("Property name set does not contain 'gYearMonth'.", propNameSet.contains("gYearMonth"));
+ assertTrue("Property name set does not contain 'hexBinary'.", propNameSet.contains("hexBinary"));
+ assertTrue("Property name set does not contain 'string'.", propNameSet.contains("string"));
+ assertTrue("Property name set does not contain 'time'.", propNameSet.contains("time"));
+ }
+
+ /**
+ * test #1 of Schema derived datatypes
+ */
+ @Test
+ public void testDynamicTypesGroup1() throws IOException {
+ if (hc == null) {
+ fail("the HelperContext unexpectedly null");
+ }
+
+ TypeHelper th = hc.getTypeHelper();
+ Type rootType = th.getType(DYNAMIC_TYPES_URI, DYNAMIC_ROOT_TYPE_1);
+
+ assertNotNull(rootType);
+
+ DataFactory df = hc.getDataFactory();
+ DataObject rootObject = df.create(rootType);
+
+ assertNotNull(rootObject);
+
+ XMLHelper xh = hc.getXMLHelper();
+ XMLDocument doc = xh.load(getClass().getResourceAsStream(TEST_XML_DOC_1));
+ DataObject rootObject1 = doc.getRootObject();
+
+ assertNotNull(rootObject1);
+ List propList = rootObject1.getInstanceProperties();
+ SortedSet<String> propNameSet = new TreeSet<String>();
+ ListIterator li1 = propList.listIterator();
+ while (li1.hasNext()) {
+ Object obj = li1.next();
+ if (obj instanceof Property) {
+ propNameSet.add(((Property)obj).getName());
+ } else {
+ fail("getInstanceProperties list contained: " + obj.toString());
+ }
+ }
+ assertTrue("Property name set does not contain 'ID'.", propNameSet.contains("ID"));
+ assertTrue("Property name set does not contain 'IDREF'.", propNameSet.contains("IDREF"));
+ assertTrue("Property name set does not contain 'IDREFS'.", propNameSet.contains("IDREFS"));
+ assertTrue("Property name set does not contain 'NCName'.", propNameSet.contains("NCName"));
+ assertTrue("Property name set does not contain 'NMTOKEN'.", propNameSet.contains("NMTOKEN"));
+ assertTrue("Property name set does not contain 'NMTOKENS'.", propNameSet.contains("NMTOKENS"));
+ assertTrue("Property name set does not contain 'Name'.", propNameSet.contains("Name"));
+ assertTrue("Property name set does not contain 'byte'.", propNameSet.contains("byte"));
+ assertTrue("Property name set does not contain 'int'.", propNameSet.contains("int"));
+ assertTrue("Property name set does not contain 'integer'.", propNameSet.contains("integer"));
+ assertTrue("Property name set does not contain 'language'.", propNameSet.contains("language"));
+ assertTrue("Property name set does not contain 'long'.", propNameSet.contains("long"));
+ assertTrue("Property name set does not contain 'negativeInteger'.", propNameSet.contains("negativeInteger"));
+ assertTrue("Property name set does not contain 'nonNegativeInteger'.", propNameSet.contains("nonNegativeInteger"));
+ assertTrue("Property name set does not contain 'nonPositiveInteger'.", propNameSet.contains("nonPositiveInteger"));
+ assertTrue("Property name set does not contain 'normalizedString'.", propNameSet.contains("normalizedString"));
+ assertTrue("Property name set does not contain 'positiveInteger'.", propNameSet.contains("positiveInteger"));
+ assertTrue("Property name set does not contain 'short'.", propNameSet.contains("short"));
+ assertTrue("Property name set does not contain 'token'.", propNameSet.contains("token"));
+ assertTrue("Property name set does not contain 'unsignedByte'.", propNameSet.contains("unsignedByte"));
+ assertTrue("Property name set does not contain 'unsignedInt'.", propNameSet.contains("unsignedInt"));
+ assertTrue("Property name set does not contain 'unsignedLong'.", propNameSet.contains("unsignedLong"));
+ assertTrue("Property name set does not contain 'unsignedShort'.", propNameSet.contains("unsignedShort"));
+ }
+
+ /**
+ * test #2 of more Schema derived datatypes
+ */
+ @Test
+ public void testDynamicTypesGroup2() throws IOException {
+ if (hc == null) {
+ fail("the HelperContext unexpectedly null");
+ }
+
+ TypeHelper th = hc.getTypeHelper();
+ Type rootType = th.getType(DYNAMIC_TYPES_URI, DYNAMIC_ROOT_TYPE_2);
+
+ assertNotNull(rootType);
+
+ DataFactory df = hc.getDataFactory();
+ DataObject rootObject = df.create(rootType);
+
+ assertNotNull(rootObject);
+
+ XMLHelper xh = hc.getXMLHelper();
+ XMLDocument doc = xh.load(getClass().getResourceAsStream(TEST_XML_DOC_2));
+ DataObject rootObject2 = doc.getRootObject();
+
+ assertNotNull(rootObject2);
+ List propList = rootObject2.getInstanceProperties();
+ SortedSet<String> propNameSet = new TreeSet<String>();
+ ListIterator li1 = propList.listIterator();
+ while (li1.hasNext()) {
+ Object obj = li1.next();
+ if (obj instanceof Property) {
+ propNameSet.add(((Property)obj).getName());
+ } else {
+ fail("getInstanceProperties list contained: " + obj.toString());
+ }
+ }
+ assertTrue("Property name set does not contain 'addresses'.", propNameSet.contains("addresses"));
+ assertTrue("Property name set does not contain 'cluster'.", propNameSet.contains("cluster"));
+ assertTrue("Property name set does not contain 'clusters'.", propNameSet.contains("clusters"));
+ assertTrue("Property name set does not contain 'components'.", propNameSet.contains("components"));
+ assertTrue("Property name set does not contain 'headerValue'.", propNameSet.contains("headerValue"));
+ assertTrue("Property name set does not contain 'item'.", propNameSet.contains("item"));
+ assertTrue("Property name set does not contain 'items'.", propNameSet.contains("items"));
+ assertTrue("Property name set does not contain 'nCName'.", propNameSet.contains("nCName"));
+ assertTrue("Property name set does not contain 'otherTag'.", propNameSet.contains("otherTag"));
+ assertTrue("Property name set does not contain 'overallStatus'.", propNameSet.contains("overallStatus"));
+ assertTrue("Property name set does not contain 'smallBigDecimal'.", propNameSet.contains("smallBigDecimal"));
+ assertTrue("Property name set does not contain 'smallBigInteger'.", propNameSet.contains("smallBigInteger"));
+ assertTrue("Property name set does not contain 'smallInt'.", propNameSet.contains("smallInt"));
+ assertTrue("Property name set does not contain 'smallOddNumber'.", propNameSet.contains("smallOddNumber"));
+ assertTrue("Property name set does not contain 'statusOrMonthList'.", propNameSet.contains("statusOrMonthList"));
+ assertTrue("Property name set does not contain 'wierdNumber'.", propNameSet.contains("wierdNumber"));
+ }
+}