[xpath2] committing test case changes for bug reports 323900 & 325262
diff --git a/tests/org.eclipse.wst.xml.xpath2.processor.tests/bugTestFiles/bug323900_1.xml b/tests/org.eclipse.wst.xml.xpath2.processor.tests/bugTestFiles/bug323900_1.xml
new file mode 100644
index 0000000..ebd8dd6
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.xpath2.processor.tests/bugTestFiles/bug323900_1.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<X>1 2 3</X>
diff --git a/tests/org.eclipse.wst.xml.xpath2.processor.tests/bugTestFiles/bug323900_1.xsd b/tests/org.eclipse.wst.xml.xpath2.processor.tests/bugTestFiles/bug323900_1.xsd
new file mode 100644
index 0000000..6781dd8
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.xpath2.processor.tests/bugTestFiles/bug323900_1.xsd
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+    <xs:element name="X">
+       <xs:simpleType>
+          <xs:list itemType="xs:integer" />
+       </xs:simpleType>
+    </xs:element>
+
+</xs:schema>
diff --git a/tests/org.eclipse.wst.xml.xpath2.processor.tests/bugTestFiles/bug323900_2.xml b/tests/org.eclipse.wst.xml.xpath2.processor.tests/bugTestFiles/bug323900_2.xml
new file mode 100644
index 0000000..0de4798
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.xpath2.processor.tests/bugTestFiles/bug323900_2.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<X>1 2 3.3</X>
diff --git a/tests/org.eclipse.wst.xml.xpath2.processor.tests/bugTestFiles/bug323900_2.xsd b/tests/org.eclipse.wst.xml.xpath2.processor.tests/bugTestFiles/bug323900_2.xsd
new file mode 100644
index 0000000..e741702
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.xpath2.processor.tests/bugTestFiles/bug323900_2.xsd
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+    <xs:element name="X">
+       <xs:simpleType>
+          <xs:list>
+             <xs:simpleType>
+                <xs:union memberTypes="xs:integer xs:string" />
+             </xs:simpleType>
+          </xs:list>
+       </xs:simpleType>
+    </xs:element>
+
+</xs:schema>
diff --git a/tests/org.eclipse.wst.xml.xpath2.processor.tests/bugTestFiles/bug323900_3.xml b/tests/org.eclipse.wst.xml.xpath2.processor.tests/bugTestFiles/bug323900_3.xml
new file mode 100644
index 0000000..7639ba1
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.xpath2.processor.tests/bugTestFiles/bug323900_3.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<X>3.3</X>
diff --git a/tests/org.eclipse.wst.xml.xpath2.processor.tests/bugTestFiles/bug323900_3.xsd b/tests/org.eclipse.wst.xml.xpath2.processor.tests/bugTestFiles/bug323900_3.xsd
new file mode 100644
index 0000000..953c943
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.xpath2.processor.tests/bugTestFiles/bug323900_3.xsd
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+    <xs:element name="X">
+       <xs:simpleType>
+          <xs:union memberTypes="xs:integer xs:string" />
+       </xs:simpleType>
+    </xs:element>
+
+</xs:schema>
diff --git a/tests/org.eclipse.wst.xml.xpath2.processor.tests/bugTestFiles/bug323900_4.xml b/tests/org.eclipse.wst.xml.xpath2.processor.tests/bugTestFiles/bug323900_4.xml
new file mode 100644
index 0000000..727667b
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.xpath2.processor.tests/bugTestFiles/bug323900_4.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<X>10</X>
diff --git a/tests/org.eclipse.wst.xml.xpath2.processor.tests/src/org/eclipse/wst/xml/xpath2/processor/test/TestBugs.java b/tests/org.eclipse.wst.xml.xpath2.processor.tests/src/org/eclipse/wst/xml/xpath2/processor/test/TestBugs.java
index 48e2641..4fe2d00 100644
--- a/tests/org.eclipse.wst.xml.xpath2.processor.tests/src/org/eclipse/wst/xml/xpath2/processor/test/TestBugs.java
+++ b/tests/org.eclipse.wst.xml.xpath2.processor.tests/src/org/eclipse/wst/xml/xpath2/processor/test/TestBugs.java
@@ -42,9 +42,15 @@
  * Jesper S Moller  - bug 312191 - instance of test fails with partial matches
  *  Mukul Gandhi    - bug 318313 - improvements to computation of typed values of nodes,
  *                                 when validated by XML Schema primitive types
+ *  Mukul Gandhi    - bug 323900 - improving computing the typed value of element &
+ *                                 attribute nodes, where the schema type of nodes
+ *                                 are simple, with varieties 'list' and 'union'.
+ *  Mukul Gandhi    - bug 325262 - providing ability to store an XPath2 sequence into
+ *                                 an user-defined variable.                               
  *******************************************************************************/
 package org.eclipse.wst.xml.xpath2.processor.test;
 
