You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xmlbeans.apache.org by ra...@apache.org on 2007/04/27 06:11:40 UTC

svn commit: r532957 [4/4] - in /xmlbeans/trunk: src/typeimpl/org/apache/xmlbeans/impl/schema/ test/cases/xbean/misc/jira/ test/src/misc/detailed/

Added: xmlbeans/trunk/test/src/misc/detailed/LargeEnumTest.java
URL: http://svn.apache.org/viewvc/xmlbeans/trunk/test/src/misc/detailed/LargeEnumTest.java?view=auto&rev=532957
==============================================================================
--- xmlbeans/trunk/test/src/misc/detailed/LargeEnumTest.java (added)
+++ xmlbeans/trunk/test/src/misc/detailed/LargeEnumTest.java Thu Apr 26 21:11:39 2007
@@ -0,0 +1,131 @@
+package misc.detailed;
+
+import org.apache.xmlbeans.*;
+
+import java.util.*;
+import java.lang.reflect.Field;
+import java.lang.reflect.Modifier;
+
+import junit.framework.TestSuite;
+import junit.framework.TestCase;
+import junit.framework.Test;
+import junit.framework.Assert;
+import xmlbeans307.*;
+
+/**
+ * This test was put together for:
+ * http://issues.apache.org/jira/browse/XMLBEANS-307
+ * XMLBeans scomp throws error "code too large"
+ */
+public class LargeEnumTest extends TestCase {
+
+    public LargeEnumTest(String name) {
+        super(name);
+    }
+
+    public static Test suite() {
+        return new TestSuite(LargeEnumTest.class);
+    }
+
+    /**
+     * These are tests for a enumeration type
+     *
+     * @throws Exception
+     */
+    public void testEnumCount_closeToMax() throws Exception {
+        SchemaType mType = MaxAllowedEnumType.type;
+        assertTrue("Enumeration SchemaType was null", mType.getEnumerationValues() != null);
+        assertTrue("EnumerationValue was not 3665 as expected was" + mType.getEnumerationValues().length,
+                mType.getEnumerationValues().length == 3665);
+
+        SchemaType mElem = MaxAllowedElementDocument.type;
+        assertTrue("Enumeration SchemaType was null", mElem.getEnumerationValues() == null);
+
+        // Test that the Java type associated to this is an enum type
+        assertNotNull("This type does not correspond to a Java enumeration", mType.getStringEnumEntries());
+    }
+
+
+    public void testEnumCount_greaterThanMax() throws Exception {
+        // TODO: verify if any xpath/xquery issues 
+        SchemaType mType = MoreThanAllowedEnumType.type;
+
+        assertNotNull("Enumeration should be null as type should be base type " + mType.getEnumerationValues(),
+                mType.getEnumerationValues());
+        assertTrue("EnumerationValue was not 3678 as expected was " + mType.getEnumerationValues().length,
+                mType.getEnumerationValues().length == 3678);
+        System.out.println("GET BASE TYPE: " + mType.getBaseType());
+        System.out.println("GET BASE TYPE: " + mType.getPrimitiveType());
+        assertTrue("type should have been base type, was " + mType.getBaseType(),
+                mType.getBaseType().getBuiltinTypeCode() == XmlToken.type.getBuiltinTypeCode());
+
+        SchemaType mElem = GlobalMoreThanElementDocument.type;
+        assertTrue("Enumeration SchemaType was null", mElem.getBaseEnumType() == null);
+
+        // Test that the Java type associated to this is not an enum type
+        assertNull("This type corresponds to a Java enumeration, even though it has too many enumeration values",
+            mType.getStringEnumEntries());
+    }
+
+    public void testEnumCount_validate_invalid_enum() throws Exception {
+        MoreThanAllowedEnumType mType = MoreThanAllowedEnumType.Factory.newInstance();
+
+        //This value dos not exist in the enumeration set
+        mType.setStringValue("12345AAA");
+        ArrayList errors = new ArrayList();
+        XmlOptions options = (new XmlOptions()).setErrorListener(errors);
+        mType.validate(options);
+        XmlError[] xErr = new XmlError[errors.size()];
+        for (int i = 0; i < errors.size(); i++) {
+            System.out.println("ERROR: " + errors.get(i));
+            xErr[i] = (XmlError)errors.get(i);
+        }
+
+        Assert.assertTrue("NO Expected Errors after validating enumType after set", errors.size() ==1 );
+        Assert.assertTrue("Expected ERROR CODE was not as expected",
+                xErr[0].getErrorCode().compareTo("cvc-enumeration-valid") ==0 );
+        // string value '12345AAA' is not a valid enumeration value for MoreThanAllowedEnumType in
+    }
+
+
+    public void test_MoreEnum_Operations() throws Exception {
+        MoreThanAllowedEnumType mType = MoreThanAllowedEnumType.Factory.newInstance();
+
+        mType.setStringValue("AAA");
+        ArrayList errors = new ArrayList();
+        XmlOptions options = (new XmlOptions()).setErrorListener(errors);
+        mType.validate(options);
+
+        for (int i = 0; i < errors.size(); i++) {
+            System.out.println("ERROR: " + errors.get(i));
+        }
+        Assert.assertTrue("There were errors validating enumType after set", errors.size() == 0);
+
+        GlobalMoreThanElementDocument mDoc = GlobalMoreThanElementDocument.Factory.newInstance();
+        mDoc.setGlobalMoreThanElement("AAA");
+        errors = null;
+        errors = new ArrayList();
+        options = (new XmlOptions()).setErrorListener(errors);
+        mDoc.validate(options);
+
+        for (int i = 0; i < errors.size(); i++) {
+            System.out.println("ERROR: " + errors.get(i));
+        }
+
+        Assert.assertTrue("There were errors validating enumDoc after set", errors.size() == 0);
+
+        MoreThanAllowedComplexType mcType = MoreThanAllowedComplexType.Factory.newInstance();
+        mcType.setComplexTypeMoreThanEnum("AAA");
+        mcType.setSimpleString("This should work");
+        errors = null;
+        errors = new ArrayList();
+        mcType.validate(options);
+        for (int i = 0; i < errors.size(); i++) {
+            System.out.println("ERROR: " + errors.get(i));
+        }
+
+        Assert.assertTrue("There were errors validating complxType after set", errors.size() == 0);
+    }
+
+
+}



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