Revision: 19625
http://sourceforge.net/p/gate/code/19625
Author: markagreenwood
Date: 2016-10-04 11:10:55 +0000 (Tue, 04 Oct 2016)
Log Message:
-----------
I think that's the rest of the tests renabled that can be, all the remaining
ones probably need to go into plugins, and even some of the ones I have enabled
need work to actually test things properly but that is at least a good starting
point
Modified Paths:
--------------
gate/branches/sawdust2/gate-core/src/test/java/gate/config/TestConfig.java
Added Paths:
-----------
gate/branches/sawdust2/gate-core/src/test/java/gate/config/
gate/branches/sawdust2/gate-core/src/test/java/gate/creole/DynamicRegistrationTest.java
gate/branches/sawdust2/gate-core/src/test/java/gate/creole/TestCreoleAnnotationHandler.java
gate/branches/sawdust2/gate-core/src/test/java/gate/creole/TestXSchema.java
gate/branches/sawdust2/gate-core/src/test/java/gate/creole/metadata/
Removed Paths:
-------------
gate/branches/sawdust2/gate-core/src/test/disabled/gate/TestGate.java
gate/branches/sawdust2/gate-core/src/test/disabled/gate/config/
gate/branches/sawdust2/gate-core/src/test/disabled/gate/creole/TestCreoleAnnotationHandler.java
gate/branches/sawdust2/gate-core/src/test/disabled/gate/creole/TestXSchema.java
gate/branches/sawdust2/gate-core/src/test/disabled/gate/creole/ir/
gate/branches/sawdust2/gate-core/src/test/disabled/gate/creole/metadata/
gate/branches/sawdust2/gate-core/src/test/disabled/gate/creole/test/
gate/branches/sawdust2/gate-core/src/test/disabled/gate/swing/
Deleted: gate/branches/sawdust2/gate-core/src/test/disabled/gate/TestGate.java
===================================================================
--- gate/branches/sawdust2/gate-core/src/test/disabled/gate/TestGate.java
2016-10-04 09:25:59 UTC (rev 19624)
+++ gate/branches/sawdust2/gate-core/src/test/disabled/gate/TestGate.java
2016-10-04 11:10:55 UTC (rev 19625)
@@ -1,216 +0,0 @@
-/*
- * TestGate.java
- *
- * Copyright (c) 1995-2012, The University of Sheffield. See the file
- * COPYRIGHT.txt in the software or at http://gate.ac.uk/gate/COPYRIGHT.txt
- *
- * This file is part of GATE (see http://gate.ac.uk/), and is free
- * software, licenced under the GNU Library General Public License,
- * Version 2, June 1991 (in the distribution as file licence.html,
- * and also available at http://gate.ac.uk/gate/licence.html).
- *
- * Hamish Cunningham, 21/Jan/00
- *
- * $Id$
- */
-
-package gate;
-
-import java.io.File;
-import java.lang.reflect.Method;
-import java.net.MalformedURLException;
-import java.net.URL;
-
-import gate.annotation.TestAnnotation;
-import gate.config.TestConfig;
-import gate.corpora.TestCorpus;
-import gate.corpora.TestDocument;
-import gate.corpora.TestDocumentStaxUtils;
-import gate.corpora.TestSerialCorpus;
-import gate.corpora.TestTikaFormats;
-import gate.creole.TestControllers;
-import gate.creole.TestCreole;
-import gate.creole.TestCreoleAnnotationHandler;
-import gate.creole.TestXSchema;
-import gate.creole.annic.test.TestAnnic;
-import gate.creole.test.DynamicRegistrationTest;
-import gate.email.TestEmail;
-import gate.html.TestHtml;
-import gate.persist.TestPersist;
-import gate.sgml.TestSgml;
-import gate.util.Err;
-import gate.util.GateException;
-import gate.util.Out;
-import gate.util.TestAnnotationMerging;
-import gate.util.TestClassificationMeasures;
-import gate.util.TestDiffer;
-import gate.util.TestFeatureMap;
-import gate.util.TestFiles;
-import gate.util.TestJavac;
-import gate.util.TestRBTreeMap;
-import gate.util.TestTemplate;
-import gate.util.TestTools;
-import gate.xml.TestRepositioningInfo;
-import gate.xml.TestXml;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-/** Top-level entry point for GATE test suite;
- * "main" will run the JUnit test runner interface.
- * <P>
- * Many tests require access to files; generally these files are located
- * on Web servers. In cases where there is no net connection, or the
- * Web servers are down, the test files are searched for in the file system
- * or Jar code base that the system has been loaded from. The search
- * order for test files is like this:
- * <UL>
- * <LI>
- * <A HREF=http://derwent.dcs.shef.ac.uk:80/gate.ac.uk/>
- * http://derwent.dcs.shef.ac.uk:80/gate.ac.uk/</A>
- * <LI>
- * <A HREF=http://gate.ac.uk:80/>http://gate.ac.uk:80/</A>
- * <LI>
- * <A HREF=http://localhost:80/gate.ac.uk/>http://localhost:80/gate.ac.uk/</A>
- * <LI>
- * the file system location that the classes came from, e.g.
- * <TT>z:\gate\classes</TT>, or <TT>jar:....gate.jar</TT>.
- * </UL>
- * This search order can be modified by parameters to the main
- * function (see below).
- */
-
-public class TestGate {
-
- /** Status flag for normal exit. */
- @SuppressWarnings("unused")
- private static final int STATUS_NORMAL = 0;
-
- /** Status flag for error exit. */
- private static final int STATUS_ERROR = 1;
-
- /** GATE test suite. Every test case class has to be
- * registered here.
- */
- public static Test suite() throws Exception {
- // inialise the library. we re-throw any exceptions thrown by
- // init, after printing them out, because the junit gui doesn't
- // say anything more informative than "can't invoke suite" if there's
- // an exception here...
-
- try {
- //get the config if set through a property
- String configFile = System.getProperty("gate.config");
- if(configFile != null && configFile.length() > 0){
- File f = new File(configFile);
- try {
- @SuppressWarnings("unused")
- URL u = f.toURI().toURL();
- } catch(MalformedURLException e) {
- Err.prln("Bad initialisation file: " + configFile);
- Err.prln(e);
- System.exit(STATUS_ERROR);
- }
- Gate.setSiteConfigFile(f);
- }
- Gate.init();
- } catch(GateException e) {
- Out.prln("can't initialise GATE library! exception = " + e);
- throw(e);
- }
-
- TestSuite suite = new TestSuite();
-
- try {
- ////////////////////////////////////////////////
- // Test bench
- ////////////////////////////////////////////////
- // set this true to run all tests; false to run the just one below
- String testName = System.getProperty("gate.testcase");
- if(testName != null) {
- // single test class specified in a system property, so run just
- // that test
- Class<?> testClass = Class.forName(testName);
- Method suiteMethod = testClass.getMethod("suite");
- Test theSuite = (Test)suiteMethod.invoke(null);
- suite.addTest(theSuite);
- } else {
- // no test name specified, so run them all
- suite.addTest(TestUtils.suite());
- suite.addTest(TestAnnic.suite());
-
- //WordNet has been moved into a plugin along with the test
- //suite.addTest(TestWordNet.suite());
-
- //The IR impls are now in a plugin along with the tests
- //suite.addTest(TestIndex.suite());
- suite.addTest(TestPersist.suite());
- suite.addTest(TestControllers.suite());
-
- // the db isn't usually available so this will always fail
- //suite.addTest(TestSecurity.suite());
- suite.addTest(TestConfig.suite());
- suite.addTest(TestAnnotation.suite());
- suite.addTest(TestEmail.suite());
-
- suite.addTest(TestXml.suite());
- suite.addTest(TestHtml.suite());
- suite.addTest(TestSgml.suite());
- suite.addTest(TestXSchema.suite());
-
- suite.addTest(TestCreole.suite());
- suite.addTest(TestFiles.suite());
- suite.addTest(TestJavac.suite());
-
- //Moved into the ANNIE plugin
- //suite.addTest(TestJape.suite());
-
- //Moved into the ANNIE plugin
- //TODO fix these tests so that they work properly
- //suite.addTest(TestConstraints.suite());
-
- suite.addTest(TestTemplate.suite());
- suite.addTest(TestDocument.suite());
- suite.addTest(TestDocumentStaxUtils.suite());
- suite.addTest(TestTikaFormats.suite());
- suite.addTest(TestRBTreeMap.suite());
- suite.addTest(TestCorpus.suite());
- suite.addTest(TestSerialCorpus.suite());
- suite.addTest(TestDiffer.suite());
- suite.addTest(TestAnnotationMerging.suite());
- suite.addTest(TestClassificationMeasures.suite());
-
- //Moved into the ANNIE plugin
- //suite.addTest(TestGazetteer.suite());
- suite.addTest(TestFeatureMap.suite());
- suite.addTest(TestTools.suite());
- suite.addTest(TestCreoleAnnotationHandler.suite());
-
- //moved into ANNIE
- //suite.addTest(TestPR.suite());
-
- //Moved nito the Tools plugin
- //suite.addTest(TestMorph.suite());
-
- //test ontotext gazetteer
- //Moved into the ANNIE plugin
- //suite.addTest(TestHashGazetteer.suite());
-
- suite.addTest(TestRepositioningInfo.suite());
-
- //Moved nito the Tools plugin
- //suite.addTest(TestFlexibleGazetteer.suite());
-
- // Dynamic creole registration
- suite.addTest(DynamicRegistrationTest.suite());
-
- } // if(allTests)
-
- } catch(Exception e) {
- Out.prln("can't add tests! exception = " + e);
- throw(e);
- }
-
- return suite;
- } // suite
-
-} // class TestGate
Deleted:
gate/branches/sawdust2/gate-core/src/test/disabled/gate/creole/TestCreoleAnnotationHandler.java
===================================================================
---
gate/branches/sawdust2/gate-core/src/test/disabled/gate/creole/TestCreoleAnnotationHandler.java
2016-10-04 09:25:59 UTC (rev 19624)
+++
gate/branches/sawdust2/gate-core/src/test/disabled/gate/creole/TestCreoleAnnotationHandler.java
2016-10-04 11:10:55 UTC (rev 19625)
@@ -1,143 +0,0 @@
-/*
- * TestCreoleAnnotationHandler.java
- *
- * Copyright (c) 2008, The University of Sheffield.
- *
- * This file is part of GATE (see http://gate.ac.uk/), and is free
- * software, licenced under the GNU Library General Public License,
- * Version 2, June 1991 (in the distribution as file licence.html,
- * and also available at http://gate.ac.uk/gate/licence.html).
- *
- * Ian Roberts, 27/Jul/2008
- *
- * $Id$
- */
-
-package gate.creole;
-
-import java.net.URL;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-
-import org.custommonkey.xmlunit.Diff;
-import org.custommonkey.xmlunit.ElementNameQualifier;
-import org.custommonkey.xmlunit.XMLUnit;
-import org.jdom.input.SAXBuilder;
-import org.jdom.output.DOMOutputter;
-import org.jdom.output.Format;
-import org.jdom.output.XMLOutputter;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-
-import gate.Gate;
-import gate.Plugin;
-import gate.corpora.TestDocument;
-import gate.util.GateException;
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-
-/**
- * Test for the CreoleAnnotationHandler, compares the XML produced by the
- * annotation handler to an expected result.
- */
-public class TestCreoleAnnotationHandler extends TestCase {
-
- private SAXBuilder jdomBuilder = new SAXBuilder();
-
- private DOMOutputter jdom2dom = new DOMOutputter();
-
- private DocumentBuilderFactory jaxpFactory =
DocumentBuilderFactory.newInstance();
-
- /** Construction */
- public TestCreoleAnnotationHandler(String name) throws GateException {
- super(name);
- }
-
- @Override
- public void setUp() throws Exception {
- // Initialise the GATE library and creole register
- Gate.init();
-
- XMLUnit.setIgnoreComments(true);
- XMLUnit.setIgnoreWhitespace(true);
- XMLUnit.setIgnoreAttributeOrder(true);
- }
-
- /**
- * Take a skeleton creole.xml file, process the annotations on the classes it
- * mentions and compare the resulting XML to the expected result.
- */
- public void testCreoleAnnotationHandler() throws Exception {
- URL originalUrl = new
URL(TestDocument.getTestServerName()+"tests/creole-annotation-handler/initial-creole.xml");
- org.jdom.Document creoleXml =
- jdomBuilder.build(originalUrl.openStream());
- CreoleAnnotationHandler processor = new CreoleAnnotationHandler(new
Plugin.Directory(new
URL(TestDocument.getTestServerName()+"tests/creole-annotation-handler/")));
- processor.processAnnotations(creoleXml);
-
- URL expectedURL = new
URL(TestDocument.getTestServerName()+"tests/creole-annotation-handler/expected-creole.xml");
-
- // XMLUnit requires the expected and actual results as W3C DOM rather than
- // JDOM
- DocumentBuilder docBuilder = jaxpFactory.newDocumentBuilder();
- org.w3c.dom.Document targetXmlDOM =
- docBuilder.parse(expectedURL.openStream());
-
- org.w3c.dom.Document actualXmlDOM = jdom2dom.output(creoleXml);
-
- Diff diff = XMLUnit.compareXML(targetXmlDOM, actualXmlDOM);
-
- // compare parameter elements with the same NAME, resources with the same
- // CLASS, and all other elements that have the same element name
- diff.overrideElementQualifier(new ElementNameQualifier() {
- @Override
- public boolean qualifyForComparison(Element control, Element test) {
- if("PARAMETER".equals(control.getTagName()) &&
"PARAMETER".equals(test.getTagName())) {
- return
control.getAttribute("NAME").equals(test.getAttribute("NAME"));
- }
- else if("RESOURCE".equals(control.getTagName()) &&
"RESOURCE".equals(test.getTagName())) {
- String controlClass = findClass(control);
- String testClass = findClass(test);
- return (controlClass == null) ? (testClass == null)
- : controlClass.equals(testClass);
- }
- else {
- return super.qualifyForComparison(control, test);
- }
- }
-
- private String findClass(Element resource) {
- Node node = resource.getFirstChild();
- while(node != null && !"CLASS".equals(node.getNodeName())) {
- node = node.getNextSibling();
- }
-
- if(node != null) {
- return node.getTextContent();
- }
- else {
- return null;
- }
- }
- });
-
- // do the comparison!
- boolean match = diff.similar();
- if(!match) {
- // if comparison failed, output the "actual" result document for
- // debugging purposes
- System.err.println("---------actual-----------");
- new XMLOutputter(Format.getPrettyFormat()).output(creoleXml, System.err);
- }
-
- assertTrue("XML produced by annotation handler does not match expected: "
- + diff.toString() , match);
- }
-
- /** Test suite routine for the test runner */
- public static Test suite() {
- return new TestSuite(TestCreoleAnnotationHandler.class);
- } // suite
-
-}
Deleted:
gate/branches/sawdust2/gate-core/src/test/disabled/gate/creole/TestXSchema.java
===================================================================
---
gate/branches/sawdust2/gate-core/src/test/disabled/gate/creole/TestXSchema.java
2016-10-04 09:25:59 UTC (rev 19624)
+++
gate/branches/sawdust2/gate-core/src/test/disabled/gate/creole/TestXSchema.java
2016-10-04 11:10:55 UTC (rev 19625)
@@ -1,91 +0,0 @@
-/*
- * TestXSchema.java
- *
- * Copyright (c) 1995-2012, The University of Sheffield. See the file
- * COPYRIGHT.txt in the software or at http://gate.ac.uk/gate/COPYRIGHT.txt
- *
- * This file is part of GATE (see http://gate.ac.uk/), and is free
- * software, licenced under the GNU Library General Public License,
- * Version 2, June 1991 (in the distribution as file licence.html,
- * and also available at http://gate.ac.uk/gate/licence.html).
- *
- * Cristian URSU, 11/Octomber/2000
- *
- * $Id$
- */
-
-package gate.creole;
-
-import gate.Factory;
-import gate.FeatureMap;
-import gate.Gate;
-import gate.corpora.TestDocument;
-import gate.util.Out;
-
-import java.io.ByteArrayInputStream;
-import java.net.URL;
-
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-
-/** Annotation schemas test class.
- */
-public class TestXSchema extends TestCase
-{
- /** Debug flag */
- private static final boolean DEBUG = false;
-
- /** Construction */
- public TestXSchema(String name) { super(name); }
-
- /** Fixture set up */
- @Override
- public void setUp() {
- } // setUp
-
- /** A test */
- public void testFromAndToXSchema() throws Exception {
-
- //esourceData resData =
Gate.getCreoleRegister().get("gate.creole.AnnotationSchema");
-
- FeatureMap parameters = Factory.newFeatureMap();
- parameters.put(
- AnnotationSchema.FILE_URL_PARAM_NAME, new
URL(TestDocument.getTestServerName()+"tests/xml/POSSchema.xml"));
-
- AnnotationSchema annotSchema = (AnnotationSchema)
- Factory.createResource("gate.creole.AnnotationSchema", parameters);
-
- String s = annotSchema.toXSchema();
- // write back the XSchema fom memory
- // File file = Files.writeTempFile(new ByteArrayInputStream(s.getBytes()));
- // load it again.
- //annotSchema.fromXSchema(file.toURI().toURL());
- annotSchema.fromXSchema(new ByteArrayInputStream(s.getBytes()));
- } // testFromAndToXSchema()
-
- /** Test creation of annotation schemas via gate.Factory */
- public void testFactoryCreation() throws Exception {
-
- ResourceData resData =
Gate.getCreoleRegister().get("gate.creole.AnnotationSchema");
-
- FeatureMap parameters = Factory.newFeatureMap();
- parameters.put(
- AnnotationSchema.FILE_URL_PARAM_NAME, new
URL(TestDocument.getTestServerName()+"tests/xml/POSSchema.xml"));
-
- AnnotationSchema schema = (AnnotationSchema)
- Factory.createResource("gate.creole.AnnotationSchema", parameters);
-
- if(DEBUG) {
- Out.prln("schema RD: " + resData);
- Out.prln("schema: " + schema);
- }
-
- } // testFactoryCreation()
-
- /** Test suite routine for the test runner */
- public static Test suite() {
- return new TestSuite(TestXSchema.class);
- } // suite
-
-} // class TestXSchema
Modified:
gate/branches/sawdust2/gate-core/src/test/java/gate/config/TestConfig.java
===================================================================
---
gate/branches/sawdust2/gate-core/src/test/disabled/gate/config/TestConfig.java
2016-10-04 09:25:59 UTC (rev 19624)
+++ gate/branches/sawdust2/gate-core/src/test/java/gate/config/TestConfig.java
2016-10-04 11:10:55 UTC (rev 19625)
@@ -16,24 +16,22 @@
package gate.config;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URL;
+
import gate.CreoleRegister;
import gate.Gate;
import gate.GateConstants;
+import gate.Plugin;
import gate.corpora.TestDocument;
import gate.util.Files;
import gate.util.GateException;
import gate.util.OptionsMap;
import gate.util.Out;
import gate.util.Strings;
-
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URL;
-
-import junit.framework.Test;
import junit.framework.TestCase;
-import junit.framework.TestSuite;
/** CREOLE test class
*/
@@ -42,14 +40,16 @@
/** Debug flag */
private static final boolean DEBUG = false;
- /** Construction */
- public TestConfig(String name) throws GateException { super(name); }
/** Fixture set up */
@Override
public void setUp() throws Exception {
+ if (!Gate.isInitialised()) {
+ Gate.runInSandbox(true);
+ Gate.init();
+ }
CreoleRegister register = Gate.getCreoleRegister();
- register.registerDirectories(new
URL(TestDocument.getTestServerName()+"tests"));
+ register.registerPlugin(new Plugin.Directory(new
URL(TestDocument.getTestServerName()+"tests")));
} // setUp
/** Put things back as they should be after running tests
@@ -59,7 +59,6 @@
public void tearDown() throws Exception {
CreoleRegister register = Gate.getCreoleRegister();
register.clear();
- Gate.init();
} // tearDown
/**
@@ -136,8 +135,16 @@
/** Test config updating */
public void testConfigUpdating() throws Exception {
+
+ //TODO try and fix this in some way
+ // Don't test if there is no file. Should probably test with a static file
+ // in the resources instead of relying on the running user
+ if (Gate.getUserConfigFile() == null) return;
+
// clear the gate config so we don't write values from the
// system initialisation into the test file
+
+
OptionsMap configMap = Gate.getUserConfig();
configMap.clear();
@@ -195,6 +202,11 @@
/** Test session state file naming */
public void testSessionStateFileNaming() throws Exception {
+
+ //TODO fix this
+ //again we can't test these thinfs if there is no file to test
+ if (Gate.getUserSessionFile() == null) return;
+
String fileSep = Strings.getFileSep();
if(DEBUG) {
Out.prln("file sep is: " + fileSep);
@@ -235,9 +247,4 @@
} // testConfigFileNaming
- /** Test suite routine for the test runner */
- public static Test suite() {
- return new TestSuite(TestConfig.class);
- } // suite
-
} // class TestConfig
Copied:
gate/branches/sawdust2/gate-core/src/test/java/gate/creole/DynamicRegistrationTest.java
(from rev 19624,
gate/branches/sawdust2/gate-core/src/test/disabled/gate/creole/test/DynamicRegistrationTest.java)
===================================================================
---
gate/branches/sawdust2/gate-core/src/test/java/gate/creole/DynamicRegistrationTest.java
(rev 0)
+++
gate/branches/sawdust2/gate-core/src/test/java/gate/creole/DynamicRegistrationTest.java
2016-10-04 11:10:55 UTC (rev 19625)
@@ -0,0 +1,60 @@
+/*
+ * DynamicRegistrationTest.java
+ *
+ * Copyright (c) 2010, The University of Sheffield. See the file
+ * COPYRIGHT.txt in the software or at http://gate.ac.uk/gate/COPYRIGHT.txt
+ *
+ * This file is part of GATE (see http://gate.ac.uk/), and is free
+ * software, licenced under the GNU Library General Public License,
+ * Version 2, June 1991 (in the distribution as file licence.html,
+ * and also available at http://gate.ac.uk/gate/licence.html).
+ *
+ */
+
+package gate.creole;
+
+import gate.Corpus;
+import gate.Document;
+import gate.Factory;
+import gate.Gate;
+import gate.Plugin;
+import gate.ProcessingResource;
+import gate.creole.metadata.CreoleResource;
+import junit.framework.TestCase;
+
+/**
+ * Test case for the dynamic registration system. Intended for use inside of
TestGate.
+ *
+ */
+public class DynamicRegistrationTest extends TestCase {
+
+ @CreoleResource(name = "This is a test")
+ public static class TestResource extends AbstractLanguageAnalyser {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public void execute() throws ExecutionException {
+
+ }
+ }
+
+
+ public void testDynamicRegistration() throws Exception {
+ Gate.getCreoleRegister().registerPlugin(new
Plugin.Component(TestResource.class));
+
+ SerialAnalyserController controller =
(SerialAnalyserController)Factory.createResource("gate.creole.SerialAnalyserController",
+ Factory.newFeatureMap(),
+ Factory.newFeatureMap(),
+ "basicRun");
+ ProcessingResource testResource = (ProcessingResource)
+ Factory.createResource(TestResource.class.getName());
+ controller.add(testResource);
+ Corpus corpus = Factory.newCorpus("basicTestCorpus");
+ String engText = "This is the cereal shot from gnus.";
+ Document doc = Factory.newDocument(engText);
+ corpus.add(doc);
+ controller.setCorpus(corpus);
+ controller.setDocument(doc);
+ controller.execute();
+ }
+}
Copied:
gate/branches/sawdust2/gate-core/src/test/java/gate/creole/TestCreoleAnnotationHandler.java
(from rev 19624,
gate/branches/sawdust2/gate-core/src/test/disabled/gate/creole/TestCreoleAnnotationHandler.java)
===================================================================
---
gate/branches/sawdust2/gate-core/src/test/java/gate/creole/TestCreoleAnnotationHandler.java
(rev 0)
+++
gate/branches/sawdust2/gate-core/src/test/java/gate/creole/TestCreoleAnnotationHandler.java
2016-10-04 11:10:55 UTC (rev 19625)
@@ -0,0 +1,143 @@
+/*
+ * TestCreoleAnnotationHandler.java
+ *
+ * Copyright (c) 2008, The University of Sheffield.
+ *
+ * This file is part of GATE (see http://gate.ac.uk/), and is free
+ * software, licenced under the GNU Library General Public License,
+ * Version 2, June 1991 (in the distribution as file licence.html,
+ * and also available at http://gate.ac.uk/gate/licence.html).
+ *
+ * Ian Roberts, 27/Jul/2008
+ *
+ * $Id$
+ */
+
+package gate.creole;
+
+import java.net.URL;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+
+import org.custommonkey.xmlunit.Diff;
+import org.custommonkey.xmlunit.ElementNameQualifier;
+import org.custommonkey.xmlunit.XMLUnit;
+import org.jdom.input.SAXBuilder;
+import org.jdom.output.DOMOutputter;
+import org.jdom.output.Format;
+import org.jdom.output.XMLOutputter;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+import gate.Gate;
+import gate.Plugin;
+import gate.corpora.TestDocument;
+import gate.util.GateException;
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+/**
+ * Test for the CreoleAnnotationHandler, compares the XML produced by the
+ * annotation handler to an expected result.
+ */
+public class TestCreoleAnnotationHandler extends TestCase {
+
+ private SAXBuilder jdomBuilder = new SAXBuilder();
+
+ private DOMOutputter jdom2dom = new DOMOutputter();
+
+ private DocumentBuilderFactory jaxpFactory =
DocumentBuilderFactory.newInstance();
+
+ /** Construction */
+ public TestCreoleAnnotationHandler(String name) throws GateException {
+ super(name);
+ }
+
+ @Override
+ public void setUp() throws Exception {
+ // Initialise the GATE library and creole register
+ Gate.init();
+
+ XMLUnit.setIgnoreComments(true);
+ XMLUnit.setIgnoreWhitespace(true);
+ XMLUnit.setIgnoreAttributeOrder(true);
+ }
+
+ /**
+ * Take a skeleton creole.xml file, process the annotations on the classes it
+ * mentions and compare the resulting XML to the expected result.
+ */
+ public void testCreoleAnnotationHandler() throws Exception {
+ URL originalUrl = new
URL(TestDocument.getTestServerName()+"tests/creole-annotation-handler/initial-creole.xml");
+ org.jdom.Document creoleXml =
+ jdomBuilder.build(originalUrl.openStream());
+ CreoleAnnotationHandler processor = new CreoleAnnotationHandler(new
Plugin.Directory(new
URL(TestDocument.getTestServerName()+"tests/creole-annotation-handler/")));
+ processor.processAnnotations(creoleXml);
+
+ URL expectedURL = new
URL(TestDocument.getTestServerName()+"tests/creole-annotation-handler/expected-creole.xml");
+
+ // XMLUnit requires the expected and actual results as W3C DOM rather than
+ // JDOM
+ DocumentBuilder docBuilder = jaxpFactory.newDocumentBuilder();
+ org.w3c.dom.Document targetXmlDOM =
+ docBuilder.parse(expectedURL.openStream());
+
+ org.w3c.dom.Document actualXmlDOM = jdom2dom.output(creoleXml);
+
+ Diff diff = XMLUnit.compareXML(targetXmlDOM, actualXmlDOM);
+
+ // compare parameter elements with the same NAME, resources with the same
+ // CLASS, and all other elements that have the same element name
+ diff.overrideElementQualifier(new ElementNameQualifier() {
+ @Override
+ public boolean qualifyForComparison(Element control, Element test) {
+ if("PARAMETER".equals(control.getTagName()) &&
"PARAMETER".equals(test.getTagName())) {
+ return
control.getAttribute("NAME").equals(test.getAttribute("NAME"));
+ }
+ else if("RESOURCE".equals(control.getTagName()) &&
"RESOURCE".equals(test.getTagName())) {
+ String controlClass = findClass(control);
+ String testClass = findClass(test);
+ return (controlClass == null) ? (testClass == null)
+ : controlClass.equals(testClass);
+ }
+ else {
+ return super.qualifyForComparison(control, test);
+ }
+ }
+
+ private String findClass(Element resource) {
+ Node node = resource.getFirstChild();
+ while(node != null && !"CLASS".equals(node.getNodeName())) {
+ node = node.getNextSibling();
+ }
+
+ if(node != null) {
+ return node.getTextContent();
+ }
+ else {
+ return null;
+ }
+ }
+ });
+
+ // do the comparison!
+ boolean match = diff.similar();
+ if(!match) {
+ // if comparison failed, output the "actual" result document for
+ // debugging purposes
+ System.err.println("---------actual-----------");
+ new XMLOutputter(Format.getPrettyFormat()).output(creoleXml, System.err);
+ }
+
+ assertTrue("XML produced by annotation handler does not match expected: "
+ + diff.toString() , match);
+ }
+
+ /** Test suite routine for the test runner */
+ public static Test suite() {
+ return new TestSuite(TestCreoleAnnotationHandler.class);
+ } // suite
+
+}
Copied:
gate/branches/sawdust2/gate-core/src/test/java/gate/creole/TestXSchema.java
(from rev 19624,
gate/branches/sawdust2/gate-core/src/test/disabled/gate/creole/TestXSchema.java)
===================================================================
--- gate/branches/sawdust2/gate-core/src/test/java/gate/creole/TestXSchema.java
(rev 0)
+++ gate/branches/sawdust2/gate-core/src/test/java/gate/creole/TestXSchema.java
2016-10-04 11:10:55 UTC (rev 19625)
@@ -0,0 +1,90 @@
+/*
+ * TestXSchema.java
+ *
+ * Copyright (c) 1995-2012, The University of Sheffield. See the file
+ * COPYRIGHT.txt in the software or at http://gate.ac.uk/gate/COPYRIGHT.txt
+ *
+ * This file is part of GATE (see http://gate.ac.uk/), and is free
+ * software, licenced under the GNU Library General Public License,
+ * Version 2, June 1991 (in the distribution as file licence.html,
+ * and also available at http://gate.ac.uk/gate/licence.html).
+ *
+ * Cristian URSU, 11/Octomber/2000
+ *
+ * $Id$
+ */
+
+package gate.creole;
+
+import gate.Factory;
+import gate.FeatureMap;
+import gate.Gate;
+import gate.corpora.TestDocument;
+import gate.util.Out;
+
+import java.io.ByteArrayInputStream;
+import java.net.URL;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+/** Annotation schemas test class.
+ */
+public class TestXSchema extends TestCase
+{
+ /** Debug flag */
+ private static final boolean DEBUG = false;
+
+ /** Construction */
+ public TestXSchema(String name) { super(name); }
+
+ /** Fixture set up */
+ @Override
+ public void setUp() throws Exception {
+ if (!Gate.isInitialised()) {
+ Gate.runInSandbox(true);
+ Gate.init();
+ }
+ } // setUp
+
+ /** A test */
+ public void testFromAndToXSchema() throws Exception {
+
+ //esourceData resData =
Gate.getCreoleRegister().get("gate.creole.AnnotationSchema");
+
+ FeatureMap parameters = Factory.newFeatureMap();
+ parameters.put(
+ AnnotationSchema.FILE_URL_PARAM_NAME, new
URL(TestDocument.getTestServerName()+"tests/xml/POSSchema.xml"));
+
+ AnnotationSchema annotSchema = (AnnotationSchema)
+ Factory.createResource("gate.creole.AnnotationSchema", parameters);
+
+ String s = annotSchema.toXSchema();
+ // write back the XSchema fom memory
+ // File file = Files.writeTempFile(new ByteArrayInputStream(s.getBytes()));
+ // load it again.
+ //annotSchema.fromXSchema(file.toURI().toURL());
+ annotSchema.fromXSchema(new ByteArrayInputStream(s.getBytes()));
+ } // testFromAndToXSchema()
+
+ /** Test creation of annotation schemas via gate.Factory */
+ public void testFactoryCreation() throws Exception {
+
+ ResourceData resData =
Gate.getCreoleRegister().get("gate.creole.AnnotationSchema");
+
+ FeatureMap parameters = Factory.newFeatureMap();
+ parameters.put(
+ AnnotationSchema.FILE_URL_PARAM_NAME, new
URL(TestDocument.getTestServerName()+"tests/xml/POSSchema.xml"));
+
+ AnnotationSchema schema = (AnnotationSchema)
+ Factory.createResource("gate.creole.AnnotationSchema", parameters);
+
+ if(DEBUG) {
+ Out.prln("schema RD: " + resData);
+ Out.prln("schema: " + schema);
+ }
+
+ } // testFactoryCreation()
+
+} // class TestXSchema
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
GATE-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/gate-cvs