blob: 053555c24ec3b09482a99703e0075e1f3c01a34c [file]
/* 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 common.Common;
import noNamespace.TestCase;
import noNamespace.TestSuiteDocument;
import noNamespace.TestSuiteDocument.TestSuite.TestGroup;
import org.apache.commons.io.IOUtils;
import org.apache.xmlbeans.XmlException;
import org.apache.xmlbeans.XmlObject;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.Arguments;
import org.junit.jupiter.params.provider.MethodSource;
import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Stream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
import static org.junit.jupiter.api.Assertions.assertEquals;
@Disabled("Too many XMLBeans unrelated errors")
public class NISTTest {
private static ZipFile zf;
public static Stream<Arguments> files() throws IOException, XmlException {
zf = new ZipFile(Common.getCaseLocation()+"/xbean/xmlcursor/xquery/xmlQuery.zip");
ZipEntry e = zf.getEntry("testSuite/NIST/files/catalog.xml");
try (InputStream is = zf.getInputStream(e)) {
TestSuiteDocument doc = TestSuiteDocument.Factory.parse(is);
List<Arguments> files = new ArrayList<>();
for (TestGroup xg : doc.getTestSuite().getTestGroupArray()) {
String groupName = xg.getName();
for (TestCase tc : xg.getTestCaseArray()) {
String testName = tc.getName();
files.add(Arguments.of(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);
}
}
return files.stream();
}
}
@ParameterizedTest(name = "{index}: {0} {1}")
@MethodSource("files")
void bla(String groupName, String testName, TestCase testCase) throws Exception {
//bad comment syntax in suite
String 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 {
ZipEntry queryFile = zf.getEntry(zipFile);
try (InputStream is = zf.getInputStream(queryFile)) {
return new String(IOUtils.toByteArray(is), StandardCharsets.UTF_8);
}
}
}