+import java.math.BigInteger;
 import java.net.URL;
 import java.util.Comparator;
 
@@ -60,12 +66,16 @@
 import org.eclipse.wst.xml.xpath2.processor.DynamicError;
 import org.eclipse.wst.xml.xpath2.processor.Evaluator;
 import org.eclipse.wst.xml.xpath2.processor.ResultSequence;
+import org.eclipse.wst.xml.xpath2.processor.ResultSequenceFactory;
 import org.eclipse.wst.xml.xpath2.processor.ast.XPath;
+import org.eclipse.wst.xml.xpath2.processor.internal.types.QName;
 import org.eclipse.wst.xml.xpath2.processor.internal.types.XSBoolean;
 import org.eclipse.wst.xml.xpath2.processor.internal.types.XSDecimal;
 import org.eclipse.wst.xml.xpath2.processor.internal.types.XSDouble;
 import org.eclipse.wst.xml.xpath2.processor.internal.types.XSDuration;
 import org.eclipse.wst.xml.xpath2.processor.internal.types.XSFloat;
+import org.eclipse.wst.xml.xpath2.processor.internal.types.XSInteger;
+import org.eclipse.wst.xml.xpath2.processor.internal.types.XSString;
 import org.osgi.framework.Bundle;
 import org.xml.sax.InputSource;
 
@@ -1758,6 +1768,186 @@
 		assertEquals("true", actual);
 	}
 	
