package com.bagri.xquery.rex;
import static org.junit.Assert.*;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.Writer;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import com.bagri.xquery.rex.XQuery30RExParserLL.ParseException;
import com.bagri.xquery.rex.XQuery30RExParserLL.XmlSerializer;
public class XQuery30RExParserLLTest {
private String query = "declare default element namespace \"http://tpox-benchmark.com/security\";\n" +
"declare variable $sect external;\n" + // $v\n" +
"declare variable $pemin external;\n" + // $v\n" +
"declare variable $pemax external;\n" + // $v\n" +
"declare variable $yield external;\n" + // $v\n" +
//"for $sec in fn:doc(\"sdoc\")/s:Security\n" +
"for $sec in fn:collection(\"/{http://tpox-benchmark.com/security}Security\")/Security\n" +
"where $sec[SecurityInformation/*/Sector=$sect and PE[. >=$pemin and . <$pemax] and Yield>$yield]\n" +
"return <Security>\n" +
"\t{$sec/Symbol}\n" +
"\t{$sec/Name}\n" +
"\t{$sec/SecurityType}\n" +
"\t{$sec/SecurityInformation//Sector}\n" +
"\t{$sec/PE}\n" +
"\t{$sec/Yield}\n" +
"</Security>";
@Before
public void setUp() throws Exception {
}
@After
public void tearDown() throws Exception {
}
@Test
public void testParse_XQuery() throws IOException {
Writer w = new OutputStreamWriter(System.out, "UTF-8");
XmlSerializer s = new XmlSerializer(w);
XQuery30RExParserLL parser = new XQuery30RExParserLL(query, s);
try
{
s.writeOutput("<?xml version=\"1.0\" encoding=\"UTF-8\"?" + ">");
parser.parse_XQuery();
}
catch (ParseException pe)
{
throw new RuntimeException("ParseException while processing " + query + ":\n" + parser.getErrorMessage(pe));
}
finally
{
w.close();
}
}
}