Revision: 19624
http://sourceforge.net/p/gate/code/19624
Author: markagreenwood
Date: 2016-10-04 09:25:59 +0000 (Tue, 04 Oct 2016)
Log Message:
-----------
started to merge in more complex tests and fixed a long standing typo in an
exception message
Modified Paths:
--------------
gate/branches/sawdust2/gate-core/src/main/java/gate/creole/CreoleRegisterImpl.java
gate/branches/sawdust2/gate-core/src/test/resources/gate/resources/gate.ac.uk/tests/creole.xml
Added Paths:
-----------
gate/branches/sawdust2/gate-core/src/test/java/gate/creole/
gate/branches/sawdust2/gate-core/src/test/java/gate/creole/TestCreole.java
Removed Paths:
-------------
gate/branches/sawdust2/gate-core/src/test/disabled/gate/creole/TestCreole.java
Modified:
gate/branches/sawdust2/gate-core/src/main/java/gate/creole/CreoleRegisterImpl.java
===================================================================
---
gate/branches/sawdust2/gate-core/src/main/java/gate/creole/CreoleRegisterImpl.java
2016-10-04 07:17:31 UTC (rev 19623)
+++
gate/branches/sawdust2/gate-core/src/main/java/gate/creole/CreoleRegisterImpl.java
2016-10-04 09:25:59 UTC (rev 19624)
@@ -237,7 +237,7 @@
registerPlugin(plugin);
} catch(Exception e) {
- throw new GateException("Faailed to load plugin", e);
+ throw new GateException("Failed to load plugin", e);
}
}
Deleted:
gate/branches/sawdust2/gate-core/src/test/disabled/gate/creole/TestCreole.java
===================================================================
---
gate/branches/sawdust2/gate-core/src/test/disabled/gate/creole/TestCreole.java
2016-10-04 07:17:31 UTC (rev 19623)
+++
gate/branches/sawdust2/gate-core/src/test/disabled/gate/creole/TestCreole.java
2016-10-04 09:25:59 UTC (rev 19624)
@@ -1,686 +0,0 @@
-/*
- * TestCreole.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, 16/Mar/00
- *
- * $Id$
- */
-
-package gate.creole;
-
-import java.beans.*;
-import java.lang.reflect.Method;
-import java.net.URL;
-import java.util.*;
-
-import junit.framework.*;
-
-import gate.*;
-import gate.corpora.TestDocument;
-import gate.util.GateException;
-import gate.util.Out;
-
-/** CREOLE test class
- */
-public class TestCreole extends TestCase
-{
- /** Debug flag */
- private static final boolean DEBUG = false;
-
- /** Construction */
- public TestCreole(String name) throws GateException { super(name); }
-
- /** Local shorthand for the CREOLE register */
- private CreoleRegister reg;
-
- /** Fixture set up */
- @Override
- public void setUp() throws Exception {
- // Initialise the GATE library and creole register
- Gate.init();
-
- // clear the register and the creole directory set
- reg = Gate.getCreoleRegister();
- reg.clear();
-
- // find a URL for finding test files and add to the directory set
- URL testUrl = new URL(TestDocument.getTestServerName()+"tests/");
- reg.registerDirectories(testUrl);
-
- if(DEBUG) {
- Iterator<ResourceData> iter = reg.values().iterator();
- while(iter.hasNext()) Out.println(iter.next());
- }
- } // setUp
-
- /** Put things back as they should be after running tests
- * (reinitialise the CREOLE register).
- */
- @Override
- public void tearDown() throws Exception {
- reg.clear();
- Gate.init();
- } // tearDown
-
- /** Test the getInstances methods on CreoleRegister */
- public void testInstanceLists() throws Exception {
- // misc locals
- List<? extends Resource> l;
- CreoleRegister cr = Gate.getCreoleRegister();
- int numLrInstances = 0;
-
- // The only instances of any type should be autoloading ones
- l = cr.getVrInstances();
- if(! allAutoloaders(l))
- fail(" non-autoloading resources already present (1)");
- l = cr.getLrInstances();
- numLrInstances = l.size();
- if(! allAutoloaders(l))
- fail(" non-autoloading resources already present (2)");
- l = cr.getPrInstances();
- if(! allAutoloaders(l))
- fail(" non-autoloading resources already present (3)");
-
- // Create an LR
- FeatureMap params = Factory.newFeatureMap();
- params.put("features", Factory.newFeatureMap());
- params.put(Document.DOCUMENT_URL_PARAMETER_NAME, new
URL(TestDocument.getTestServerName()+"tests/doc0.html"));
- Factory.createResource("gate.corpora.DocumentImpl", params);
-
- // lr instances list should be one longer now
- if(! (cr.getLrInstances().size() == numLrInstances + 1))
- fail("wrong number of LRs");
-
- // Create another LR
- params = Factory.newFeatureMap();
- params.put("features", Factory.newFeatureMap());
- params.put(Document.DOCUMENT_URL_PARAMETER_NAME, new
URL(TestDocument.getTestServerName()+"tests/doc0.html"));
- Factory.createResource("gate.corpora.DocumentImpl", params);
-
- // lr instances list should be two longer now
- if(! (cr.getLrInstances().size() == numLrInstances + 2))
- fail("wrong number of LRs");
-
- // we should have two instances of type document
- l = cr.getLrInstances("gate.corpora.DocumentImpl");
- if(l.size() != 2)
- fail("wrong number of documents");
- } // testInstanceLists
-
-
- /** Test view registration */
- public void testViews() throws Exception {
- List<String> smallViews1 =
- reg.getSmallVRsForResource("gate.persist.SerialDataStore");
- String className1 = new String("");
- if (smallViews1!= null && smallViews1.size()>0)
- className1 = smallViews1.get(0);
- assertTrue(
- "Found "+className1+
- " as small viewer for gate.persist.SerialDataStore, "+
- "instead of gate.gui.SerialDatastoreViewer",
- smallViews1.size() == 1 &&
- "gate.gui.SerialDatastoreViewer".equals(className1)
- );
-
- List<String> largeViews1 =
- reg.getLargeVRsForResource("gate.Corpus");
- assertTrue(
- "Found "+largeViews1.size()+" wich are " +largeViews1 +
- " as large viewers for gate.Corpus, "+
- "instead of 1 which is [gate.gui.CorpusEditor]",
- largeViews1.size() == 1
- );
-
- List<String> largeViews2 =
- reg.getLargeVRsForResource("gate.Document");
- assertTrue(
- "Found "+largeViews2.size()+" wich are " +largeViews2 +
- " as large viewers for gate.Document, "+
- "instead of 0",
- largeViews2.size() == 0
- );
-
- List<String> annotViews1 =
- reg.getAnnotationVRs();
- assertTrue(
- "Found "+annotViews1.size()+" wich are " +annotViews1 +
- " as annotation viewers for all types annotations, "+
- "instead of 0",
- annotViews1.size() == 0
- );
- } // testViews()
-
- /** Utility method to check that a list of resources are all
- * auto-loading.
- */
- protected boolean allAutoloaders(List<? extends Resource> l) {
- if(l != null) {
- Resource res = null;
- ResourceData resData = null;
- CreoleRegister cr = Gate.getCreoleRegister();
- Iterator<? extends Resource> iter = l.iterator();
- while(iter.hasNext()) {
- res = iter.next();
- if(DEBUG) Out.prln(res);
- resData = cr.get(res.getClass().getName());
- if(DEBUG) Out.prln(resData);
- if(! resData.isAutoLoading())
- return false;
- }
- }
-
- return true;
- } // allAutoloaders
-
- /** Test resource discovery */
- public void testDiscovery() throws Exception {
-
- CreoleRegister reg = Gate.getCreoleRegister();
- if(DEBUG) {
- Iterator<ResourceData> iter = reg.values().iterator();
- while(iter.hasNext()) Out.println(iter.next());
- }
-
- ResourceData rd = reg.get("gate.creole.tokeniser.DefaultTokeniser");
- assertNotNull("couldn't find unicode tok in register of resources", rd);
- assertTrue(rd.getName().equals("ANNIE Unicode Tokeniser"));
-
- String docFormatName = "gate.corpora.XmlDocumentFormat";
- ResourceData xmlDocFormatRD = reg.get(docFormatName);
- assertTrue(xmlDocFormatRD.getName().equals("Sheffield XML Document
Format"));
- assertTrue(xmlDocFormatRD.isAutoLoading());
-
- rd = reg.get("testpkg.TestPR1");
- assertTrue(rd.getJarFileName().equals("TestResources.jar"));
- } // testDiscovery()
-
- /** Test resource metadata */
- public void testMetadata() throws Exception {
-
- // get some res data from the register
- ResourceData pr1rd = reg.get("testpkg.TestPR1");
- ResourceData pr2rd = reg.get("testpkg.TestPR2");
- assertTrue(pr1rd != null & pr2rd != null);
- assertTrue(pr2rd.getName().equals("Sheffield Test PR 2"));
-
- // checks values of parameters of param0 in test pr 1
- assertTrue(pr1rd.getClassName().equals("testpkg.TestPR1"));
- Iterator<List<Parameter>> iter =
pr1rd.getParameterList().getRuntimeParameters().iterator();
- Iterator<Parameter> iter2 = null;
- Parameter param = null;
- while(iter.hasNext()) {
- iter2 = iter.next().iterator();
- while(iter2.hasNext()) {
- param = iter2.next();
- if(param.typeName.equals("param0"))
- break;
- }
- if(param.typeName.equals("param0"))
- break;
- }
-
- assertTrue("param0 was null", param != null);
- assertTrue(param.typeName.equals("java.lang.String"));
- assertTrue(param.optional);
- assertTrue(! param.runtime);
- assertTrue(param.comment == null);
- assertTrue(param.name.equals("thing"));
-
- reg.clear();
- } // testMetadata()
-
- /** Test TOOLS and PRIVATE attributes */
- public void testToolsAndPrivate() throws Exception {
- ResourceData pr3rd = reg.get("testpkg.PrintOutTokens");
- assertTrue("couldn't get PR3", pr3rd != null);
- assertTrue("PR3 not a tool", pr3rd.isTool());
- if(DEBUG) Out.prln(pr3rd.getFeatures());
-
- String docFormatName = "gate.corpora.XmlDocumentFormat";
- ResourceData xmlDocFormatRD = reg.get(docFormatName);
- assertTrue("Xml doc format not PRIVATE", xmlDocFormatRD.isPrivate());
- if(DEBUG) Out.prln(xmlDocFormatRD.getFeatures());
-
- // this used to test the number of public and private LR
- // instances known to the creole register, but this is no
- // longer reliable as extras may (will) be defined by
- // @CreoleResource annotations.
-
- } // testToolsAndPrivate()
-
- /** Test resource loading */
- public void testLoading() throws Exception {
-
- // get some res data from the register
- assertTrue(
- "wrong number of resources in the register: " + reg.size(),
- reg.size() == 11
- );
- ResourceData pr1rd = reg.get("testpkg.TestPR1");
- ResourceData pr2rd = reg.get("testpkg.TestPR2");
- assertTrue("couldn't find PR1/PR2 res data", pr1rd != null && pr2rd !=
null);
- assertTrue("wrong name on PR1", pr1rd.getName().equals("Sheffield Test PR
1"));
-
- // instantiation
- ProcessingResource pr1 = (ProcessingResource)
- Factory.createResource("testpkg.TestPR1", Factory.newFeatureMap());
- ProcessingResource pr2 = (ProcessingResource)
- Factory.createResource("testpkg.TestPR2", Factory.newFeatureMap());
-
- // run the beasts
- FeatureMap pr1features = pr1.getFeatures();
- FeatureMap pr2features = pr2.getFeatures();
- assertNotNull("PR1 features are null", pr1features);
- assertTrue(
- "PR2 got wrong features: " + pr2features,
- pr2features != null && pr2features.size() != 1
- );
- pr1.execute();
- pr2.execute();
- assertTrue(
- "PR1 feature not present",
- pr1.getFeatures().get("I").equals("have been run, thankyou")
- );
- assertTrue(
- "PR2 feature not present",
- pr2.getFeatures().get("I").equals("am in a bad mood")
- );
-
- reg.clear();
- } // testLoading()
-
- /** Test resource indexing by class */
- public void testClassIndex() throws Exception {
-
- ResourceData docRd = reg.get("gate.corpora.DocumentImpl");
- assertNotNull("couldn't find document res data", docRd);
- assertTrue(
- "doc res data has wrong class name",
- docRd.getClassName().equals("gate.corpora.DocumentImpl")
- );
- assertTrue(
- "doc res data has wrong interface name",
- docRd.getInterfaceName().equals("gate.Document")
- );
-
- Class<?> docClass = docRd.getResourceClass();
- assertNotNull("couldn't get doc class", docClass);
- LanguageResource docRes = (LanguageResource) docClass.newInstance();
- assertTrue(
- "instance of doc is wrong type",
- docRes instanceof gate.Document
- );
-
- reg.clear();
- } // testClassIndex()
-
- /** Test type lists */
- public void testTypeLists() throws Exception {
- Set<String> vrs = reg.getVrTypes();
- Set<String> prs = reg.getPrTypes();
- Set<String> lrs = reg.getLrTypes();
-
- assertTrue("wrong number vrs in reg: " + vrs.size(), vrs.size() == 3);
- assertTrue("wrong number prs in reg: " + prs.size(), prs.size() == 5);
- assertTrue("wrong number lrs in reg: " + lrs.size(), lrs.size() == 3);
- } // testTypeLists()
-
- /** Test comments on resources */
- public void testComments() throws Exception {
-
- ResourceData docRd = reg.get("gate.corpora.DocumentImpl");
- assertNotNull("testComments: couldn't find document res data", docRd);
- String comment = docRd.getComment();
- assertTrue(
- "testComments: incorrect or missing COMMENT on document",
- comment != null && comment.equals("GATE document")
- );
- } // testComments()
-
- /** Test parameter defaults */
- public void testParameterDefaults1() throws Exception {
-
- ResourceData docRd = reg.get("gate.corpora.DocumentImpl");
- assertNotNull("Couldn: couldn't find document res data", docRd);
- if(DEBUG) Out.prln(docRd.getParameterList().getInitimeParameters());
- ParameterList paramList = docRd.getParameterList();
- if(DEBUG) Out.prln(docRd);
-
- // runtime params - none for a document
- Iterator<List<Parameter>> iter =
paramList.getRuntimeParameters().iterator();
- assertTrue("Document has runtime params: " + paramList, ! iter.hasNext());
-
- // init time params
- Parameter param = null;
- iter = paramList.getInitimeParameters().iterator();
- int paramDisjNumber = -1;
- while(iter.hasNext()) {
- List<Parameter> paramDisj = iter.next();
- Iterator<Parameter> iter2 = paramDisj.iterator();
- paramDisjNumber++;
-
- while(iter2.hasNext()) {
- param = iter2.next();
-
- switch(paramDisjNumber) {
- case 0:
- assertTrue(
- "Doc param 0 wrong type: " + param.getTypeName(),
- param.getTypeName().equals("java.lang.String")
- );
- assertTrue(
- "Doc param 0 wrong name: " + param.getName(),
- param.getName().equals("sourceUrlName")
- );
- Object defaultValue = param.calculateDefaultValue();
- assertTrue(
- "Doc param 0 default should be null but was: " + defaultValue,
- defaultValue == null
- );
- break;
- case 1:
- assertTrue(
- "Doc param 1 wrong name: " + param.getName(),
- param.getName().equals(Document.DOCUMENT_ENCODING_PARAMETER_NAME)
- );
- break;
- case 2:
- assertTrue(
- "Doc param 2 wrong name: " + param.getName(),
-
param.getName().equals(Document.DOCUMENT_START_OFFSET_PARAMETER_NAME)
- );
- break;
- case 3:
- assertTrue(
- "Doc param 3 wrong name: " + param.getName(),
-
param.getName().equals(Document.DOCUMENT_END_OFFSET_PARAMETER_NAME)
- );
- break;
- default:
- //fail("Doc has more than 4 params; 5th is: " + param);
- // don't fail if document has more than 4 params - it now pulls in
- // extra ones from the @CreoleParameter annotations
- } // switch
- }
- }
-
- } // testParameterDefaults1()
-
- /** Test parameter defaults (2) */
- public void testParameterDefaults2() throws Exception {
-
- ResourceData rd = reg.get("testpkg.PrintOutTokens");
- assertNotNull("Couldn't find testpkg.POT res data", rd);
-
- // create a document, so that the parameter default will pick it up
- Factory.newDocument(new
URL(TestDocument.getTestServerName()+"tests/doc0.html"));
-
- ParameterList paramList = rd.getParameterList();
- if(DEBUG) Out.prln(rd);
-
- // init time params - none for this one
- Iterator<List<Parameter>> iter =
paramList.getInitimeParameters().iterator();
- assertTrue("POT has initime params: " + paramList, ! iter.hasNext());
-
- // runtime params
- Parameter param = null;
- iter = paramList.getRuntimeParameters().iterator();
- int paramDisjNumber = -1;
- while(iter.hasNext()) {
- List<Parameter> paramDisj = iter.next();
- Iterator<Parameter> iter2 = paramDisj.iterator();
- paramDisjNumber++;
-
- while(iter2.hasNext()) {
- param = iter2.next();
-
- switch(paramDisjNumber) {
- case 0:
- assertTrue(
- "POT param 0 wrong type: " + param.getTypeName(),
- param.getTypeName().equals("gate.corpora.DocumentImpl")
- );
- assertTrue(
- "POT param 0 wrong name: " + param.getName(),
- param.getName().equals("document")
- );
- Object defaultValue = param.calculateDefaultValue();
- assertNull(
- "POT param 0 default should be null",
- defaultValue
- );
- break;
- default:
- fail("POT has more than 1 param; 2nd is: " + param);
- } // switch
- }
- }
-
- } // testParameterDefaults2()
-
- /** Test param as lists*/
- public void testParamAsLists() throws Exception{
- ResourceData rd = reg.get("testpkg.TestPR3");
- assertNotNull("Couldn: couldn't find testPR3 res data", rd);
-
- ParameterList paramList = rd.getParameterList();
- // runtime params - none for a document
- List<List<Parameter>> runTime = paramList.getRuntimeParameters();
- assertTrue("PR3 should have 4 runtime params: " + paramList,
runTime.size()==4);
- }// End testParamAsLists();
-
- /** Test parameters */
- public void testParameters() throws Exception {
-
- ResourceData docRd = reg.get("gate.corpora.DocumentImpl");
- assertNotNull("Couldn: couldn't find document res data", docRd);
-
- ParameterList paramList = docRd.getParameterList();
- if(DEBUG) Out.prln(docRd);
-
- // runtime params - none for a document
- Iterator<List<Parameter>> iter =
paramList.getRuntimeParameters().iterator();
- assertTrue("Document has runtime params: " + paramList, ! iter.hasNext());
-
- // init time params
- Parameter param = null;
- List<List<Parameter>> initimeParams = paramList.getInitimeParameters();
- // only check the four parameters we can control in tests/creole.xml
- // there are more parameters after the fourth, but these come from
- // @CreoleParameter annotations so we can't reliably control for them
- // in this test
- for(int paramDisjNumber = 0; paramDisjNumber < 4; paramDisjNumber++) {
- List<Parameter> paramDisj = initimeParams.get(paramDisjNumber);
- Iterator<Parameter> iter2 = paramDisj.iterator();
-
- int paramDisjLen = paramDisj.size();
- assertTrue(
- "param disj wrong length: " + paramDisjLen,
- paramDisjLen == 1
- );
-
- while(iter2.hasNext()) {
- param = iter2.next();
-
- switch(paramDisjNumber) {
- case 0:
- assertTrue(
- "Doc param 0 wrong type: " + param.getTypeName(),
- param.getTypeName().equals("java.lang.String")
- );
- assertTrue(
- "Doc param 0 wrong name: " + param.getName(),
- param.getName().equals("sourceUrlName")
- );
- Object defaultValue = param.calculateDefaultValue();
- assertTrue(
- "Doc param 0 default should be null but was: " + defaultValue,
- defaultValue == null
- );
- break;
- case 1:
- assertTrue(
- "Doc param 1 wrong name: " + param.getName(),
- param.getName().equals(Document.DOCUMENT_ENCODING_PARAMETER_NAME)
- );
- break;
- case 2:
- assertTrue(
- "Doc param 2 wrong name: " + param.getName(),
-
param.getName().equals(Document.DOCUMENT_START_OFFSET_PARAMETER_NAME)
- );
- defaultValue = param.getDefaultValue();
- break;
- case 3:
- assertTrue(
- "Doc param 3 wrong name: " + param.getName(),
-
param.getName().equals(Document.DOCUMENT_END_OFFSET_PARAMETER_NAME)
- );
- break;
- default:
- // can't be reached
- } // switch
- }
- }
-
- } // testParameters()
-
- /** Test default run() on processing resources */
- public void testDefaultRun() throws Exception {
- @SuppressWarnings("serial")
- ProcessingResource defaultPr = new AbstractProcessingResource() {
- };
- boolean gotExceptionAsExpected = false;
- try {
- defaultPr.execute();
- } catch(ExecutionException e) {
- gotExceptionAsExpected = true;
- }
-
- assertTrue("check should have thrown exception", gotExceptionAsExpected);
- } // testDefaultRun()
-
- /** Test arbitrary metadata elements on resources */
- public void testArbitraryMetadata() throws Exception {
-
- ResourceData docRd = reg.get("gate.corpora.DocumentImpl");
- assertNotNull("testArbitraryMetadata: couldn't find doc res data", docRd);
- FeatureMap features = docRd.getFeatures();
- String comment = (String) features.get("FUNKY-METADATA-THAING");
- assertTrue(
- "testArbitraryMetadata: incorrect FUNKY-METADATA-THAING on document",
- comment != null && comment.equals("hubba hubba")
- );
- } // testArbitraryMetadata()
-
- /** Test resource introspection */
- @SuppressWarnings("unused")
- public void testIntrospection() throws Exception {
- // get the gate.Document resource and its class
- ResourceData docRd = reg.get("gate.corpora.DocumentImpl");
- assertNotNull("couldn't find document res data (2)", docRd);
- Class<?> resClass = docRd.getResourceClass();
-
- // get the beaninfo and property descriptors for the resource
- BeanInfo docBeanInfo = Introspector.getBeanInfo(resClass, Object.class);
- PropertyDescriptor[] propDescrs = docBeanInfo.getPropertyDescriptors();
-
- // print all the properties in the reource's bean info;
- // remember the setFeatures method
- Method setFeaturesMethod = null;
- for(int i = 0; i<propDescrs.length; i++) {
- Method getMethodDescr = null;
- Method setMethodDescr = null;
- Class<?> propClass = null;
-
- PropertyDescriptor propDescr = propDescrs[i];
- propClass = propDescr.getPropertyType();
- getMethodDescr = propDescr.getReadMethod();
- setMethodDescr = propDescr.getWriteMethod();
-
- if(
- setMethodDescr != null &&
- setMethodDescr.getName().equals("setFeatures")
- )
- setFeaturesMethod = setMethodDescr;
-
- if(DEBUG) printProperty(propDescrs[i]);
- }
-
- // try setting the features property
- // invoke(Object obj, Object[] args)
- LanguageResource res = (LanguageResource) resClass.newInstance();
- FeatureMap feats = Factory.newFeatureMap();
- feats.put("things are sunny in sunny countries", "aren't they?");
- Object[] args = new Object[1];
- args[0] = feats;
- setFeaturesMethod.invoke(res, args);
- assertTrue(
- "features not added to resource properly",
- res.getFeatures().get("things are sunny in sunny countries")
- .equals("aren't they?")
- );
- } // testIntrospection
-
- /** Test the Factory resource creation provisions */
- public void testFactory() throws Exception {
- FeatureMap params = Factory.newFeatureMap();
- params.put("features", Factory.newFeatureMap());
- params.put(Document.DOCUMENT_URL_PARAMETER_NAME, new
URL(TestDocument.getTestServerName()+"tests/doc0.html"));
- Resource res =
- Factory.createResource("gate.corpora.DocumentImpl", params);
-
- assertNotNull("unable to create document", res);
- } // testFactory
-
- /** Utility method to print out the values of a property descriptor
- * @see java.beans.PropertyDescriptor
- */
- public static void printProperty(PropertyDescriptor prop) {
- Class<?> propClass = prop.getPropertyType();
- Method getMethodDescr = prop.getReadMethod();
- Method setMethodDescr = prop.getWriteMethod();
- Out.pr("prop dispname= " + prop.getDisplayName() + "; ");
- Out.pr("prop type name= " + propClass.getName() + "; ");
- if(getMethodDescr != null)
- Out.pr("get meth name= " + getMethodDescr.getName() + "; ");
- if(setMethodDescr != null)
- Out.pr("set meth name= " + setMethodDescr.getName() + "; ");
- Out.prln();
- } // printProperty
-
- /** Example of what bean info classes do.
- * If this was a public class in gate.corpora it would be used
- * by the beans Introspector to generation bean info for the
- * gate.corpora.DocumentImpl class. It inherits from SimpleBeanInfo
- * whose default behaviour is to return null for the various methods;
- * this tells the Introspector to do its own investigations.
- */
- class DocumentImplBeanInfo extends SimpleBeanInfo {
-
- /** Override the SimpleBeanInfo behaviour and return a 0-length
- * array of properties; this will be passed on by the Introspector,
- * the effect being to block info on the properties of the bean.
- */
- @Override
- public PropertyDescriptor[] getPropertyDescriptors() {
- return new PropertyDescriptor[0];
- } // getPropertyDescriptors
-
- } // DocumentImplBeanInfo
-
- /** Test suite routine for the test runner */
- public static Test suite() {
- return new TestSuite(TestCreole.class);
- } // suite
-
-} // class TestCreole
Copied:
gate/branches/sawdust2/gate-core/src/test/java/gate/creole/TestCreole.java
(from rev 19623,
gate/branches/sawdust2/gate-core/src/test/disabled/gate/creole/TestCreole.java)
===================================================================
--- gate/branches/sawdust2/gate-core/src/test/java/gate/creole/TestCreole.java
(rev 0)
+++ gate/branches/sawdust2/gate-core/src/test/java/gate/creole/TestCreole.java
2016-10-04 09:25:59 UTC (rev 19624)
@@ -0,0 +1,696 @@
+/*
+ * TestCreole.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, 16/Mar/00
+ *
+ * $Id$
+ */
+
+package gate.creole;
+
+import java.beans.BeanInfo;
+import java.beans.Introspector;
+import java.beans.PropertyDescriptor;
+import java.beans.SimpleBeanInfo;
+import java.lang.reflect.Method;
+import java.net.URL;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+
+import gate.CreoleRegister;
+import gate.Document;
+import gate.Factory;
+import gate.FeatureMap;
+import gate.Gate;
+import gate.LanguageResource;
+import gate.ProcessingResource;
+import gate.Resource;
+import gate.corpora.TestDocument;
+import gate.util.GateException;
+import gate.util.Out;
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+/** CREOLE test class
+ */
+public class TestCreole extends TestCase
+{
+ /** Debug flag */
+ private static final boolean DEBUG = false;
+
+ /** Construction */
+ public TestCreole(String name) throws GateException { super(name); }
+
+ /** Local shorthand for the CREOLE register */
+ private CreoleRegister reg;
+
+ /** Fixture set up */
+ @Override
+ public void setUp() throws Exception {
+ // Initialise the GATE library and creole register
+ Gate.init();
+
+ // clear the register and the creole directory set
+ reg = Gate.getCreoleRegister();
+ reg.clear();
+
+ // find a URL for finding test files and add to the directory set
+ URL testUrl = new URL(TestDocument.getTestServerName()+"tests/");
+ reg.registerDirectories(testUrl);
+
+ if(DEBUG) {
+ Iterator<ResourceData> iter = reg.values().iterator();
+ while(iter.hasNext()) Out.println(iter.next());
+ }
+ } // setUp
+
+ /** Put things back as they should be after running tests
+ * (reinitialise the CREOLE register).
+ */
+ @Override
+ public void tearDown() throws Exception {
+ reg.clear();
+ Gate.init();
+ } // tearDown
+
+ /** Test the getInstances methods on CreoleRegister */
+ public void testInstanceLists() throws Exception {
+ // misc locals
+ List<? extends Resource> l;
+ CreoleRegister cr = Gate.getCreoleRegister();
+ int numLrInstances = 0;
+
+ // The only instances of any type should be autoloading ones
+ l = cr.getVrInstances();
+ if(! allAutoloaders(l))
+ fail(" non-autoloading resources already present (1)");
+ l = cr.getLrInstances();
+ numLrInstances = l.size();
+ if(! allAutoloaders(l))
+ fail(" non-autoloading resources already present (2)");
+ l = cr.getPrInstances();
+ if(! allAutoloaders(l))
+ fail(" non-autoloading resources already present (3)");
+
+ // Create an LR
+ FeatureMap params = Factory.newFeatureMap();
+ params.put("features", Factory.newFeatureMap());
+ params.put(Document.DOCUMENT_URL_PARAMETER_NAME, new
URL(TestDocument.getTestServerName()+"tests/doc0.html"));
+ Factory.createResource("gate.corpora.DocumentImpl", params);
+
+ // lr instances list should be one longer now
+ if(! (cr.getLrInstances().size() == numLrInstances + 1))
+ fail("wrong number of LRs");
+
+ // Create another LR
+ params = Factory.newFeatureMap();
+ params.put("features", Factory.newFeatureMap());
+ params.put(Document.DOCUMENT_URL_PARAMETER_NAME, new
URL(TestDocument.getTestServerName()+"tests/doc0.html"));
+ Factory.createResource("gate.corpora.DocumentImpl", params);
+
+ // lr instances list should be two longer now
+ if(! (cr.getLrInstances().size() == numLrInstances + 2))
+ fail("wrong number of LRs");
+
+ // we should have two instances of type document
+ l = cr.getLrInstances("gate.corpora.DocumentImpl");
+ if(l.size() != 2)
+ fail("wrong number of documents");
+ } // testInstanceLists
+
+
+ /** Test view registration */
+ public void testViews() throws Exception {
+ List<String> smallViews1 =
+ reg.getSmallVRsForResource("gate.persist.SerialDataStore");
+ String className1 = new String("");
+ if (smallViews1!= null && smallViews1.size()>0)
+ className1 = smallViews1.get(0);
+ assertTrue(
+ "Found "+className1+
+ " as small viewer for gate.persist.SerialDataStore, "+
+ "instead of gate.gui.SerialDatastoreViewer",
+ smallViews1.size() == 1 &&
+ "gate.gui.SerialDatastoreViewer".equals(className1)
+ );
+
+ List<String> largeViews1 =
+ reg.getLargeVRsForResource("gate.Corpus");
+ assertTrue(
+ "Found "+largeViews1.size()+" wich are " +largeViews1 +
+ " as large viewers for gate.Corpus, "+
+ "instead of 1 which is [gate.gui.CorpusEditor]",
+ largeViews1.size() == 1
+ );
+
+ List<String> largeViews2 =
+ reg.getLargeVRsForResource("gate.Document");
+ assertTrue(
+ "Found "+largeViews2.size()+" wich are " +largeViews2 +
+ " as large viewers for gate.Document, "+
+ "instead of 0",
+ largeViews2.size() == 0
+ );
+
+ List<String> annotViews1 =
+ reg.getAnnotationVRs();
+ assertTrue(
+ "Found "+annotViews1.size()+" wich are " +annotViews1 +
+ " as annotation viewers for all types annotations, "+
+ "instead of 0",
+ annotViews1.size() == 0
+ );
+ } // testViews()
+
+ /** Utility method to check that a list of resources are all
+ * auto-loading.
+ */
+ protected boolean allAutoloaders(List<? extends Resource> l) {
+ if(l != null) {
+ Resource res = null;
+ ResourceData resData = null;
+ CreoleRegister cr = Gate.getCreoleRegister();
+ Iterator<? extends Resource> iter = l.iterator();
+ while(iter.hasNext()) {
+ res = iter.next();
+ if(DEBUG) Out.prln(res);
+ resData = cr.get(res.getClass().getName());
+ if(DEBUG) Out.prln(resData);
+ if(! resData.isAutoLoading())
+ return false;
+ }
+ }
+
+ return true;
+ } // allAutoloaders
+
+ /** Test resource discovery */
+ public void testDiscovery() throws Exception {
+
+ CreoleRegister reg = Gate.getCreoleRegister();
+ if(DEBUG) {
+ Iterator<ResourceData> iter = reg.values().iterator();
+ while(iter.hasNext()) Out.println(iter.next());
+ }
+
+ //ResourceData rd = reg.get("gate.creole.tokeniser.DefaultTokeniser");
+ //assertNotNull("couldn't find unicode tok in register of resources", rd);
+ //assertTrue(rd.getName().equals("ANNIE Unicode Tokeniser"));
+
+ String docFormatName = "gate.corpora.XmlDocumentFormat";
+ ResourceData xmlDocFormatRD = reg.get(docFormatName);
+ assertTrue(xmlDocFormatRD.getName().equals("Sheffield XML Document
Format"));
+ assertTrue(xmlDocFormatRD.isAutoLoading());
+
+ ResourceData rd = reg.get("testpkg.TestPR1");
+ assertTrue(rd.getJarFileName().equals("TestResources.jar"));
+ } // testDiscovery()
+
+ /** Test resource metadata */
+ public void testMetadata() throws Exception {
+
+ // get some res data from the register
+ ResourceData pr1rd = reg.get("testpkg.TestPR1");
+ ResourceData pr2rd = reg.get("testpkg.TestPR2");
+ assertTrue(pr1rd != null & pr2rd != null);
+ assertTrue(pr2rd.getName().equals("Sheffield Test PR 2"));
+
+ // checks values of parameters of param0 in test pr 1
+ assertTrue(pr1rd.getClassName().equals("testpkg.TestPR1"));
+ Iterator<List<Parameter>> iter =
pr1rd.getParameterList().getRuntimeParameters().iterator();
+ Iterator<Parameter> iter2 = null;
+ Parameter param = null;
+ while(iter.hasNext()) {
+ iter2 = iter.next().iterator();
+ while(iter2.hasNext()) {
+ param = iter2.next();
+ if(param.typeName.equals("param0"))
+ break;
+ }
+ if(param.typeName.equals("param0"))
+ break;
+ }
+
+ assertTrue("param0 was null", param != null);
+ assertTrue(param.typeName.equals("java.lang.String"));
+ assertTrue(param.optional);
+ assertTrue(! param.runtime);
+ assertTrue(param.comment == null);
+ assertTrue(param.name.equals("thing"));
+
+ reg.clear();
+ } // testMetadata()
+
+ /** Test TOOLS and PRIVATE attributes */
+ public void testToolsAndPrivate() throws Exception {
+ ResourceData pr3rd = reg.get("testpkg.PrintOutTokens");
+ assertTrue("couldn't get PR3", pr3rd != null);
+ assertTrue("PR3 not a tool", pr3rd.isTool());
+ if(DEBUG) Out.prln(pr3rd.getFeatures());
+
+ String docFormatName = "gate.corpora.XmlDocumentFormat";
+ ResourceData xmlDocFormatRD = reg.get(docFormatName);
+ assertTrue("Xml doc format not PRIVATE", xmlDocFormatRD.isPrivate());
+ if(DEBUG) Out.prln(xmlDocFormatRD.getFeatures());
+
+ // this used to test the number of public and private LR
+ // instances known to the creole register, but this is no
+ // longer reliable as extras may (will) be defined by
+ // @CreoleResource annotations.
+
+ } // testToolsAndPrivate()
+
+ /** Test resource loading */
+ public void testLoading() throws Exception {
+
+ // get some res data from the register
+ assertEquals("wrong number of resources in the register: " + reg.size(),
9, reg.size());
+ ResourceData pr1rd = reg.get("testpkg.TestPR1");
+ ResourceData pr2rd = reg.get("testpkg.TestPR2");
+ assertTrue("couldn't find PR1/PR2 res data", pr1rd != null && pr2rd !=
null);
+ assertTrue("wrong name on PR1", pr1rd.getName().equals("Sheffield Test PR
1"));
+
+ // instantiation
+ ProcessingResource pr1 = (ProcessingResource)
+ Factory.createResource("testpkg.TestPR1", Factory.newFeatureMap());
+ ProcessingResource pr2 = (ProcessingResource)
+ Factory.createResource("testpkg.TestPR2", Factory.newFeatureMap());
+
+ // run the beasts
+ FeatureMap pr1features = pr1.getFeatures();
+ FeatureMap pr2features = pr2.getFeatures();
+ assertNotNull("PR1 features are null", pr1features);
+ assertTrue(
+ "PR2 got wrong features: " + pr2features,
+ pr2features != null && pr2features.size() != 1
+ );
+ pr1.execute();
+ pr2.execute();
+ assertTrue(
+ "PR1 feature not present",
+ pr1.getFeatures().get("I").equals("have been run, thankyou")
+ );
+ assertTrue(
+ "PR2 feature not present",
+ pr2.getFeatures().get("I").equals("am in a bad mood")
+ );
+
+ reg.clear();
+ } // testLoading()
+
+ /** Test resource indexing by class */
+ public void testClassIndex() throws Exception {
+
+ ResourceData docRd = reg.get("gate.corpora.DocumentImpl");
+ assertNotNull("couldn't find document res data", docRd);
+ assertTrue(
+ "doc res data has wrong class name",
+ docRd.getClassName().equals("gate.corpora.DocumentImpl")
+ );
+ assertTrue(
+ "doc res data has wrong interface name",
+ docRd.getInterfaceName().equals("gate.Document")
+ );
+
+ Class<?> docClass = docRd.getResourceClass();
+ assertNotNull("couldn't get doc class", docClass);
+ LanguageResource docRes = (LanguageResource) docClass.newInstance();
+ assertTrue(
+ "instance of doc is wrong type",
+ docRes instanceof gate.Document
+ );
+
+ reg.clear();
+ } // testClassIndex()
+
+ /** Test type lists */
+ public void testTypeLists() throws Exception {
+ Set<String> vrs = reg.getVrTypes();
+ Set<String> prs = reg.getPrTypes();
+ Set<String> lrs = reg.getLrTypes();
+
+ assertTrue("wrong number vrs in reg: " + vrs.size(), vrs.size() == 2);
+ assertTrue("wrong number prs in reg: " + prs.size(), prs.size() == 4);
+ assertTrue("wrong number lrs in reg: " + lrs.size(), lrs.size() == 3);
+ } // testTypeLists()
+
+ /** Test comments on resources */
+ public void testComments() throws Exception {
+
+ ResourceData docRd = reg.get("gate.corpora.DocumentImpl");
+ assertNotNull("testComments: couldn't find document res data", docRd);
+ String comment = docRd.getComment();
+ assertTrue(
+ "testComments: incorrect or missing COMMENT on document",
+ comment != null && comment.equals("GATE document")
+ );
+ } // testComments()
+
+ /** Test parameter defaults */
+ public void testParameterDefaults1() throws Exception {
+
+ ResourceData docRd = reg.get("gate.corpora.DocumentImpl");
+ assertNotNull("Couldn: couldn't find document res data", docRd);
+ if(DEBUG) Out.prln(docRd.getParameterList().getInitimeParameters());
+ ParameterList paramList = docRd.getParameterList();
+ if(DEBUG) Out.prln(docRd);
+
+ // runtime params - none for a document
+ Iterator<List<Parameter>> iter =
paramList.getRuntimeParameters().iterator();
+ assertTrue("Document has runtime params: " + paramList, ! iter.hasNext());
+
+ // init time params
+ Parameter param = null;
+ iter = paramList.getInitimeParameters().iterator();
+ int paramDisjNumber = -1;
+ while(iter.hasNext()) {
+ List<Parameter> paramDisj = iter.next();
+ Iterator<Parameter> iter2 = paramDisj.iterator();
+ paramDisjNumber++;
+
+ while(iter2.hasNext()) {
+ param = iter2.next();
+
+ switch(paramDisjNumber) {
+ case 0:
+ assertTrue(
+ "Doc param 0 wrong type: " + param.getTypeName(),
+ param.getTypeName().equals("java.lang.String")
+ );
+ assertTrue(
+ "Doc param 0 wrong name: " + param.getName(),
+ param.getName().equals("sourceUrlName")
+ );
+ Object defaultValue = param.calculateDefaultValue();
+ assertTrue(
+ "Doc param 0 default should be null but was: " + defaultValue,
+ defaultValue == null
+ );
+ break;
+ case 1:
+ assertTrue(
+ "Doc param 1 wrong name: " + param.getName(),
+ param.getName().equals(Document.DOCUMENT_ENCODING_PARAMETER_NAME)
+ );
+ break;
+ case 2:
+ assertTrue(
+ "Doc param 2 wrong name: " + param.getName(),
+
param.getName().equals(Document.DOCUMENT_START_OFFSET_PARAMETER_NAME)
+ );
+ break;
+ case 3:
+ assertTrue(
+ "Doc param 3 wrong name: " + param.getName(),
+
param.getName().equals(Document.DOCUMENT_END_OFFSET_PARAMETER_NAME)
+ );
+ break;
+ default:
+ //fail("Doc has more than 4 params; 5th is: " + param);
+ // don't fail if document has more than 4 params - it now pulls in
+ // extra ones from the @CreoleParameter annotations
+ } // switch
+ }
+ }
+
+ } // testParameterDefaults1()
+
+ /** Test parameter defaults (2) */
+ public void testParameterDefaults2() throws Exception {
+
+ ResourceData rd = reg.get("testpkg.PrintOutTokens");
+ assertNotNull("Couldn't find testpkg.POT res data", rd);
+
+ // create a document, so that the parameter default will pick it up
+ Factory.newDocument(new
URL(TestDocument.getTestServerName()+"tests/doc0.html"));
+
+ ParameterList paramList = rd.getParameterList();
+ if(DEBUG) Out.prln(rd);
+
+ // init time params - none for this one
+ Iterator<List<Parameter>> iter =
paramList.getInitimeParameters().iterator();
+ assertTrue("POT has initime params: " + paramList, ! iter.hasNext());
+
+ // runtime params
+ Parameter param = null;
+ iter = paramList.getRuntimeParameters().iterator();
+ int paramDisjNumber = -1;
+ while(iter.hasNext()) {
+ List<Parameter> paramDisj = iter.next();
+ Iterator<Parameter> iter2 = paramDisj.iterator();
+ paramDisjNumber++;
+
+ while(iter2.hasNext()) {
+ param = iter2.next();
+
+ switch(paramDisjNumber) {
+ case 0:
+ assertTrue(
+ "POT param 0 wrong type: " + param.getTypeName(),
+ param.getTypeName().equals("gate.corpora.DocumentImpl")
+ );
+ assertTrue(
+ "POT param 0 wrong name: " + param.getName(),
+ param.getName().equals("document")
+ );
+ Object defaultValue = param.calculateDefaultValue();
+ assertNull(
+ "POT param 0 default should be null",
+ defaultValue
+ );
+ break;
+ default:
+ fail("POT has more than 1 param; 2nd is: " + param);
+ } // switch
+ }
+ }
+
+ } // testParameterDefaults2()
+
+ /** Test param as lists*/
+ public void testParamAsLists() throws Exception{
+ ResourceData rd = reg.get("testpkg.TestPR3");
+ assertNotNull("Couldn: couldn't find testPR3 res data", rd);
+
+ ParameterList paramList = rd.getParameterList();
+ // runtime params - none for a document
+ List<List<Parameter>> runTime = paramList.getRuntimeParameters();
+ assertTrue("PR3 should have 4 runtime params: " + paramList,
runTime.size()==4);
+ }// End testParamAsLists();
+
+ /** Test parameters */
+ public void testParameters() throws Exception {
+
+ ResourceData docRd = reg.get("gate.corpora.DocumentImpl");
+ assertNotNull("Couldn: couldn't find document res data", docRd);
+
+ ParameterList paramList = docRd.getParameterList();
+ if(DEBUG) Out.prln(docRd);
+
+ // runtime params - none for a document
+ Iterator<List<Parameter>> iter =
paramList.getRuntimeParameters().iterator();
+ assertTrue("Document has runtime params: " + paramList, ! iter.hasNext());
+
+ // init time params
+ Parameter param = null;
+ List<List<Parameter>> initimeParams = paramList.getInitimeParameters();
+ // only check the four parameters we can control in tests/creole.xml
+ // there are more parameters after the fourth, but these come from
+ // @CreoleParameter annotations so we can't reliably control for them
+ // in this test
+ for(int paramDisjNumber = 0; paramDisjNumber < 4; paramDisjNumber++) {
+ List<Parameter> paramDisj = initimeParams.get(paramDisjNumber);
+ Iterator<Parameter> iter2 = paramDisj.iterator();
+
+ int paramDisjLen = paramDisj.size();
+ assertTrue(
+ "param disj wrong length: " + paramDisjLen,
+ paramDisjLen == 1
+ );
+
+ while(iter2.hasNext()) {
+ param = iter2.next();
+
+ switch(paramDisjNumber) {
+ case 0:
+ assertTrue(
+ "Doc param 0 wrong type: " + param.getTypeName(),
+ param.getTypeName().equals("java.lang.String")
+ );
+ assertTrue(
+ "Doc param 0 wrong name: " + param.getName(),
+ param.getName().equals("sourceUrlName")
+ );
+ Object defaultValue = param.calculateDefaultValue();
+ assertTrue(
+ "Doc param 0 default should be null but was: " + defaultValue,
+ defaultValue == null
+ );
+ break;
+ case 1:
+ assertTrue(
+ "Doc param 1 wrong name: " + param.getName(),
+ param.getName().equals(Document.DOCUMENT_ENCODING_PARAMETER_NAME)
+ );
+ break;
+ case 2:
+ assertTrue(
+ "Doc param 2 wrong name: " + param.getName(),
+
param.getName().equals(Document.DOCUMENT_START_OFFSET_PARAMETER_NAME)
+ );
+ defaultValue = param.getDefaultValue();
+ break;
+ case 3:
+ assertTrue(
+ "Doc param 3 wrong name: " + param.getName(),
+
param.getName().equals(Document.DOCUMENT_END_OFFSET_PARAMETER_NAME)
+ );
+ break;
+ default:
+ // can't be reached
+ } // switch
+ }
+ }
+
+ } // testParameters()
+
+ /** Test default run() on processing resources */
+ public void testDefaultRun() throws Exception {
+ @SuppressWarnings("serial")
+ ProcessingResource defaultPr = new AbstractProcessingResource() {
+ };
+ boolean gotExceptionAsExpected = false;
+ try {
+ defaultPr.execute();
+ } catch(ExecutionException e) {
+ gotExceptionAsExpected = true;
+ }
+
+ assertTrue("check should have thrown exception", gotExceptionAsExpected);
+ } // testDefaultRun()
+
+ /** Test arbitrary metadata elements on resources */
+ public void testArbitraryMetadata() throws Exception {
+
+ ResourceData docRd = reg.get("gate.corpora.DocumentImpl");
+ assertNotNull("testArbitraryMetadata: couldn't find doc res data", docRd);
+ FeatureMap features = docRd.getFeatures();
+ String comment = (String) features.get("FUNKY-METADATA-THAING");
+ assertTrue(
+ "testArbitraryMetadata: incorrect FUNKY-METADATA-THAING on document",
+ comment != null && comment.equals("hubba hubba")
+ );
+ } // testArbitraryMetadata()
+
+ /** Test resource introspection */
+ @SuppressWarnings("unused")
+ public void testIntrospection() throws Exception {
+ // get the gate.Document resource and its class
+ ResourceData docRd = reg.get("gate.corpora.DocumentImpl");
+ assertNotNull("couldn't find document res data (2)", docRd);
+ Class<?> resClass = docRd.getResourceClass();
+
+ // get the beaninfo and property descriptors for the resource
+ BeanInfo docBeanInfo = Introspector.getBeanInfo(resClass, Object.class);
+ PropertyDescriptor[] propDescrs = docBeanInfo.getPropertyDescriptors();
+
+ // print all the properties in the reource's bean info;
+ // remember the setFeatures method
+ Method setFeaturesMethod = null;
+ for(int i = 0; i<propDescrs.length; i++) {
+ Method getMethodDescr = null;
+ Method setMethodDescr = null;
+ Class<?> propClass = null;
+
+ PropertyDescriptor propDescr = propDescrs[i];
+ propClass = propDescr.getPropertyType();
+ getMethodDescr = propDescr.getReadMethod();
+ setMethodDescr = propDescr.getWriteMethod();
+
+ if(
+ setMethodDescr != null &&
+ setMethodDescr.getName().equals("setFeatures")
+ )
+ setFeaturesMethod = setMethodDescr;
+
+ if(DEBUG) printProperty(propDescrs[i]);
+ }
+
+ // try setting the features property
+ // invoke(Object obj, Object[] args)
+ LanguageResource res = (LanguageResource) resClass.newInstance();
+ FeatureMap feats = Factory.newFeatureMap();
+ feats.put("things are sunny in sunny countries", "aren't they?");
+ Object[] args = new Object[1];
+ args[0] = feats;
+ setFeaturesMethod.invoke(res, args);
+ assertTrue(
+ "features not added to resource properly",
+ res.getFeatures().get("things are sunny in sunny countries")
+ .equals("aren't they?")
+ );
+ } // testIntrospection
+
+ /** Test the Factory resource creation provisions */
+ public void testFactory() throws Exception {
+ FeatureMap params = Factory.newFeatureMap();
+ params.put("features", Factory.newFeatureMap());
+ params.put(Document.DOCUMENT_URL_PARAMETER_NAME, new
URL(TestDocument.getTestServerName()+"tests/doc0.html"));
+ Resource res =
+ Factory.createResource("gate.corpora.DocumentImpl", params);
+
+ assertNotNull("unable to create document", res);
+ } // testFactory
+
+ /** Utility method to print out the values of a property descriptor
+ * @see java.beans.PropertyDescriptor
+ */
+ public static void printProperty(PropertyDescriptor prop) {
+ Class<?> propClass = prop.getPropertyType();
+ Method getMethodDescr = prop.getReadMethod();
+ Method setMethodDescr = prop.getWriteMethod();
+ Out.pr("prop dispname= " + prop.getDisplayName() + "; ");
+ Out.pr("prop type name= " + propClass.getName() + "; ");
+ if(getMethodDescr != null)
+ Out.pr("get meth name= " + getMethodDescr.getName() + "; ");
+ if(setMethodDescr != null)
+ Out.pr("set meth name= " + setMethodDescr.getName() + "; ");
+ Out.prln();
+ } // printProperty
+
+ /** Example of what bean info classes do.
+ * If this was a public class in gate.corpora it would be used
+ * by the beans Introspector to generation bean info for the
+ * gate.corpora.DocumentImpl class. It inherits from SimpleBeanInfo
+ * whose default behaviour is to return null for the various methods;
+ * this tells the Introspector to do its own investigations.
+ */
+ class DocumentImplBeanInfo extends SimpleBeanInfo {
+
+ /** Override the SimpleBeanInfo behaviour and return a 0-length
+ * array of properties; this will be passed on by the Introspector,
+ * the effect being to block info on the properties of the bean.
+ */
+ @Override
+ public PropertyDescriptor[] getPropertyDescriptors() {
+ return new PropertyDescriptor[0];
+ } // getPropertyDescriptors
+
+ } // DocumentImplBeanInfo
+
+ /** Test suite routine for the test runner */
+ public static Test suite() {
+ return new TestSuite(TestCreole.class);
+ } // suite
+
+} // class TestCreole
Modified:
gate/branches/sawdust2/gate-core/src/test/resources/gate/resources/gate.ac.uk/tests/creole.xml
===================================================================
---
gate/branches/sawdust2/gate-core/src/test/resources/gate/resources/gate.ac.uk/tests/creole.xml
2016-10-04 07:17:31 UTC (rev 19623)
+++
gate/branches/sawdust2/gate-core/src/test/resources/gate/resources/gate.ac.uk/tests/creole.xml
2016-10-04 09:25:59 UTC (rev 19624)
@@ -45,7 +45,7 @@
</RESOURCE>
</CREOLE>
<!-- creole.xml for tokeniser -->
- <CREOLE>
+ <!-- <CREOLE>
<RESOURCE>
<NAME>ANNIE Unicode Tokeniser</NAME>
<CLASS>gate.creole.tokeniser.DefaultTokeniser</CLASS>
@@ -57,7 +57,7 @@
<PARAMETER NAME="annotationSetName" RUNTIME="true"
COMMENT="The annotation set to be used for the generated annotations"
OPTIONAL="true">java.lang.String</PARAMETER>
<ICON>shefTokeniser</ICON>
</RESOURCE>
- </CREOLE>
+ </CREOLE> -->
<!-- creole.xml for doc formats -->
<CREOLE>
<RESOURCE>
@@ -110,14 +110,13 @@
</GUI>
</RESOURCE>
<!-- VR def for gate Syntax Tree Editor/Viewer -->
- <RESOURCE>
+ <!-- RESOURCE>
<NAME>Syntax tree viewer</NAME>
<CLASS>gate.gui.SyntaxTreeViewer</CLASS>
- <!-- type values can be "large" or "small"-->
<GUI>
<MAIN_VIEWER/>
<ANNOTATION_TYPE_DISPLAYED>Tree</ANNOTATION_TYPE_DISPLAYED>
</GUI>
- </RESOURCE>
+ </RESOURCE> -->
</CREOLE>
</CREOLE-DIRECTORY>
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