[398604] [xpath3] Implement let expressions
diff --git a/tests/org.eclipse.wst.xml.xpath2.processor.tests/src/org/eclipse/wst/xml/xpath2/processor/test/TestXPath30.java b/tests/org.eclipse.wst.xml.xpath2.processor.tests/src/org/eclipse/wst/xml/xpath2/processor/test/TestXPath30.java
new file mode 100644
index 0000000..e5625fb
--- /dev/null
+++ b/tests/org.eclipse.wst.xml.xpath2.processor.tests/src/org/eclipse/wst/xml/xpath2/processor/test/TestXPath30.java
@@ -0,0 +1,49 @@
+/*******************************************************************************
+ *Copyright (c) 2013 Jesper Steen Møller and others.
+ *All rights reserved. This program and the accompanying materials
+ *are made available under the terms of the Eclipse Public License v1.0
+ *which accompanies this distribution, and is available at
+ *http://www.eclipse.org/legal/epl-v10.html
+ *
+ *Contributors:
+ * Jesper Steen Møller - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.xml.xpath2.processor.test;
+
+import java.math.BigInteger;
+import java.net.URL;
+
+import org.eclipse.wst.xml.xpath2.api.ResultSequence;
+import org.eclipse.wst.xml.xpath2.api.XPath2Expression;
+import org.eclipse.wst.xml.xpath2.processor.Engine;
+import org.eclipse.wst.xml.xpath2.processor.JFlexCupParser;
+import org.eclipse.wst.xml.xpath2.processor.XPathParser;
+import org.eclipse.wst.xml.xpath2.processor.XPathParserException;
+import org.eclipse.wst.xml.xpath2.processor.ast.XPath;
+import org.eclipse.wst.xml.xpath2.processor.internal.ast.LetExpr;
+import org.eclipse.wst.xml.xpath2.processor.util.DynamicContextBuilder;
+import org.eclipse.wst.xml.xpath2.processor.util.StaticContextBuilder;
+
+public class TestXPath30 extends AbstractPsychoPathTest {
+
+ public void testParseInvalidXPathExpression() throws Exception {
+ try {
+ XPathParser xpp = new JFlexCupParser();
+ String xpath = "let $ := 123 return $a";
+ xpp.parse(xpath);
+ fail("XPath parsing suceeded when it should have failed.");
+ } catch (XPathParserException ex) {
+
+ }
+ }
+
+ public void testParseValidXPathExpression() throws Exception {
+ StaticContextBuilder staticContextBuilder = new StaticContextBuilder();
+
+ XPath2Expression expr = new Engine().parseExpression("let $a := 1, $b := $a+2, $c := $a + $b return $c+5", staticContextBuilder);
+ DynamicContextBuilder dynamicContextBuilder = new DynamicContextBuilder(staticContextBuilder);
+ ResultSequence result = expr.evaluate(dynamicContextBuilder, new Object[0]);
+ assertEquals(1, result.size());
+ assertEquals(BigInteger.valueOf(9), result.value(0));
+ }
+}