Author: mukulg
Date: Fri Nov  1 03:47:28 2019
New Revision: 1869230

URL: http://svn.apache.org/viewvc?rev=1869230&view=rev
Log:
committing few xsd idc tests on trunk

Added:
    xerces/java/trunk/tests/idc/
    xerces/java/trunk/tests/idc/AllTests.java   (with props)
    xerces/java/trunk/tests/idc/IDConstraintTests.java   (with props)
    xerces/java/trunk/tests/idc/idc_1.xsd
    xerces/java/trunk/tests/idc/idc_1_invalid_1.xml
    xerces/java/trunk/tests/idc/idc_1_invalid_2.xml
    xerces/java/trunk/tests/idc/idc_1_invalid_3.xml
    xerces/java/trunk/tests/idc/idc_1_valid_1.xml
    xerces/java/trunk/tests/util/
    xerces/java/trunk/tests/util/FailureMesgFragments.java   (with props)
    xerces/java/trunk/tests/util/XercesAbstractTestCase.java   (with props)
Modified:
    xerces/java/trunk/build.xml

Modified: xerces/java/trunk/build.xml
URL: 
http://svn.apache.org/viewvc/xerces/java/trunk/build.xml?rev=1869230&r1=1869229&r2=1869230&view=diff
==============================================================================
--- xerces/java/trunk/build.xml (original)
+++ xerces/java/trunk/build.xml Fri Nov  1 03:47:28 2019
@@ -920,6 +920,12 @@ Authors:
           classname="dom.dom3.Test"
           failOnError="yes">
         <jvmarg 
value="-Xbootclasspath/p:${tools.dir}/${jar.apis}${path.separator}${tools.dir}/${jar.resolver}${path.separator}${tools.dir}/${jar.serializer}${path.separator}${build.dir}/classes"/>
+    </java>
+    <echo message="Running idc.AllTests ..." />
+    <java fork="yes"
+          classname="idc.AllTests"
+          failOnError="yes">
+        <jvmarg 
value="-Xbootclasspath/p:${tools.dir}/${jar.apis}${path.separator}${tools.dir}/${jar.resolver}${path.separator}${tools.dir}/${jar.serializer}${path.separator}${tools.dir}/${jar.junit}${path.separator}${build.dir}/classes${path.separator}${build.dir}/tests"/>
     </java>    
   </target>
 

Added: xerces/java/trunk/tests/idc/AllTests.java
URL: 
http://svn.apache.org/viewvc/xerces/java/trunk/tests/idc/AllTests.java?rev=1869230&view=auto
==============================================================================
--- xerces/java/trunk/tests/idc/AllTests.java (added)
+++ xerces/java/trunk/tests/idc/AllTests.java Fri Nov  1 03:47:28 2019
@@ -0,0 +1,42 @@
+/*
+ * 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.
+ */
+
+package idc;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import junit.textui.TestRunner;
+
+/**
+ * XSD IDC constraints tests.
+ * 
+ * @author Mukul Gandhi <muk...@apache.org>
+ * @version $Id$
+ */
+public class AllTests {
+    
+    public static void main(String[] args) {
+        TestRunner.run(AllTests.suite());
+    }
+    
+    public static Test suite() {
+        TestSuite suite = new TestSuite("Tests for XSD IDC constraints.");
+        suite.addTestSuite(IDConstraintTests.class);
+        return suite;
+    }
+
+}

