/*
* Copyright 2008 Le Duc Bao
*
* Licensed 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.
*/
package org.castor.xml.schema.writer;
import org.exolab.castor.xml.schema.AttributeDecl;
import org.exolab.castor.xml.schema.Facet;
import org.exolab.castor.xml.schema.SimpleType;
/**
* This test covers simple type generation.
*
* @author <a href="mailto:leducbao AT gmail DOT com">Le Duc Bao</a>
*/
public class SimpleTypeTest extends AbstractSchemaTest {
/**
* @param Constructor
*/
public SimpleTypeTest(String testcase) {
super(testcase);
}
/**
* very simple type
*/
public void testSimpleType() throws Exception {
// create targeted schema
_schema.addNamespace("pre", "my.namespace.org");
SimpleType sType = _schema.createSimpleType("myType", "string", "");
_schema.addSimpleType(sType);
// compare
TestResult result = doTest("simpletype_simple.xsd");
assertEquals("single attribute test failed", TestResult.IDENTICAL,
result);
}
/**
* test create attribute, fixed value
*/
public void testAttributeCreation() throws Exception {
// create targeted schema
_schema.addNamespace("pre", "my.namespace.org");
AttributeDecl attr = new AttributeDecl(_schema);
attr.setName("myAttr");
attr.setSimpleTypeReference("string");
attr.setFixedValue("#hello");
attr.setUse(AttributeDecl.USE_OPTIONAL);
_schema.addAttribute(attr);
// compare
TestResult result = doTest("simpletype_attributecreation.xsd");
assertEquals("testAttributeCreation test failed", TestResult.IDENTICAL,
result);
}
/**
* test create attribute
*/
public void testAttributeCreation2() throws Exception {
// create targeted schema
_schema.addNamespace("pre", "my.namespace.org");
AttributeDecl attr = new AttributeDecl(_schema);
attr.setName("myAttr");
attr.setSimpleTypeReference("string");
attr.setDefaultValue("hello");
attr.setUse(AttributeDecl.USE_PROHIBITED);
_schema.addAttribute(attr);
// compare
TestResult result = doTest("simpletype_attributecreation2.xsd");
assertEquals("testAttributeCreation2 test failed",
TestResult.IDENTICAL, result);
}
/**
* test create attribute, use required
*/
public void testAttributeCreation3() throws Exception {
// create targeted schema
_schema.addNamespace("pre", "my.namespace.org");
AttributeDecl attr = new AttributeDecl(_schema);
attr.setName("myAttr");
attr.setSimpleTypeReference("string");
attr.setDefaultValue("hello");
attr.setUse(AttributeDecl.USE_REQUIRED);
_schema.addAttribute(attr);
// compare
TestResult result = doTest("simpletype_attributecreation3.xsd");
assertEquals("testAttributeCreation3 test failed",
TestResult.IDENTICAL, result);
}
// restriction
/**
* test create facet/min-max
*/
public void testMinMax() throws Exception {
// create targeted schema
_schema.addNamespace("pre", "my.namespace.org");
SimpleType sType = _schema.createSimpleType("myType", "int", "");
Facet min = new Facet(Facet.MIN_EXCLUSIVE, "0");
Facet max = new Facet(Facet.MAX_EXCLUSIVE, "100");
sType.addFacet(min);
sType.addFacet(max);
_schema.addSimpleType(sType);
// compare
TestResult result = doTest("simpletype_res_minmax.xsd");
assertEquals("testMinMax test failed", TestResult.IDENTICAL, result);
}
// min inclusive, max inclusive
// leng, max length, min length
// whiteSpace preserve, replace, collapse
// enumeration
// union
// pattern
// precision, total digits, fraction digits
}