|
TestDocument |
|
1 /* 2 * TestDocument.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, 21/Jan/00 12 * 13 * $Id: TestDocument.java,v 1.23 2001/10/30 12:45:34 valyt Exp $ 14 */ 15 16 package gate.corpora; 17 18 import java.util.*; 19 import java.net.*; 20 import java.io.*; 21 import junit.framework.*; 22 23 import gate.*; 24 import gate.util.*; 25 import gate.annotation.*; 26 27 /** Tests for the Document classes 28 */ 29 public class TestDocument extends TestCase 30 { 31 32 /** Debug flag */ 33 private static final boolean DEBUG = false; 34 35 /** Construction */ 36 public TestDocument(String name) { super(name); setUp();} 37 38 /** Base of the test server URL */ 39 protected static String testServer = null; 40 41 /** Name of test document 1 */ 42 protected String testDocument1; 43 44 /** Fixture set up */ 45 public void setUp() { 46 47 try{ 48 Gate.init(); 49 testServer = Gate.getUrl().toExternalForm(); 50 } catch (GateException e){ 51 e.printStackTrace(Err.getPrintWriter()); 52 } 53 54 testDocument1 = "tests/html/test2.htm"; 55 } // setUp 56 57 /** Get the name of the test server */ 58 public static String getTestServerName() { 59 if(testServer != null) return testServer; 60 else{ 61 try { testServer = Gate.getUrl().toExternalForm(); } 62 catch(Exception e) { } 63 return testServer; 64 } 65 } 66 67 /** Test ordering */ 68 public void testCompareTo() throws Exception{ 69 Document doc1 = null; 70 Document doc2 = null; 71 Document doc3 = null; 72 73 74 doc1 = Factory.newDocument(new URL(testServer + "tests/def")); 75 doc2 = Factory.newDocument(new URL(testServer + "tests/defg")); 76 doc3 = Factory.newDocument(new URL(testServer + "tests/abc")); 77 78 assertTrue(doc1.compareTo(doc2) < 0); 79 assertTrue(doc1.compareTo(doc1) == 0); 80 assertTrue(doc1.compareTo(doc3) > 0); 81 82 } // testCompareTo() 83 84 /** A comprehensive test */ 85 public void testLotsOfThings() { 86 87 // check that the test URL is available 88 URL u = null; 89 try{ 90 u = new URL(testServer + testDocument1); 91 } catch (Exception e){ 92 e.printStackTrace(Err.getPrintWriter()); 93 } 94 95 // get some text out of the test URL 96 BufferedReader uReader = null; 97 try { 98 uReader = new BufferedReader(new InputStreamReader(u.openStream())); 99 assertEquals(uReader.readLine(), "<HTML>"); 100 } catch(UnknownHostException e) { // no network connection 101 return; 102 } catch(IOException e) { 103 fail(e.toString()); 104 } 105 /* 106 Document doc = new TextualDocument(testServer + testDocument1); 107 AnnotationGraph ag = new AnnotationGraphImpl(); 108 109 Tokeniser t = ... doc.getContent() 110 tokenise doc using java stream tokeniser 111 112 add several thousand token annotation 113 select a subset 114 */ 115 } // testLotsOfThings 116 117 /** The reason this is method begins with verify and not with test is that it 118 * gets called by various other test methods. It is somehow a utility test 119 * method. It should be called on all gate documents having annotation sets. 120 */ 121 public static void verifyNodeIdConsistency(gate.Document doc)throws Exception{ 122 if (doc == null) return; 123 Map offests2NodeId = new HashMap(); 124 // Test the default annotation set 125 AnnotationSet annotSet = doc.getAnnotations(); 126 verifyNodeIdConsistency(annotSet,offests2NodeId, doc); 127 // Test all named annotation sets 128 if (doc.getNamedAnnotationSets() != null){ 129 Iterator namedAnnotSetsIter = 130 doc.getNamedAnnotationSets().values().iterator(); 131 while(namedAnnotSetsIter.hasNext()){ 132 verifyNodeIdConsistency((gate.AnnotationSet) namedAnnotSetsIter.next(), 133 offests2NodeId, 134 doc); 135 }// End while 136 }// End if 137 // Test suceeded. The map is not needed anymore. 138 offests2NodeId = null; 139 }// verifyNodeIdConsistency(); 140 141 /** This metod runs the test over an annotation Set. It is called from her 142 * older sister. Se above. 143 * @param annotSet is the annotation set being tested. 144 * @param offests2NodeId is the Map used to test the consistency. 145 * @param doc is used in composing the assert error messsage. 146 */ 147 public static void verifyNodeIdConsistency(gate.AnnotationSet annotSet, 148 Map offests2NodeId, 149 gate.Document doc) 150 throws Exception{ 151 152 if (annotSet == null || offests2NodeId == null) return; 153 154 Iterator iter = annotSet.iterator(); 155 while(iter.hasNext()){ 156 Annotation annot = (Annotation) iter.next(); 157 String annotSetName = (annotSet.getName() == null)? "Default": 158 annotSet.getName(); 159 // check the Start node 160 if (offests2NodeId.containsKey(annot.getStartNode().getOffset())){ 161 assertEquals("Found two different node IDs for the same offset( "+ 162 annot.getStartNode().getOffset()+ " ).\n" + 163 "START NODE is buggy for annotation(" + annot + 164 ") from annotation set " + annotSetName + " of GATE document :" + 165 doc.getSourceUrl(), 166 annot.getStartNode().getId(), 167 (Integer) offests2NodeId.get(annot.getStartNode().getOffset())); 168 }// End if 169 // Check the End node 170 if (offests2NodeId.containsKey(annot.getEndNode().getOffset())){ 171 assertEquals("Found two different node IDs for the same offset("+ 172 annot.getEndNode().getOffset()+ ").\n" + 173 "END NODE is buggy for annotation(" + annot+ ") from annotation"+ 174 " set " + annotSetName +" of GATE document :" + doc.getSourceUrl(), 175 annot.getEndNode().getId(), 176 (Integer) offests2NodeId.get(annot.getEndNode().getOffset())); 177 }// End if 178 offests2NodeId.put(annot.getStartNode().getOffset(), 179 annot.getStartNode().getId()); 180 offests2NodeId.put(annot.getEndNode().getOffset(), 181 annot.getEndNode().getId()); 182 }// End while 183 }//verifyNodeIdConsistency(); 184 185 /** Test suite routine for the test runner */ 186 public static Test suite() { 187 return new TestSuite(TestDocument.class); 188 } // suite 189 190 } // class TestDocument 191
|
TestDocument |
|