Propchange: xerces/java/trunk/tests/idc/AllTests.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: xerces/java/trunk/tests/idc/AllTests.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Added: xerces/java/trunk/tests/idc/IDConstraintTests.java
URL: 
http://svn.apache.org/viewvc/xerces/java/trunk/tests/idc/IDConstraintTests.java?rev=1869230&view=auto
==============================================================================
--- xerces/java/trunk/tests/idc/IDConstraintTests.java (added)
+++ xerces/java/trunk/tests/idc/IDConstraintTests.java Fri Nov  1 03:47:28 2019
@@ -0,0 +1,140 @@
+/*
+ * 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.
+ */
+
+package idc;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.transform.stream.StreamSource;
+import javax.xml.validation.Schema;
+import javax.xml.validation.Validator;
+
+import util.FailureMesgFragments;
+import util.XercesAbstractTestCase;
+
+/**
+ * @author Mukul Gandhi <muk...@apache.org>
+ * @version $Id$
+ */
+public class IDConstraintTests extends XercesAbstractTestCase {
+    
+    public IDConstraintTests(String name) {
+        super(name);
+    }
+    
+    public void testIDConstraint1() {
+        String xmlfile = "tests/idc/idc_1_valid_1.xml";
+        String schemapath = "tests/idc/idc_1.xsd";    
+        try {
+            Schema s = fSchemaFactory.newSchema(new StreamSource(schemapath));
+            Validator v = s.newValidator();
+            v.setErrorHandler(this);
+            v.validate(new StreamSource(xmlfile));
+            assertNull(fErrSysId);
+            assertNull(fFatErrSysId);
+        } catch(Exception ex) {
+           ex.printStackTrace();
+           assertTrue(false);
+        }
+    }
+    
+    public void testIDConstraint2() {        
+        String xmlfile = "tests/idc/idc_1_invalid_1.xml";
+        String schemapath = "tests/idc/idc_1.xsd";    
+        try {
+            Schema s = fSchemaFactory.newSchema(new StreamSource(schemapath));
+            Validator v = s.newValidator();
+            v.setErrorHandler(this);
+            v.validate(new StreamSource(xmlfile));
+            assertTrue(failureList.size() == 3);
+            // test expected error messages
+            List expectedMsgList = new ArrayList();
+            FailureMesgFragments mesgFragments = new FailureMesgFragments();
+            mesgFragments.setMessageFragment("cvc-identity-constraint.4.3: Key 
'destNodeRef_key' with value 'node2' not found for identity constraint of 
element 'nffg'");
+            expectedMsgList.add(mesgFragments);
+            mesgFragments = new FailureMesgFragments();
+            mesgFragments.setMessageFragment("cvc-identity-constraint.4.2.2: 
Duplicate key value [nffg1] found for identity constraint \"nffgName_key\" of 
element \"root\"");
+            expectedMsgList.add(mesgFragments);
+            mesgFragments = new FailureMesgFragments();
+            mesgFragments.setMessageFragment("cvc-identity-constraint.4.3: Key 
'srcNodeRef_key' with value 'node1' not found for identity constraint of 
element 'nffg'");
+            expectedMsgList.add(mesgFragments);
+            assertTrue(areErrorMessagesConsistent(expectedMsgList));           
 
+        } catch(Exception ex) {
+           ex.printStackTrace();
+           assertTrue(false);
+        }
+    }
+    
+    public void testIDConstraint3() {        
+        String xmlfile = "tests/idc/idc_1_invalid_2.xml";
+        String schemapath = "tests/idc/idc_1.xsd";    
+        try {
+            Schema s = fSchemaFactory.newSchema(new StreamSource(schemapath));
+            Validator v = s.newValidator();
+            v.setErrorHandler(this);
+            v.validate(new StreamSource(xmlfile));
+            assertTrue(failureList.size() == 3);
+            // test expected error messages
+            List expectedMsgList = new ArrayList();
+            FailureMesgFragments mesgFragments = new FailureMesgFragments();
+            mesgFragments.setMessageFragment("cvc-identity-constraint.4.2.2: 
Duplicate key value [node1] found for identity constraint \"nodeName_key\" of 
element \"nffg\"");
+            expectedMsgList.add(mesgFragments);
+            mesgFragments = new FailureMesgFragments();
+            mesgFragments.setMessageFragment("cvc-identity-constraint.4.3: Key 
'destNodeRef_key' with value 'node2' not found for identity constraint of 
element 'nffg'");
+            expectedMsgList.add(mesgFragments);
+            mesgFragments = new FailureMesgFragments();
+            mesgFragments.setMessageFragment("cvc-identity-constraint.4.3: Key 
'srcNodeRef_key' with value 'node1' not found for identity constraint of 
element 'nffg'");
+            expectedMsgList.add(mesgFragments);
+            assertTrue(areErrorMessagesConsistent(expectedMsgList));           
             
+        } catch(Exception ex) {
+           ex.printStackTrace();
+           assertTrue(false);
+        }
+    }
+    
+    public void testIDConstraint4() {        
+        String xmlfile = "tests/idc/idc_1_invalid_3.xml";
+        String schemapath = "tests/idc/idc_1.xsd";    
+        try {
+            Schema s = fSchemaFactory.newSchema(new StreamSource(schemapath));
+            Validator v = s.newValidator();
+            v.setErrorHandler(this);
+            v.validate(new StreamSource(xmlfile));
+            assertTrue(failureList.size() == 4);
+            // test expected error messages
+            List expectedMsgList = new ArrayList();
+            FailureMesgFragments mesgFragments = new FailureMesgFragments();
+            mesgFragments.setMessageFragment("cvc-identity-constraint.4.2.2: 
Duplicate key value [node1] found for identity constraint \"nodeName_key\" of 
element \"nffg\"");
+            expectedMsgList.add(mesgFragments);
+            mesgFragments = new FailureMesgFragments();
+            mesgFragments.setMessageFragment("cvc-identity-constraint.4.3: Key 
'destNodeRef_key' with value 'node2' not found for identity constraint of 
element 'nffg'");
+            expectedMsgList.add(mesgFragments);
+            mesgFragments = new FailureMesgFragments();
+            mesgFragments.setMessageFragment("cvc-identity-constraint.4.2.2: 
Duplicate key value [node2] found for identity constraint \"nodeName_key\" of 
element \"nffg\"");
+            expectedMsgList.add(mesgFragments);
+            mesgFragments = new FailureMesgFragments();
+            mesgFragments.setMessageFragment("cvc-identity-constraint.4.3: Key 
'srcNodeRef_key' with value 'node1' not found for identity constraint of 
element 'nffg'");
+            expectedMsgList.add(mesgFragments);
+            assertTrue(areErrorMessagesConsistent(expectedMsgList));           
 
+        } catch(Exception ex) {
+           ex.printStackTrace();
+           assertTrue(false);
+        }
+    }
+
+}

Propchange: xerces/java/trunk/tests/idc/IDConstraintTests.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: xerces/java/trunk/tests/idc/IDConstraintTests.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Added: xerces/java/trunk/tests/idc/idc_1.xsd
URL: 
http://svn.apache.org/viewvc/xerces/java/trunk/tests/idc/idc_1.xsd?rev=1869230&view=auto
==============================================================================
--- xerces/java/trunk/tests/idc/idc_1.xsd (added)
+++ xerces/java/trunk/tests/idc/idc_1.xsd Fri Nov  1 03:47:28 2019
@@ -0,0 +1,62 @@
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema";>
+
+   <xs:element name="root">
+      <xs:complexType>
+         <xs:sequence>
+            <xs:element name="nffg" maxOccurs="unbounded">
+               <xs:complexType>
+                  <xs:sequence>
+                     <xs:element name="nodes">
+                        <xs:complexType>
+                           <xs:sequence>
+                              <xs:element name="node" maxOccurs="unbounded">
+                                 <xs:complexType>
+                                    <xs:sequence>
+                                       <xs:element name="nodeName" 
type="xs:string"/>
+                                    </xs:sequence>
+                                    <xs:attribute name="functionalType" 
type="xs:string" use="required"/>
+                                 </xs:complexType>
+                              </xs:element>
+                           </xs:sequence>
+                        </xs:complexType>
+                     </xs:element>
+                     <xs:element name="links">
+                        <xs:complexType>
+                           <xs:sequence>
+                              <xs:element name="link" maxOccurs="unbounded">
+                                 <xs:complexType>
+                                    <xs:sequence>
+                                       <xs:element name="sourceNode" 
type="xs:string"/>
+                                       <xs:element name="destNode" 
type="xs:string"/>
+                                    </xs:sequence>
+                                 </xs:complexType>
+                              </xs:element>
+                           </xs:sequence>
+                        </xs:complexType>
+                     </xs:element>
+                  </xs:sequence>
+                  <xs:attribute name="nffgName" type="xs:string" 
use="required"/>
+                  <xs:attribute name="deployTime" type="xs:dateTime" 
use="required"/>
+               </xs:complexType>               
+               <xs:key name="nodeName_key">
+                  <xs:selector xpath="nodes/node"/>
+                  <xs:field xpath="nodeName"/>
+               </xs:key>
+               <xs:keyref name="srcNodeRef_key" refer="nodeName_key">
+                  <xs:selector xpath="links/link"/>
+                  <xs:field xpath="sourceNode"/>
+               </xs:keyref>
+               <xs:keyref name="destNodeRef_key" refer="nodeName_key">
+                  <xs:selector xpath="links/link"/>
+                  <xs:field xpath="destNode"/>
+               </xs:keyref>
+            </xs:element>
+         </xs:sequence>
+      </xs:complexType>
+      <xs:key name="nffgName_key">
+         <xs:selector xpath="nffg"/>
+         <xs:field xpath="@nffgName"/>
+      </xs:key>
+   </xs:element>
+
+</xs:schema>
\ No newline at end of file

Added: xerces/java/trunk/tests/idc/idc_1_invalid_1.xml
URL: 
http://svn.apache.org/viewvc/xerces/java/trunk/tests/idc/idc_1_invalid_1.xml?rev=1869230&view=auto
==============================================================================
--- xerces/java/trunk/tests/idc/idc_1_invalid_1.xml (added)
+++ xerces/java/trunk/tests/idc/idc_1_invalid_1.xml Fri Nov  1 03:47:28 2019
@@ -0,0 +1,34 @@
+<root>
+    <nffg nffgName="nffg1" deployTime="1999-11-12T21:00:12">
+        <nodes>
+            <node functionalType="func1">
+                <nodeName>node1</nodeName>
+            </node>
+            <node functionalType="func2">
+                <nodeName>node3</nodeName>
+            </node>
+            <node functionalType="func2">
+                <nodeName>node4</nodeName>
+            </node>
+        </nodes>
+        <links>
+            <link>
+                <sourceNode>node1</sourceNode>
+                <destNode>node2</destNode>
+            </link>
+        </links>
+    </nffg>
+    <nffg nffgName="nffg1" deployTime="1999-11-12T22:00:12">
+        <nodes>
+            <node functionalType="func2">
+                <nodeName>node2</nodeName>
+            </node>
+        </nodes>
+        <links>
+            <link>
+                <sourceNode>node1</sourceNode>
+                <destNode>node2</destNode>
+            </link>
+        </links>
+    </nffg>
+</root>
\ No newline at end of file

Added: xerces/java/trunk/tests/idc/idc_1_invalid_2.xml
URL: 
http://svn.apache.org/viewvc/xerces/java/trunk/tests/idc/idc_1_invalid_2.xml?rev=1869230&view=auto
==============================================================================
--- xerces/java/trunk/tests/idc/idc_1_invalid_2.xml (added)
+++ xerces/java/trunk/tests/idc/idc_1_invalid_2.xml Fri Nov  1 03:47:28 2019
@@ -0,0 +1,34 @@
+<root>
+    <nffg nffgName="nffg1" deployTime="1999-11-12T21:00:12">
+        <nodes>
+            <node functionalType="func1">
+                <nodeName>node1</nodeName>
+            </node>
+            <node functionalType="func2">
+                <nodeName>node3</nodeName>
+            </node>
+            <node functionalType="func2">
+                <nodeName>node1</nodeName>
+            </node>
+        </nodes>
+        <links>
+            <link>
+                <sourceNode>node1</sourceNode>
+                <destNode>node2</destNode>
+            </link>
+        </links>
+    </nffg>
+    <nffg nffgName="nffg2" deployTime="1999-11-12T22:00:12">
+        <nodes>
+            <node functionalType="func2">
+                <nodeName>node2</nodeName>
+            </node>
+        </nodes>
+        <links>
+            <link>
+                <sourceNode>node1</sourceNode>
+                <destNode>node2</destNode>
+            </link>
+        </links>
+    </nffg>
+</root>
\ No newline at end of file

Added: xerces/java/trunk/tests/idc/idc_1_invalid_3.xml
URL: 
http://svn.apache.org/viewvc/xerces/java/trunk/tests/idc/idc_1_invalid_3.xml?rev=1869230&view=auto
==============================================================================
--- xerces/java/trunk/tests/idc/idc_1_invalid_3.xml (added)
+++ xerces/java/trunk/tests/idc/idc_1_invalid_3.xml Fri Nov  1 03:47:28 2019
@@ -0,0 +1,37 @@
+<root>
+    <nffg nffgName="nffg1" deployTime="1999-11-12T21:00:12">
+        <nodes>
+            <node functionalType="func1">
+                <nodeName>node1</nodeName>
+            </node>
+            <node functionalType="func2">
+                <nodeName>node3</nodeName>
+            </node>
+            <node functionalType="func2">
+                <nodeName>node1</nodeName>
+            </node>
+        </nodes>
+        <links>
+            <link>
+                <sourceNode>node1</sourceNode>
+                <destNode>node2</destNode>
+            </link>
+        </links>
+    </nffg>
+    <nffg nffgName="nffg2" deployTime="1999-11-12T22:00:12">
+        <nodes>
+            <node functionalType="func2">
+                <nodeName>node2</nodeName>
+            </node>
+            <node functionalType="func2">
+               <nodeName>node2</nodeName>
+            </node>
+        </nodes>
+        <links>
+            <link>
+                <sourceNode>node1</sourceNode>
+                <destNode>node2</destNode>
+            </link>
+        </links>
+    </nffg>
+</root>
\ No newline at end of file

Added: xerces/java/trunk/tests/idc/idc_1_valid_1.xml
URL: 
http://svn.apache.org/viewvc/xerces/java/trunk/tests/idc/idc_1_valid_1.xml?rev=1869230&view=auto
==============================================================================
--- xerces/java/trunk/tests/idc/idc_1_valid_1.xml (added)
+++ xerces/java/trunk/tests/idc/idc_1_valid_1.xml Fri Nov  1 03:47:28 2019
@@ -0,0 +1,37 @@
+<root>
+    <nffg nffgName="nffg1" deployTime="1999-11-12T21:00:12">
+        <nodes>
+            <node functionalType="func1">
+                <nodeName>node1</nodeName>
+            </node>
+            <node functionalType="func2">
+                <nodeName>node3</nodeName>
+            </node>
+            <node functionalType="func2">
+                <nodeName>node4</nodeName>
+            </node>
+        </nodes>
+        <links>
+            <link>
+                <sourceNode>node1</sourceNode>
+                <destNode>node3</destNode>
+            </link>
+        </links>
+    </nffg>
+    <nffg nffgName="nffg2" deployTime="1999-11-12T22:00:12">
+        <nodes>
+            <node functionalType="func2">
+                <nodeName>node2</nodeName>
+            </node>
+            <node functionalType="func2">
+               <nodeName>node3</nodeName>
+            </node>
+        </nodes>
+        <links>
+            <link>
+                <sourceNode>node3</sourceNode>
+                <destNode>node2</destNode>
+            </link>
+        </links>
+    </nffg>
+</root>
\ No newline at end of file

Added: xerces/java/trunk/tests/util/FailureMesgFragments.java
URL: 
http://svn.apache.org/viewvc/xerces/java/trunk/tests/util/FailureMesgFragments.java?rev=1869230&view=auto
==============================================================================
--- xerces/java/trunk/tests/util/FailureMesgFragments.java (added)
+++ xerces/java/trunk/tests/util/FailureMesgFragments.java Fri Nov  1 03:47:28 
2019
@@ -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.
+ */
+
+package util;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Represents ONE "error/fatal error/warning" message. Various fragments of 
ONE "error/fatal error/warning" message
+ * can be stored in this object.
+ * 
+ * @author Mukul Gandhi <muk...@apache.org>
+ * @version $Id$
+ */
+public class FailureMesgFragments {
+       
+       private List mesgFragments = null;
+
+       // class constructor
+       public FailureMesgFragments() {
+               mesgFragments = new ArrayList();
+       }
+       
+       public void setMessageFragment(String mesgFragment) {
+               mesgFragments.add(mesgFragment);
+       }
+       
+       public List getMessageFragments() {
+               return mesgFragments;
+       }
+   
+}

Propchange: xerces/java/trunk/tests/util/FailureMesgFragments.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: xerces/java/trunk/tests/util/FailureMesgFragments.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Added: xerces/java/trunk/tests/util/XercesAbstractTestCase.java
URL: 
http://svn.apache.org/viewvc/xerces/java/trunk/tests/util/XercesAbstractTestCase.java?rev=1869230&view=auto
==============================================================================
--- xerces/java/trunk/tests/util/XercesAbstractTestCase.java (added)
+++ xerces/java/trunk/tests/util/XercesAbstractTestCase.java Fri Nov  1 
03:47:28 2019
@@ -0,0 +1,196 @@
+/*
+ * 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.
+ */
+
+package util;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import javax.xml.XMLConstants;
+import javax.xml.validation.SchemaFactory;
+
+import junit.framework.TestCase;
+
+import org.apache.xerces.xs.ElementPSVI;
+import org.apache.xerces.xs.XSSimpleTypeDefinition;
+import org.xml.sax.ErrorHandler;
+import org.xml.sax.SAXException;
+import org.xml.sax.SAXParseException;
+
+/**
+ * @author Mukul Gandhi <muk...@apache.org>
+ * @version $Id$
+ */
+public class XercesAbstractTestCase extends TestCase implements ErrorHandler {
+       
+       protected SchemaFactory fSchemaFactory = null;  
+       protected String fErrSysId = null;
+       protected String fFatErrSysId = null;
+       protected String fWarningSysId = null;
+       protected String fErrorMessage = null;
+       // to maintain a collection of errors and/or warnings for ONE test case 
execution
+       protected List failureList = null;
+       protected List warningList = null; 
+       
+       protected boolean checkOnlyWarnings = false; 
+       
+       protected static final String DEFAULT_SCHEMA_LANGUAGE = 
XMLConstants.W3C_XML_SCHEMA_NS_URI;
+       protected static final String SCHEMA_FULL_CHECKING_FEATURE_ID = 
"http://apache.org/xml/features/validation/schema-full-checking";;       
+       
+       public XercesAbstractTestCase(String name) {
+               super(name);
+       }
+
+       protected void setUp() throws Exception {               
+               fSchemaFactory = 
SchemaFactory.newInstance(DEFAULT_SCHEMA_LANGUAGE);            
+               failureList = new ArrayList();
+               warningList = new ArrayList(); 
+       }
+
+       protected void tearDown() throws Exception {
+               fErrSysId = null;
+               fFatErrSysId = null;
+               failureList = null;
+               warningList = null;
+               checkOnlyWarnings = false;              
+       }
+       
+       public void error(SAXParseException exception) throws SAXException {
+               fErrSysId = exception.getSystemId();
+               fErrorMessage = exception.getMessage();
+               failureList.add(new Error(fErrSysId, fErrorMessage));
+    }
+
+    public void fatalError(SAXParseException exception) throws SAXException {
+       fFatErrSysId = exception.getSystemId();
+       fErrorMessage = exception.getMessage();
+       failureList.add(new FatalError(fErrSysId, fErrorMessage));
+    }
+
+       public void warning(SAXParseException exception) throws SAXException {
+               fWarningSysId = exception.getSystemId();
+               fErrorMessage = exception.getMessage();
+               warningList.add(new Warning(fWarningSysId, fErrorMessage));
+       }
+       
+       
+       /*
+        * Are error messages generated during the validation episode, as 
specified in the test case.
+        */
+       public boolean areErrorMessagesConsistent(List expectedMsgList) {       
        
+               boolean isErrorMesgsOk = true;          
+               for (int mesgIdx = 0; mesgIdx < expectedMsgList.size(); 
mesgIdx++) {
+                       FailureMesgFragments mesgFragments = 
(FailureMesgFragments) expectedMsgList.get(mesgIdx);
+                       if (!areMesgFragmentsOk(mesgFragments)) {
+                               isErrorMesgsOk = false;
+                               break;
+                       }
+               }               
+               return isErrorMesgsOk;          
+       } // areErrorMessagesConsistent
+       
+       
+       /*
+        * Checks fragments of one error/failure message.
+        */
+       private boolean areMesgFragmentsOk(FailureMesgFragments mesgFragments) {
+               
+               boolean areMesgFragsOk = false;
+               
+               List mesgFragmentItems = mesgFragments.getMessageFragments();
+               Iterator iter = null;
+               if (checkOnlyWarnings) {
+                       iter = warningList.iterator(); 
+               }
+               else {
+                       iter = failureList.iterator(); 
+               }
+        for ( ; iter.hasNext(); ) {
+               Object failureInstance = iter.next();
+               String failureMesg = "";
+               if (failureInstance instanceof Error) {
+                       failureMesg = ((Error) 
failureInstance).getFailureMessage(); 
+               }
+               else if (failureInstance instanceof FatalError) {
+                       failureMesg = ((FatalError) 
failureInstance).getFailureMessage();
+               }
+               else if (failureInstance instanceof Warning) {
+                       failureMesg = ((Warning) 
failureInstance).getFailureMessage();
+               }
+               int matchCount = 0;
+               for (Iterator mesg_iter = mesgFragmentItems.iterator(); 
mesg_iter.hasNext(); ) {
+                       String mesgFrag = (String) mesg_iter.next();
+                       if (failureMesg.indexOf(mesgFrag) != -1) {
+                               matchCount++;
+                       }
+               }
+               if (matchCount == mesgFragmentItems.size()) {
+                       areMesgFragsOk = true;
+                       break;
+               }
+        }
+
+
+               return areMesgFragsOk;
+               
+       } // areMesgFragmentsOk
+       
+       
+       protected String getMemberTypePsviInfo(ElementPSVI elmPsviInfo) {       
        
+               String memTypeStr = null;
+               XSSimpleTypeDefinition memType = 
elmPsviInfo.getMemberTypeDefinition();
+       if (memType != null) {
+               memTypeStr = memType.getName();
+       }       
+       return memTypeStr;      
+       } // getMemberTypePsviInfo
+       
+       
+       class XercesFailure {
+          String systemId;
+          String failureMessage;
+          
+          public XercesFailure(String systemId, String failureMessage) {
+                  this.systemId = systemId;
+                  this.failureMessage = failureMessage;
+          }
+          
+          public String getFailureMessage() {
+                 return failureMessage; 
+          }
+       }
+       
+       class Error extends XercesFailure {             
+               public Error(String systemId, String failureMessage) {
+                       super(systemId, failureMessage);
+               }               
+       }
+       
+       class FatalError extends XercesFailure {                
+               public FatalError(String systemId, String failureMessage) {
+                       super(systemId, failureMessage);
+               }               
+       }
+       
+       class Warning extends XercesFailure {           
+               public Warning(String systemId, String failureMessage) {
+                       super(systemId, failureMessage);
+               }               
+       }
+       
+}

Propchange: xerces/java/trunk/tests/util/XercesAbstractTestCase.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: xerces/java/trunk/tests/util/XercesAbstractTestCase.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@xerces.apache.org
For additional commands, e-mail: commits-h...@xerces.apache.org

Reply via email to