|
TestCreole |
|
1 /* 2 * TestCreole.java 3 * 4 * Copyright (c) 1998-2001, The University of Sheffield. 5 * 6 * This file is part of GATE (see http://gate.ac.uk/), and is free 7 * software, licenced under the GNU Library General Public License, 8 * Version 2, June 1991 (in the distribution as file licence.html, 9 * and also available at http://gate.ac.uk/gate/licence.html). 10 * 11 * Hamish Cunningham, 16/Mar/00 12 * 13 * $Id: TestCreole.java,v 1.55 2002/03/06 17:15:39 kalina Exp $ 14 */ 15 16 package gate.creole; 17 18 import java.util.*; 19 import java.io.*; 20 import java.net.*; 21 import java.beans.*; 22 import java.lang.reflect.*; 23 import junit.framework.*; 24 25 import gate.*; 26 import gate.util.*; 27 28 /** CREOLE test class 29 */ 30 public class TestCreole extends TestCase 31 { 32 /** Debug flag */ 33 private static final boolean DEBUG = false; 34 35 /** Construction */ 36 public TestCreole(String name) throws GateException { super(name); } 37 38 /** Local shorthand for the CREOLE register */ 39 private CreoleRegister reg; 40 41 /** Fixture set up */ 42 public void setUp() throws Exception { 43 // Initialise the GATE library and creole register 44 Gate.init(); 45 46 // clear the register and the creole directory set 47 reg = Gate.getCreoleRegister(); 48 reg.clear(); 49 // reg.getDirectories().clear(); 50 51 // find a URL for finding test files and add to the directory set 52 URL testUrl = Gate.getUrl("tests/"); 53 reg.addDirectory(testUrl); 54 55 reg.registerDirectories(); 56 if(DEBUG) { 57 Iterator iter = reg.values().iterator(); 58 while(iter.hasNext()) Out.println(iter.next()); 59 } 60 } // setUp 61 62 /** Put things back as they should be after running tests 63 * (reinitialise the CREOLE register). 64 */ 65 public void tearDown() throws Exception { 66 reg.clear(); 67 Gate.init(); 68 } // tearDown 69 70 /** Test the getInstances methods on CreoleRegister */ 71 public void testInstanceLists() throws Exception { 72 // misc locals 73 List l; 74 CreoleRegister cr = Gate.getCreoleRegister(); 75 Iterator iter; 76 ResourceData resData = null; 77 Resource res = null; 78 int numLrInstances = 0; 79 80 // Get the lists of types 81 Set vrTypes = reg.getVrTypes(); 82 Set prTypes = reg.getPrTypes(); 83 Set lrTypes = reg.getLrTypes(); 84 85 // The only instances of any type should be autoloading ones 86 l = cr.getVrInstances(); 87 if(! allAutoloaders(l)) 88 fail(" non-autoloading resources already present (1)"); 89 l = cr.getLrInstances(); 90 numLrInstances = l.size(); 91 if(! allAutoloaders(l)) 92 fail(" non-autoloading resources already present (2)"); 93 l = cr.getPrInstances(); 94 if(! allAutoloaders(l)) 95 fail(" non-autoloading resources already present (3)"); 96 97 // Create an LR 98 FeatureMap params = Factory.newFeatureMap(); 99 params.put("features", Factory.newFeatureMap()); 100 params.put(Document.DOCUMENT_URL_PARAMETER_NAME, Gate.getUrl("tests/doc0.html") 101 ); 102 res = Factory.createResource("gate.corpora.DocumentImpl", params); 103 104 // lr instances list should be one longer now 105 if(! (cr.getLrInstances().size() == numLrInstances + 1)) 106 fail("wrong number of LRs"); 107 108 // Create another LR 109 params = Factory.newFeatureMap(); 110 params.put("features", Factory.newFeatureMap()); 111 params.put(Document.DOCUMENT_URL_PARAMETER_NAME, Gate.getUrl("tests/doc0.html") 112 ); 113 res = Factory.createResource("gate.corpora.DocumentImpl", params); 114 115 // lr instances list should be two longer now 116 if(! (cr.getLrInstances().size() == numLrInstances + 2)) 117 fail("wrong number of LRs"); 118 119 // we should have two instances of type document 120 l = cr.getLrInstances("gate.corpora.DocumentImpl"); 121 if(l.size() != 2) 122 fail("wrong number of documents"); 123 } // testInstanceLists 124 125 126 /** Test view registration */ 127 public void testViews() throws Exception { 128 List smallViews1 = 129 reg.getSmallVRsForResource("gate.persist.SerialDataStore"); 130 String className1 = new String(""); 131 if (smallViews1!= null && smallViews1.size()>0) 132 className1 = (String)smallViews1.get(0); 133 assertTrue( 134 "Found "+className1+ 135 " as small viewer for gate.persist.SerialDataStore, "+ 136 "instead of gate.gui.SerialDatastoreViewer", 137 smallViews1.size() == 1 && 138 "gate.gui.SerialDatastoreViewer".equals(className1) 139 ); 140 141 List largeViews1 = 142 reg.getLargeVRsForResource("gate.Corpus"); 143 assertTrue( 144 "Found "+largeViews1.size()+" wich are " +largeViews1 + 145 " as large viewers for gate.Corpus, "+ 146 "instead of 2 which are [gate.gui.CorpusEditor, gate.gui.FeaturesEditor]", 147 largeViews1.size() == 2 148 ); 149 150 List largeViews2 = 151 reg.getLargeVRsForResource("gate.Document"); 152 assertTrue( 153 "Found "+largeViews2.size()+" wich are " +largeViews2 + 154 " as large viewers for gate.Document, "+ 155 "instead of 2 which are [gate.gui.DocumentEditor, gate.gui.FeaturesEditor]", 156 largeViews2.size() == 2 157 ); 158 159 List annotViews1 = 160 reg.getAnnotationVRs(); 161 assertTrue( 162 "Found "+annotViews1.size()+" wich are " +annotViews1 + 163 " as annotation viewers for all types annotations, "+ 164 "instead of 2 which are [gate.gui.SchemaAnnotationEditor,"+ 165 " gate.gui.UnrestrictedAnnotationEditor]", 166 annotViews1.size() == 2 167 ); 168 } // testViews() 169 170 /** Utility method to check that a list of resources are all 171 * auto-loading. 172 */ 173 protected boolean allAutoloaders(List l) { 174 if(l != null) { 175 Resource res = null; 176 ResourceData resData = null; 177 CreoleRegister cr = Gate.getCreoleRegister(); 178 Iterator iter = l.iterator(); 179 while(iter.hasNext()) { 180 res = (Resource) iter.next(); 181 if(DEBUG) Out.prln(res); 182 resData = (ResourceData) cr.get(res.getClass().getName()); 183 if(DEBUG) Out.prln(resData); 184 if(! resData.isAutoLoading()) 185 return false; 186 } 187 } 188 189 return true; 190 } // allAutoloaders 191 192 /** Test resource discovery */ 193 public void testDiscovery() throws Exception { 194 195 CreoleRegister reg = Gate.getCreoleRegister(); 196 if(DEBUG) { 197 Iterator iter = reg.values().iterator(); 198 while(iter.hasNext()) Out.println(iter.next()); 199 } 200 201 ResourceData rd = (ResourceData) 202 reg.get("gate.creole.tokeniser.DefaultTokeniser"); 203 assertNotNull("couldn't find unicode tok in register of resources", rd); 204 assertTrue(rd.getName().equals("ANNIE Unicode Tokeniser")); 205 206 String docFormatName = "gate.corpora.XmlDocumentFormat"; 207 ResourceData xmlDocFormatRD = (ResourceData) reg.get(docFormatName); 208 assertTrue(xmlDocFormatRD.getName().equals("Sheffield XML Document Format")); 209 assertTrue(xmlDocFormatRD.isAutoLoading()); 210 assertTrue(xmlDocFormatRD.getJarFileName().equals("ShefDocumentFormats.jar")); 211 } // testDiscovery() 212 213 /** Test resource metadata */ 214 public void testMetadata() throws Exception { 215 216 // get some res data from the register 217 ResourceData pr1rd = (ResourceData) reg.get("testpkg.TestPR1"); 218 ResourceData pr2rd = (ResourceData) reg.get("testpkg.TestPR2"); 219 assertTrue(pr1rd != null & pr2rd != null); 220 assertTrue(pr2rd.getName().equals("Sheffield Test PR 2")); 221 222 // checks values of parameters of param0 in test pr 1 223 assertTrue(pr1rd.getClassName().equals("testpkg.TestPR1")); 224 Iterator iter = pr1rd.getParameterList().getRuntimeParameters().iterator(); 225 Iterator iter2 = null; 226 Parameter param = null; 227 while(iter.hasNext()) { 228 iter2 = ((List) iter.next()).iterator(); 229 while(iter2.hasNext()) { 230 param = (Parameter) iter2.next(); 231 if(param.typeName.equals("param0")) 232 break; 233 } 234 if(param.typeName.equals("param0")) 235 break; 236 } 237 238 assertTrue("param0 was null", param != null); 239 assertTrue(param.typeName.equals("java.lang.String")); 240 assertTrue(param.optional); 241 assertTrue(! param.runtime); 242 assertTrue(param.comment == null); 243 assertTrue(param.name.equals("thing")); 244 245 reg.clear(); 246 } // testMetadata() 247 248 /** Test TOOLS and PRIVATE attributes */ 249 public void testToolsAndPrivate() throws Exception { 250 ResourceData pr3rd = (ResourceData) reg.get("testpkg.PrintOutTokens"); 251 assertTrue("couldn't get PR3", pr3rd != null); 252 assertTrue("PR3 not a tool", pr3rd.isTool()); 253 if(DEBUG) Out.prln(pr3rd.getFeatures()); 254 255 String docFormatName = "gate.corpora.XmlDocumentFormat"; 256 ResourceData xmlDocFormatRD = (ResourceData) reg.get(docFormatName); 257 assertTrue("Xml doc format not PRIVATE", xmlDocFormatRD.isPrivate()); 258 if(DEBUG) Out.prln(xmlDocFormatRD.getFeatures()); 259 260 // Create an LR 261 FeatureMap params = Factory.newFeatureMap(); 262 params.put("features", Factory.newFeatureMap()); 263 params.put(Document.DOCUMENT_URL_PARAMETER_NAME, Gate.getUrl("tests/doc0.html")); 264 Resource res = Factory.createResource("gate.corpora.DocumentImpl", params); 265 266 List publics = reg.getPublicLrInstances(); 267 List allLrs = reg.getLrInstances(); 268 269 assertTrue( 270 "wrong number of public LR instances", 271 publics.size() == 1 && allLrs.size() == 3 272 ); 273 274 if(DEBUG) { 275 Iterator iter = publics.iterator(); 276 Out.prln("publics:"); 277 while(iter.hasNext()) { Out.prln(iter.next()); } 278 iter = allLrs.iterator(); 279 Out.prln("allLrs:"); 280 while(iter.hasNext()) { Out.prln(iter.next()); } 281 } 282 283 } // testToolsAndPrivate() 284 285 /** Test resource loading */ 286 public void testLoading() throws Exception { 287 288 // get some res data from the register 289 assertTrue( 290 "wrong number of resources in the register: " + reg.size(), 291 reg.size() == 15 292 ); 293 ResourceData pr1rd = (ResourceData) reg.get("testpkg.TestPR1"); 294 ResourceData pr2rd = (ResourceData) reg.get("testpkg.TestPR2"); 295 assertTrue("couldn't find PR1/PR2 res data", pr1rd != null && pr2rd != null); 296 assertTrue("wrong name on PR1", pr1rd.getName().equals("Sheffield Test PR 1")); 297 298 // instantiation 299 ProcessingResource pr1 = (ProcessingResource) 300 Factory.createResource("testpkg.TestPR1", Factory.newFeatureMap()); 301 ProcessingResource pr2 = (ProcessingResource) 302 Factory.createResource("testpkg.TestPR2", Factory.newFeatureMap()); 303 304 // run the beasts 305 FeatureMap pr1features = pr1.getFeatures(); 306 FeatureMap pr2features = pr2.getFeatures(); 307 assertNotNull("PR1 features are null", pr1features); 308 assertTrue( 309 "PR2 got wrong features: " + pr2features, 310 pr2features != null || pr2features.size() != 1 311 ); 312 pr1.execute(); 313 pr2.execute(); 314 assertTrue( 315 "PR1 feature not present", 316 pr1.getFeatures().get("I").equals("have been run, thankyou") 317 ); 318 assertTrue( 319 "PR2 feature not present", 320 pr2.getFeatures().get("I").equals("am in a bad mood") 321 ); 322 323 reg.clear(); 324 } // testLoading() 325 326 /** Test resource indexing by class */ 327 public void testClassIndex() throws Exception { 328 329 ResourceData docRd = (ResourceData) reg.get("gate.corpora.DocumentImpl"); 330 assertNotNull("couldn't find document res data", docRd); 331 assertTrue( 332 "doc res data has wrong class name", 333 docRd.getClassName().equals("gate.corpora.DocumentImpl") 334 ); 335 assertTrue( 336 "doc res data has wrong interface name", 337 docRd.getInterfaceName().equals("gate.Document") 338 ); 339 340 Class docClass = docRd.getResourceClass(); 341 assertNotNull("couldn't get doc class", docClass); 342 LanguageResource docRes = (LanguageResource) docClass.newInstance(); 343 assertTrue( 344 "instance of doc is wrong type", 345 docRes instanceof LanguageResource && 346 docRes instanceof gate.Document 347 ); 348 349 reg.clear(); 350 } // testClassIndex() 351 352 /** Test type lists */ 353 public void testTypeLists() throws Exception { 354 Set vrs = reg.getVrTypes(); 355 Set prs = reg.getPrTypes(); 356 Set lrs = reg.getLrTypes(); 357 358 assertTrue("wrong number vrs in reg: " + vrs.size(), vrs.size() == 7); 359 assertTrue("wrong number prs in reg: " + prs.size(), prs.size() == 5); 360 assertTrue("wrong number lrs in reg: " + lrs.size(), lrs.size() == 3); 361 } // testTypeLists() 362 363 /** Test comments on resources */ 364 public void testComments() throws Exception { 365 366 ResourceData docRd = (ResourceData) reg.get("gate.corpora.DocumentImpl"); 367 assertNotNull("testComments: couldn't find document res data", docRd); 368 String comment = docRd.getComment(); 369 assertTrue( 370 "testComments: incorrect or missing COMMENT on document", 371 comment != null && comment.equals("GATE document") 372 ); 373 } // testComments() 374 375 /** Test parameter defaults */ 376 public void testParameterDefaults1() throws Exception { 377 378 ResourceData docRd = (ResourceData) reg.get("gate.corpora.DocumentImpl"); 379 assertNotNull("Couldn: couldn't find document res data", docRd); 380 if(DEBUG) Out.prln(docRd.getParameterList().getInitimeParameters()); 381 ParameterList paramList = docRd.getParameterList(); 382 if(DEBUG) Out.prln(docRd); 383 384 // runtime params - none for a document 385 Iterator iter = paramList.getRuntimeParameters().iterator(); 386 assertTrue("Document has runtime params: " + paramList, ! iter.hasNext()); 387 388 // init time params 389 Parameter param = null; 390 iter = paramList.getInitimeParameters().iterator(); 391 int paramDisjNumber = -1; 392 while(iter.hasNext()) { 393 List paramDisj = (List) iter.next(); 394 Iterator iter2 = paramDisj.iterator(); 395 paramDisjNumber++; 396 397 for(int i=0; iter2.hasNext(); i++) { 398 param = (Parameter) iter2.next(); 399 400 switch(paramDisjNumber) { 401 case 0: 402 assertTrue( 403 "Doc param 0 wrong type: " + param.getTypeName(), 404 param.getTypeName().equals("java.lang.String") 405 ); 406 assertTrue( 407 "Doc param 0 wrong name: " + param.getName(), 408 param.getName().equals("sourceUrlName") 409 ); 410 Object defaultValue = param.calculateDefaultValue(); 411 assertTrue( 412 "Doc param 0 default should be null but was: " + defaultValue, 413 defaultValue == null 414 ); 415 break; 416 case 1: 417 assertTrue( 418 "Doc param 1 wrong name: " + param.getName(), 419 param.getName().equals(Document.DOCUMENT_ENCODING_PARAMETER_NAME) 420 ); 421 break; 422 case 2: 423 assertTrue( 424 "Doc param 2 wrong name: " + param.getName(), 425 param.getName().equals(Document.DOCUMENT_START_OFFSET_PARAMETER_NAME) 426 ); 427 break; 428 case 3: 429 assertTrue( 430 "Doc param 3 wrong name: " + param.getName(), 431 param.getName().equals(Document.DOCUMENT_END_OFFSET_PARAMETER_NAME) 432 ); 433 break; 434 default: 435 fail("Doc has more than 4 params; 5th is: " + param); 436 } // switch 437 } 438 } 439 440 } // testParameterDefaults1() 441 442 /** Test parameter defaults (2) */ 443 public void testParameterDefaults2() throws Exception { 444 445 ResourceData rd = (ResourceData) reg.get("testpkg.PrintOutTokens"); 446 assertNotNull("Couldn't find testpkg.POT res data", rd); 447 448 // create a document, so that the parameter default will pick it up 449 Factory.newDocument(Gate.getUrl("tests/doc0.html")); 450 451 ParameterList paramList = rd.getParameterList(); 452 if(DEBUG) Out.prln(rd); 453 454 // init time params - none for this one 455 Iterator iter = paramList.getInitimeParameters().iterator(); 456 assertTrue("POT has initime params: " + paramList, ! iter.hasNext()); 457 458 // runtime params 459 Parameter param = null; 460 iter = paramList.getRuntimeParameters().iterator(); 461 int paramDisjNumber = -1; 462 while(iter.hasNext()) { 463 List paramDisj = (List) iter.next(); 464 Iterator iter2 = paramDisj.iterator(); 465 paramDisjNumber++; 466 467 for(int i=0; iter2.hasNext(); i++) { 468 param = (Parameter) iter2.next(); 469 470 switch(paramDisjNumber) { 471 case 0: 472 assertTrue( 473 "POT param 0 wrong type: " + param.getTypeName(), 474 param.getTypeName().equals("gate.corpora.DocumentImpl") 475 ); 476 assertTrue( 477 "POT param 0 wrong name: " + param.getName(), 478 param.getName().equals("document") 479 ); 480 Object defaultValue = param.calculateDefaultValue(); 481 assertTrue( 482 "POT param 0 default should be Document but is " + 483 defaultValue.getClass().getName(), 484 defaultValue instanceof Document 485 ); 486 break; 487 default: 488 fail("POT has more than 1 param; 2nd is: " + param); 489 } // switch 490 } 491 } 492 493 } // testParameterDefaults2() 494 495 /** Test param as lists*/ 496 public void testParamAsLists() throws Exception{ 497 ResourceData rd = (ResourceData) reg.get("testpkg.TestPR3"); 498 assertNotNull("Couldn: couldn't find testPR3 res data", rd); 499 500 ParameterList paramList = rd.getParameterList(); 501 // runtime params - none for a document 502 List runTime = paramList.getRuntimeParameters(); 503 assertTrue("PR3 should have 4 runtime params: " + paramList, runTime.size()==4); 504 }// End testParamAsLists(); 505 506 /** Test parameters */ 507 public void testParameters() throws Exception { 508 509 ResourceData docRd = (ResourceData) reg.get("gate.corpora.DocumentImpl"); 510 assertNotNull("Couldn: couldn't find document res data", docRd); 511 512 ParameterList paramList = docRd.getParameterList(); 513 if(DEBUG) Out.prln(docRd); 514 515 // runtime params - none for a document 516 Iterator iter = paramList.getRuntimeParameters().iterator(); 517 assertTrue("Document has runtime params: " + paramList, ! iter.hasNext()); 518 519 // init time params 520 Parameter param = null; 521 List initimeParams = paramList.getInitimeParameters(); 522 int initimeLen = initimeParams.size(); 523 assertTrue( 524 "initime params has wrong number of elements: " + initimeLen, 525 initimeLen == 4 526 ); 527 iter = initimeParams.iterator(); 528 int paramDisjNumber = -1; 529 while(iter.hasNext()) { 530 List paramDisj = (List) iter.next(); 531 Iterator iter2 = paramDisj.iterator(); 532 paramDisjNumber++; 533 534 int paramDisjLen = paramDisj.size(); 535 assertTrue( 536 "param disj wrong length: " + paramDisjLen, 537 paramDisjLen == 1 538 ); 539 540 for(int i=0; iter2.hasNext(); i++) { 541 param = (Parameter) iter2.next(); 542 543 switch(paramDisjNumber) { 544 case 0: 545 assertTrue( 546 "Doc param 0 wrong type: " + param.getTypeName(), 547 param.getTypeName().equals("java.lang.String") 548 ); 549 assertTrue( 550 "Doc param 0 wrong name: " + param.getName(), 551 param.getName().equals("sourceUrlName") 552 ); 553 Object defaultValue = param.calculateDefaultValue(); 554 assertTrue( 555 "Doc param 0 default should be null but was: " + defaultValue, 556 defaultValue == null 557 ); 558 break; 559 case 1: 560 assertTrue( 561 "Doc param 1 wrong name: " + param.getName(), 562 param.getName().equals(Document.DOCUMENT_ENCODING_PARAMETER_NAME) 563 ); 564 break; 565 case 2: 566 assertTrue( 567 "Doc param 2 wrong name: " + param.getName(), 568 param.getName().equals(Document.DOCUMENT_START_OFFSET_PARAMETER_NAME) 569 ); 570 defaultValue = param.getDefaultValue(); 571 break; 572 case 3: 573 assertTrue( 574 "Doc param 3 wrong name: " + param.getName(), 575 param.getName().equals(Document.DOCUMENT_END_OFFSET_PARAMETER_NAME) 576 ); 577 break; 578 default: 579 fail("Doc has more than 4 params; 5th is: " + param); 580 } // switch 581 } 582 } 583 584 } // testParameters() 585 586 /** Test default run() on processing resources */ 587 public void testDefaultRun() throws Exception { 588 ProcessingResource defaultPr = new AbstractProcessingResource() { 589 }; 590 boolean gotExceptionAsExpected = false; 591 try { 592 defaultPr.execute(); 593 } catch(ExecutionException e) { 594 gotExceptionAsExpected = true; 595 } 596 597 assertTrue("check should have thrown exception", gotExceptionAsExpected); 598 } // testDefaultRun() 599 600 /** Test arbitrary metadata elements on resources */ 601 public void testArbitraryMetadata() throws Exception { 602 603 ResourceData docRd = (ResourceData) reg.get("gate.corpora.DocumentImpl"); 604 assertNotNull("testArbitraryMetadata: couldn't find doc res data", docRd); 605 FeatureMap features = docRd.getFeatures(); 606 String comment = (String) features.get("FUNKY-METADATA-THAING"); 607 assertTrue( 608 "testArbitraryMetadata: incorrect FUNKY-METADATA-THAING on document", 609 comment != null && comment.equals("hubba hubba") 610 ); 611 } // testArbitraryMetadata() 612 613 /** Test resource introspection */ 614 public void testIntrospection() throws Exception { 615 // get the gate.Document resource and its class 616 ResourceData docRd = (ResourceData) reg.get("gate.corpora.DocumentImpl"); 617 assertNotNull("couldn't find document res data (2)", docRd); 618 Class resClass = docRd.getResourceClass(); 619 620 // get the beaninfo and property descriptors for the resource 621 BeanInfo docBeanInfo = Introspector.getBeanInfo(resClass, Object.class); 622 PropertyDescriptor[] propDescrs = docBeanInfo.getPropertyDescriptors(); 623 624 // print all the properties in the reource's bean info; 625 // remember the setFeatures method 626 Method setFeaturesMethod = null; 627 for(int i = 0; i<propDescrs.length; i++) { 628 Method getMethodDescr = null; 629 Method setMethodDescr = null; 630 Class propClass = null; 631 632 PropertyDescriptor propDescr = propDescrs[i]; 633 propClass = propDescr.getPropertyType(); 634 getMethodDescr = propDescr.getReadMethod(); 635 setMethodDescr = propDescr.getWriteMethod(); 636 637 if( 638 setMethodDescr != null && 639 setMethodDescr.getName().equals("setFeatures") 640 ) 641 setFeaturesMethod = setMethodDescr; 642 643 if(DEBUG) printProperty(propDescrs[i]); 644 } 645 646 // try setting the features property 647 // invoke(Object obj, Object[] args) 648 LanguageResource res = (LanguageResource) resClass.newInstance(); 649 FeatureMap feats = Factory.newFeatureMap(); 650 feats.put("things are sunny in sunny countries", "aren't they?"); 651 Object[] args = new Object[1]; 652 args[0] = feats; 653 setFeaturesMethod.invoke(res, args); 654 assertTrue( 655 "features not added to resource properly", 656 res.getFeatures().get("things are sunny in sunny countries") 657 .equals("aren't they?") 658 ); 659 } // testIntrospection 660 661 /** Test the Factory resource creation provisions */ 662 public void testFactory() throws Exception { 663 FeatureMap params = Factory.newFeatureMap(); 664 params.put("features", Factory.newFeatureMap()); 665 params.put(Document.DOCUMENT_URL_PARAMETER_NAME, Gate.getUrl("tests/doc0.html") 666 ); 667 Resource res = 668 Factory.createResource("gate.corpora.DocumentImpl", params); 669 } // testFactory 670 671 /** Utility method to print out the values of a property descriptor 672 * @see java.beans.PropertyDescriptor 673 */ 674 public static void printProperty(PropertyDescriptor prop) { 675 Class propClass = prop.getPropertyType(); 676 Method getMethodDescr = prop.getReadMethod(); 677 Method setMethodDescr = prop.getWriteMethod(); 678 Out.pr("prop dispname= " + prop.getDisplayName() + "; "); 679 Out.pr("prop type name= " + propClass.getName() + "; "); 680 if(getMethodDescr != null) 681 Out.pr("get meth name= " + getMethodDescr.getName() + "; "); 682 if(setMethodDescr != null) 683 Out.pr("set meth name= " + setMethodDescr.getName() + "; "); 684 Out.prln(); 685 } // printProperty 686 687 /** Example of what bean info classes do. 688 * If this was a public class in gate.corpora it would be used 689 * by the beans Introspector to generation bean info for the 690 * gate.corpora.DocumentImpl class. It inherits from SimpleBeanInfo 691 * whose default behaviour is to return null for the various methods; 692 * this tells the Introspector to do its own investigations. 693 */ 694 class DocumentImplBeanInfo extends SimpleBeanInfo { 695 696 /** Override the SimpleBeanInfo behaviour and return a 0-length 697 * array of properties; this will be passed on by the Introspector, 698 * the effect being to block info on the properties of the bean. 699 */ 700 public PropertyDescriptor[] getPropertyDescriptors() { 701 return new PropertyDescriptor[0]; 702 } // getPropertyDescriptors 703 704 } // DocumentImplBeanInfo 705 706 /** Test suite routine for the test runner */ 707 public static Test suite() { 708 return new TestSuite(TestCreole.class); 709 } // suite 710 711 } // class TestCreole 712
|
TestCreole |
|