+	public void testTypedValueEnhancement_Bug323900_1() throws Exception {
+		// Bug 323900
+		URL fileURL = bundle.getEntry("/bugTestFiles/bug323900_1.xml");
+		URL schemaURL = bundle.getEntry("/bugTestFiles/bug323900_1.xsd");
+
+		loadDOMDocument(fileURL, schemaURL);
+
+		// Get XSModel object for the Schema
+		XSModel schema = getGrammar(schemaURL);
+
+		DynamicContext dc = setupDynamicContext(schema);
+
+		String xpath = "data(X) instance of xs:integer+";
+		XPath path = compileXPath(dc, xpath);
+
+		Evaluator eval = new DefaultEvaluator(dc, domDoc);
+		ResultSequence rs = eval.evaluate(path);
+
+		XSBoolean result = (XSBoolean) rs.first();
+
+		String actual = result.string_value();
+
+		assertEquals("true", actual);
+	}
+	
+	public void testTypedValueEnhancement_Bug323900_2() throws Exception {
+		// Bug 323900
+		URL fileURL = bundle.getEntry("/bugTestFiles/bug323900_2.xml");
+		URL schemaURL = bundle.getEntry("/bugTestFiles/bug323900_2.xsd");
+
+		loadDOMDocument(fileURL, schemaURL);
+
+		// Get XSModel object for the Schema
+		XSModel schema = getGrammar(schemaURL);
+
+		DynamicContext dc = setupDynamicContext(schema);
+
+		// 1st test
+		String xpath = "data(X) instance of xs:integer+";
+		XPath path = compileXPath(dc, xpath);
+
+		Evaluator eval = new DefaultEvaluator(dc, domDoc);
+		ResultSequence rs = eval.evaluate(path);
+
+		XSBoolean result = (XSBoolean) rs.first();
+
+		String actual = result.string_value();
+
+		assertEquals("false", actual);
+	}
+	
+	public void testTypedValueEnhancement_Bug323900_3() throws Exception {
+		// Bug 323900
+		URL fileURL = bundle.getEntry("/bugTestFiles/bug323900_2.xml");
+		URL schemaURL = bundle.getEntry("/bugTestFiles/bug323900_2.xsd");
+
+		loadDOMDocument(fileURL, schemaURL);
+
+		// Get XSModel object for the Schema
+		XSModel schema = getGrammar(schemaURL);
+
+		DynamicContext dc = setupDynamicContext(schema);
+		String xpath = "data(X)";
+		XPath path = compileXPath(dc, xpath);
+		Evaluator eval = new DefaultEvaluator(dc, domDoc);
+		ResultSequence rs = eval.evaluate(path);
+		
+		boolean result1 = ((XSInteger) rs.get(0)).eq(new XSInteger(BigInteger.
+				                                     valueOf(1)), dc);
+		boolean result2 = ((XSInteger) rs.get(1)).eq(new XSInteger(BigInteger.
+				                                     valueOf(2)), dc);
+		boolean result3 = ((XSString) rs.get(2)).eq(new XSString("3.3"), dc);
+		
+		assertEquals(true, result1 && result2 && result3);
+	}
+	
+	public void testTypedValueEnhancement_Bug323900_4() throws Exception {
+		// Bug 323900
+		URL fileURL = bundle.getEntry("/bugTestFiles/bug323900_3.xml");
+		URL schemaURL = bundle.getEntry("/bugTestFiles/bug323900_3.xsd");
+
+		loadDOMDocument(fileURL, schemaURL);
+
+		// Get XSModel object for the Schema
+		XSModel schema = getGrammar(schemaURL);
+
+		DynamicContext dc = setupDynamicContext(schema);
+		String xpath = "data(X)";
+		XPath path = compileXPath(dc, xpath);
+		Evaluator eval = new DefaultEvaluator(dc, domDoc);
+		ResultSequence rs = eval.evaluate(path);
+        
+		XSString result = (XSString) rs.get(0);
+		assertEquals("3.3", result.string_value());
+	}
+	
+	public void testTypedValueEnhancement_Bug323900_5() throws Exception {
+		// Bug 323900
+		URL fileURL = bundle.getEntry("/bugTestFiles/bug323900_4.xml");
+		URL schemaURL = bundle.getEntry("/bugTestFiles/bug323900_3.xsd");
+
+		loadDOMDocument(fileURL, schemaURL);
+
+		// Get XSModel object for the Schema
+		XSModel schema = getGrammar(schemaURL);
+
+		DynamicContext dc = setupDynamicContext(schema);
+		String xpath = "data(X)";
+		XPath path = compileXPath(dc, xpath);
+		Evaluator eval = new DefaultEvaluator(dc, domDoc);
+		ResultSequence rs = eval.evaluate(path);
+        
+		XSInteger result = (XSInteger) rs.get(0);
+		assertEquals("10", result.string_value());
+	}
+	
+	public void testTypedValueEnhancement_BugUsingSeqIntoVariable_1() 
+	                                                       throws Exception {
+		// Bug 325262
+		DynamicContext dc = setupDynamicContext(null);
+		
+        ResultSequence rs = ResultSequenceFactory.create_new();
+        dc.set_variable(new QName("value"), rs);
+        
+		String xpath = "deep-equal($value,())";
+		XPath path = compileXPath(dc, xpath);
+		Evaluator eval = new DefaultEvaluator(dc, domDoc);
+		ResultSequence rsRes = eval.evaluate(path);
+        
+		XSBoolean result = (XSBoolean) rsRes.get(0);
+		assertEquals("true", result.string_value());
+	}
+	
+	public void testTypedValueEnhancement_BugUsingSeqIntoVariable_2() 
+	                                                       throws Exception {
+		// Bug 325262
+		DynamicContext dc = setupDynamicContext(null);
+		
+        ResultSequence rs = ResultSequenceFactory.create_new();
+        rs.add(new XSInteger(BigInteger.valueOf(2)));
+        rs.add(new XSInteger(BigInteger.valueOf(4)));
+        rs.add(new XSInteger(BigInteger.valueOf(6)));
+        dc.set_variable(new QName("value"), rs);
+        
+        // test a
+		String xpath = "$value instance of xs:integer+";
+		XPath path = compileXPath(dc, xpath);
+		Evaluator eval = new DefaultEvaluator(dc, domDoc);
+		ResultSequence rsRes = eval.evaluate(path);        
+		XSBoolean result = (XSBoolean) rsRes.get(0);
+		assertEquals("true", result.string_value());
+		
+		// test b
+		xpath = "deep-equal($value, (2, 4, 6))";
+		path = compileXPath(dc, xpath);
+		eval = new DefaultEvaluator(dc, domDoc);
+		rsRes = eval.evaluate(path);        
+		result = (XSBoolean) rsRes.get(0);
+		assertEquals("true", result.string_value());
+	}
+	
+	public void testTypedValueEnhancement_BugUsingSeqIntoVariable_3() 
+	                                                      throws Exception {
+		// Bug 325262
+		DynamicContext dc = setupDynamicContext(null);
+		
+		ResultSequence rs = ResultSequenceFactory.create_new();
+        rs.add(new XSInteger(BigInteger.valueOf(2)));
+        rs.add(new XSInteger(BigInteger.valueOf(4)));
+        rs.add(new XSInteger(BigInteger.valueOf(6)));
+        dc.set_variable(new QName("value"), rs);
+        
+		String xpath = "count(data($value)) = 3";
+		XPath path = compileXPath(dc, xpath);
+		Evaluator eval = new DefaultEvaluator(dc, domDoc);
+		ResultSequence rsRes = eval.evaluate(path);        
+		XSBoolean result = (XSBoolean) rsRes.get(0);
+		assertEquals("true", result.string_value());
+	}
+	
 	private CollationProvider createLengthCollatorProvider() {
 		return new CollationProvider() {
 			@SuppressWarnings("unchecked")