blob: 0d9e9115b6cf544ffdcf5868ea5491782d3d0b71 [file] [log] [blame]
/* Copyright 2004 The Apache Software Foundation
*
* Licensed 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 xmlcursor.xquery.detailed;
import noNamespace.TestCase;
import noNamespace.TestSuiteDocument;
import noNamespace.TestSuiteDocument.TestSuite.TestGroup;
import org.apache.xmlbeans.XmlException;
import org.apache.xmlbeans.XmlObject;
import org.junit.Ignore;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TestWatcher;
import org.junit.runner.Description;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.List;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
import static org.junit.Assert.assertEquals;
@Ignore("Too many XMLBeans unrelated errors")
@RunWith(Parameterized.class)
public class NISTTest {
private static ZipFile zf;
@Rule
public final QueryFailed queryLog = new QueryFailed();
@SuppressWarnings("DefaultAnnotationParam")
@Parameterized.Parameter(value = 0)
public String groupName;
@Parameterized.Parameter(value = 1)
public String testName;
@Parameterized.Parameter(value = 2)
public TestCase testCase;
private String query;
@Parameterized.Parameters(name = "{index}: {0} {1}")
public static Iterable<Object[]> files() throws IOException, XmlException {
zf = new ZipFile("test/cases/xbean/xmlcursor/xquery/xmlQuery.zip");
ZipEntry e = zf.getEntry("testSuite/NIST/files/catalog.xml");
InputStream is = zf.getInputStream(e);
TestSuiteDocument doc = TestSuiteDocument.Factory.parse(is);
List<Object[]> files = new ArrayList<Object[]>();
for (TestGroup xg : doc.getTestSuite().getTestGroupArray()) {
String groupName = xg.getName();
for (TestCase tc : xg.getTestCaseArray()) {
String testName = tc.getName();
files.add(new Object[]{groupName, testName, tc});
// NIST BUG: folder is called testSuite but appears as testsuite in desc. file
String filePath = tc.getFilePath()
.replaceAll("testsuite", "testSuite")
.replace((char) 92, '/');
tc.setFilePath(filePath);
}
}
is.close();
return files;
}
@Test
public void bla() throws Exception {
//bad comment syntax in suite
query = getString(testCase.getFilePath()+testCase.getName()+".xq")
.replace("{--", "(:")
.replace("--}", ":)");
XmlObject obj = XmlObject.Factory.parse("<xml-fragment/>");
String inputFile = testCase.getInputFileArray(0).getStringValue();
assertEquals("emptyDoc", inputFile);
// String outputFile = testCase.getFilePath()+testCase.getOutputFileArray(0).getStringValue();
// XmlObject[] expRes = { XmlObject.Factory.parse(getString(outputFile)) };
XmlObject[] queryRes = obj.execQuery(query);
// XPathCommon.compare(queryRes, expRes);
}
private static String getString(String zipFile) throws IOException {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ZipEntry queryFile = zf.getEntry(zipFile);
InputStream is = zf.getInputStream(queryFile);
byte[] buf = new byte[4096];
for (int readBytes; (readBytes = is.read(buf)) > -1; ) {
bos.write(buf, 0, readBytes);
}
is.close();
return new String(bos.toByteArray(), Charset.forName("UTF-8"));
}
private class QueryFailed extends TestWatcher {
@Override
protected void failed(Throwable e, Description description) {
System.out.println(
"Description:\n"+
testCase.getQuery().getDescription().getStringValue()+
"\n\nQuery:\n"+
query);
}
}
}