/*
* Copyright (c) 2016 Vivid Solutions.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* and Eclipse Distribution License v. 1.0 which accompanies this distribution.
* The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
* and the Eclipse Distribution License is available at
*
* http://www.eclipse.org/org/documents/edl-v10.php.
*/
package org.locationtech.jtstest;
import java.io.File;
import java.util.Iterator;
import java.util.StringTokenizer;
import org.locationtech.jts.geom.Coordinate;
import org.locationtech.jts.geom.GeometryFactory;
import org.locationtech.jts.geom.Point;
import org.locationtech.jts.geom.PrecisionModel;
import org.locationtech.jtstest.testbuilder.JTSTestBuilderFrame;
import org.locationtech.jtstest.testbuilder.model.TestRunnerTestCaseAdapter;
import org.locationtech.jtstest.testbuilder.model.XMLTestWriter;
import org.locationtech.jtstest.testrunner.TestReader;
import org.locationtech.jtstest.testrunner.TestRun;
import org.locationtech.jtstest.util.StringUtil;
import junit.framework.TestCase;
/**
* @version 1.7
*/
// MD - all tests disabled for now, since input data is missing
public class TestReaderTest extends TestCase {
public TestReaderTest(String Name_) {
super(Name_);
}
public static void main(String[] args) {
String[] testCaseName = {TestReaderTest.class.getName()};
junit.textui.TestRunner.main(testCaseName);
}
public void testDummy()
{
}
public void XtestWktFile() {
TestReader testReader = new TestReader();
TestRun testRun = testReader.createTestRun(new File(
"\\\\pluto\\data\\jts\\testing\\testreader_wktfile.xml"), 0);
printParsingProblems(testReader);
assertNull(testRun.getWorkspace());
assertEquals(1, testRun.getTestCases().size());
org.locationtech.jtstest.testrunner.TestCase testCase = (org.locationtech.jtstest.testrunner.TestCase) testRun.getTestCases().get(0);
assertTrue(testCase.getGeometryA().equals(new GeometryFactory().createPoint(new Coordinate(10, 20))));
assertTrue(testCase.getGeometryB().equals(new GeometryFactory().createPoint(new Coordinate(30, 40))));
XMLTestWriter xmlTestWriter = new XMLTestWriter();
String expectedXML =
"<case>" + StringUtil.newLine +
" <desc>same point</desc>" + StringUtil.newLine +
" <a file=\"\\\\pluto\\data\\jts\\testing\\testreader_wktfile_point.xml\"/>" + StringUtil.newLine +
" <b>" + StringUtil.newLine +
" POINT (30 40)" + StringUtil.newLine +
" </b>" + StringUtil.newLine +
"<test>" + StringUtil.newLine +
" <op name=\"relate\" arg1=\"A\" arg2=\"B\" arg3=\"0FFFFFFF2\">" + StringUtil.newLine +
" true" + StringUtil.newLine +
" </op>" + StringUtil.newLine +
"</test>" + StringUtil.newLine +
"</case>" + StringUtil.newLine;
assertEquals(normalize(expectedXML), normalize(xmlTestWriter.getTestXML(new TestRunnerTestCaseAdapter(testCase))));
testCase.setGeometryA(new GeometryFactory().createPoint(new Coordinate(2, 3)));
expectedXML =
"<case>" + StringUtil.newLine +
" <desc>same point</desc>" + StringUtil.newLine +
" <a>" + StringUtil.newLine +
" POINT (2 3)" + StringUtil.newLine +
" </a>" + StringUtil.newLine +
" <b>" + StringUtil.newLine +
" POINT (30 40)" + StringUtil.newLine +
" </b>" + StringUtil.newLine +
"<test>" + StringUtil.newLine +
" <op name=\"relate\" arg1=\"A\" arg2=\"B\" arg3=\"0FFFFFFF2\">" + StringUtil.newLine +
" true" + StringUtil.newLine +
" </op>" + StringUtil.newLine +
"</test>" + StringUtil.newLine +
"</case>" + StringUtil.newLine;
assertEquals(normalize(expectedXML), normalize(xmlTestWriter.getTestXML(new TestRunnerTestCaseAdapter(testCase))));
}
public void XtestWktFileWorkspace() {
TestReader testReader = new TestReader();
TestRun testRun = testReader.createTestRun(new File(
"\\\\pluto\\data\\jts\\testing\\testReader_wktFileWorkspace.xml"), 0);
printParsingProblems(testReader);
assertEquals("\\\\pluto\\data\\jts\\testing\\x", testRun.getWorkspace().toString());
assertEquals(1, testRun.getTestCases().size());
org.locationtech.jtstest.testrunner.TestCase testCase = (org.locationtech.jtstest.testrunner.TestCase) testRun.getTestCases().get(0);
assertTrue(testCase.getGeometryA().equals(new GeometryFactory().createPoint(new Coordinate(5, 6))));
assertTrue(testCase.getGeometryB().equals(new GeometryFactory().createPoint(new Coordinate(7, 8))));
XMLTestWriter xmlTestWriter = new XMLTestWriter();
String expectedXML =
"<case>" + StringUtil.newLine +
" <desc>same point</desc>" + StringUtil.newLine +
" <a file=\"testReader_wktFileWorkspace_point.xml\"/>" + StringUtil.newLine +
" <b>" + StringUtil.newLine +
" POINT (7 8)" + StringUtil.newLine +
" </b>" + StringUtil.newLine +
"<test>" + StringUtil.newLine +
" <op name=\"relate\" arg1=\"A\" arg2=\"B\" arg3=\"0FFFFFFF2\">" + StringUtil.newLine +
" true" + StringUtil.newLine +
" </op>" + StringUtil.newLine +
"</test>" + StringUtil.newLine +
"</case>" + StringUtil.newLine;
assertEquals(normalize(expectedXML), normalize(xmlTestWriter.getTestXML(new TestRunnerTestCaseAdapter(testCase))));
testCase.setGeometryA(new GeometryFactory().createPoint(new Coordinate(9, 10)));
expectedXML =
"<case>" + StringUtil.newLine +
" <desc>same point</desc>" + StringUtil.newLine +
" <a>" + StringUtil.newLine +
" POINT (9 10)" + StringUtil.newLine +
" </a>" + StringUtil.newLine +
" <b>" + StringUtil.newLine +
" POINT (7 8)" + StringUtil.newLine +
" </b>" + StringUtil.newLine +
"<test>" + StringUtil.newLine +
" <op name=\"relate\" arg1=\"A\" arg2=\"B\" arg3=\"0FFFFFFF2\">" + StringUtil.newLine +
" true" + StringUtil.newLine +
" </op>" + StringUtil.newLine +
"</test>" + StringUtil.newLine +
"</case>" + StringUtil.newLine;
assertEquals(normalize(expectedXML), normalize(xmlTestWriter.getTestXML(new TestRunnerTestCaseAdapter(testCase))));
}
public void XtestWktFileWorkspace2() {
TestReader testReader = new TestReader();
TestRun testRun = testReader.createTestRun(new File(
"\\\\pluto\\data\\jts\\testing\\testReader_wktFileWorkspace2.xml"), 0);
printParsingProblems(testReader);
assertNull(testRun.getWorkspace());
assertEquals(1, testRun.getTestCases().size());
org.locationtech.jtstest.testrunner.TestCase testCase = (org.locationtech.jtstest.testrunner.TestCase) testRun.getTestCases().get(0);
assertTrue(testCase.getGeometryA().equals(new GeometryFactory().createPoint(new Coordinate(3, 4))));
assertTrue(testCase.getGeometryB().equals(new GeometryFactory().createPoint(new Coordinate(1, 2))));
XMLTestWriter xmlTestWriter = new XMLTestWriter();
String expectedXML =
"<case>" + StringUtil.newLine +
" <desc>same point</desc>" + StringUtil.newLine +
" <a file=\"testReader_wktFileWorkspace2_point.xml\"/>" + StringUtil.newLine +
" <b>" + StringUtil.newLine +
" POINT (1 2)" + StringUtil.newLine +
" </b>" + StringUtil.newLine +
"<test>" + StringUtil.newLine +
" <op name=\"relate\" arg1=\"A\" arg2=\"B\" arg3=\"0FFFFFFF2\">" + StringUtil.newLine +
" true" + StringUtil.newLine +
" </op>" + StringUtil.newLine +
"</test>" + StringUtil.newLine +
"</case>" + StringUtil.newLine;
assertEquals(normalize(expectedXML), normalize(xmlTestWriter.getTestXML(new TestRunnerTestCaseAdapter(testCase))));
testCase.setGeometryA(new GeometryFactory().createPoint(new Coordinate(11, 12)));
expectedXML =
"<case>" + StringUtil.newLine +
" <desc>same point</desc>" + StringUtil.newLine +
" <a>" + StringUtil.newLine +
" POINT (11 12)" + StringUtil.newLine +
" </a>" + StringUtil.newLine +
" <b>" + StringUtil.newLine +
" POINT (1 2)" + StringUtil.newLine +
" </b>" + StringUtil.newLine +
"<test>" + StringUtil.newLine +
" <op name=\"relate\" arg1=\"A\" arg2=\"B\" arg3=\"0FFFFFFF2\">" + StringUtil.newLine +
" true" + StringUtil.newLine +
" </op>" + StringUtil.newLine +
"</test>" + StringUtil.newLine +
"</case>" + StringUtil.newLine;
assertEquals(normalize(expectedXML), normalize(xmlTestWriter.getTestXML(new TestRunnerTestCaseAdapter(testCase))));
}
public void XtestGetWorkspaceXML() throws Exception {
JTSTestBuilderFrame.instance().openXmlFilesAndDirectories(new File[] {new File(
"\\\\pluto\\data\\jts\\testing\\testReader_getWorkspaceXML.xml")});
String expectedXML =
"<run>" +
" <desc>ABCDEF</desc>" +
" <workspace file=\"\\\\pluto\\data\\jts\\testing\"/>" +
" <precisionModel type=\"FLOATING\"/>" +
" <case>" +
" <a>POINT (5 6)</a>" +
" <b>POINT (7 8)</b>" +
" <test>" +
" <op name=\"relate\" arg1=\"A\" arg2=\"B\" arg3=\"0FFFFFFF2\">" +
" true" +
" </op>" +
" </test>" +
" </case>" +
"</run>";
assertEquals(normalize(expectedXML), normalize(JTSTestBuilderFrame.instance().getRunXml()));
}
public void XtestPrecisionModel_noType_scale() {
TestReader testReader = new TestReader();
TestRun testRun = testReader.createTestRun(new File(
"\\\\pluto\\data\\jts\\testing\\precisionModel_noType_scale.xml"), 0);
assertNotNull(testRun);
assertTrue(! testRun.getPrecisionModel().isFloating());
assertEquals(1, testRun.getPrecisionModel().getScale(), 1E-15);
}
public void XtestPrecisionModel_noType_noScale() {
TestReader testReader = new TestReader();
TestRun testRun = testReader.createTestRun(new File(
"\\\\pluto\\data\\jts\\testing\\precisionModel_noType_noScale.xml"), 0);
assertNull(testRun);
assertTrue(testReader.getParsingProblems().get(0).toString().indexOf("Missing type attribute in <precisionModel>") > -1);
}
public void XtestPrecisionModel_fixed_scale() {
TestReader testReader = new TestReader();
TestRun testRun = testReader.createTestRun(new File(
"\\\\pluto\\data\\jts\\testing\\precisionModel_fixed_scale.xml"), 0);
assertNotNull(testRun);
assertTrue(! testRun.getPrecisionModel().isFloating());
assertEquals(1, testRun.getPrecisionModel().getScale(), 1E-15);
}
public void XtestPrecisionModel_fixed_noScale() {
TestReader testReader = new TestReader();
TestRun testRun = testReader.createTestRun(new File(
"\\\\pluto\\data\\jts\\testing\\precisionModel_fixed_noScale.xml"), 0);
assertNull(testRun);
assertTrue(testReader.getParsingProblems().get(0).toString().indexOf("Missing scale attribute in <precisionModel>") > -1);
}
public void XtestPrecisionModel_floating_scale() {
TestReader testReader = new TestReader();
TestRun testRun = testReader.createTestRun(new File(
"\\\\pluto\\data\\jts\\testing\\precisionModel_floating_scale.xml"), 0);
assertNull(testRun);
assertTrue(testReader.getParsingProblems().get(0).toString().indexOf("scale attribute not allowed in floating <precisionModel>") > -1);
}
public void XtestPrecisionModel_floating_noScale() {
TestReader testReader = new TestReader();
TestRun testRun = testReader.createTestRun(new File(
"\\\\pluto\\data\\jts\\testing\\precisionModel_floating_noScale.xml"), 0);
assertNotNull(testRun);
assertTrue(testRun.getPrecisionModel().isFloating());
assertEquals(0, testRun.getPrecisionModel().getScale(), 1E-15);
}
private void printParsingProblems(TestReader testReader) {
for (Iterator i = testReader.getParsingProblems().iterator(); i.hasNext(); ) {
String problem = (String) i.next();
System.out.println(problem);
}
}
private String normalize(String xml) {
String normalizedXML = "";
StringTokenizer tokenizer = new StringTokenizer(xml.toUpperCase());
while (tokenizer.hasMoreTokens()) {
normalizedXML += tokenizer.nextToken();
}
return normalizedXML;
}
}