diff options
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.java | 295 |
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")); + } +} |