| TestXml |

    1   /*
    2    *  TestXml.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   *  Cristian URSU,  8/May/2000
    12   *
    13   *  $Id: TestXml.java,v 1.52 2001/11/08 17:23:34 cursu Exp $
    14   */
    15
    16  package gate.xml;
    17
    18  import java.util.*;
    19  import java.net.*;
    20  import java.io.*;
    21  import java.beans.*;
    22
    23  import gate.util.*;
    24  import gate.gui.*;
    25  import gate.*;
    26
    27  import junit.framework.*;
    28  import org.w3c.www.mime.*;
    29
    30
    31  /** Test class for XML facilities
    32    *
    33    */
    34  public class TestXml extends TestCase
    35  {
    36    /** Debug flag */
    37    private static final boolean DEBUG = false;
    38
    39    /** Construction */
    40    public TestXml(String name) { super(name); }
    41
    42    /** Fixture set up */
    43    public void setUp() {
    44    } // setUp
    45
    46    public void testGateDocumentToAndFromXmlWithDifferentKindOfFormats()
    47                                                                 throws Exception{
    48      List urlList = new LinkedList();
    49      List urlDescription = new LinkedList();
    50      URL url = null;
    51
    52      url = Gate.getUrl("tests/xml/xces.xml");
    53      assertTrue("Coudn't create a URL object for tests/xml/xces.xml ", url != null);
    54      urlList.add(url);
    55      urlDescription.add(" an XML document ");
    56
    57      url = Gate.getUrl("tests/xml/Sentence.xml");
    58      assertTrue("Coudn't create a URL object for tests/xml/Sentence.xml",
    59                                                           url != null);
    60      urlList.add(url);
    61      urlDescription.add(" an XML document ");
    62
    63      url = Gate.getUrl("tests/html/test1.htm");
    64      assertTrue("Coudn't create a URL object for tests/html/test.htm",url != null);
    65      urlList.add(url);
    66      urlDescription.add(" an HTML document ");
    67
    68      url = Gate.getUrl("tests/rtf/Sample.rtf");
    69      assertTrue("Coudn't create a URL object for defg ",url != null);
    70      urlList.add(url);
    71      urlDescription.add(" a RTF document ");
    72
    73
    74      url = Gate.getUrl("tests/email/test2.eml");
    75      assertTrue("Coudn't create a URL object for defg ",url != null);
    76      urlList.add(url);
    77      urlDescription.add(" an EMAIL document ");
    78
    79      Iterator iter = urlList.iterator();
    80      Iterator descrIter = urlDescription.iterator();
    81      while(iter.hasNext()){
    82        runCompleteTestWithAFormat((URL) iter.next(),(String)descrIter.next());
    83      }// End While
    84
    85
    86    }// testGateDocumentToAndFromXmlWithDifferentKindOfFormats
    87
    88    private void runCompleteTestWithAFormat(URL url, String urlDescription)
    89                                                               throws Exception{
    90      // Load the xml Key Document and unpack it
    91      gate.Document keyDocument = null;
    92
    93      FeatureMap params = Factory.newFeatureMap();
    94      params.put("sourceUrl", url);
    95      params.put("markupAware", "false");
    96      keyDocument = (Document)Factory.createResource("gate.corpora.DocumentImpl",
    97                                                      params);
    98
    99      assertTrue("Coudn't create a Gate document instance for " +
    100             url.toString() +
    101             " Can't continue." , keyDocument != null);
    102
    103     gate.DocumentFormat keyDocFormat = null;
    104     keyDocFormat = gate.DocumentFormat.getDocumentFormat(
    105       keyDocument, keyDocument.getSourceUrl()
    106     );
    107
    108     assertTrue("Fail to recognize " +
    109             url.toString() +
    110             " as being " + urlDescription + " !", keyDocFormat != null);
    111
    112     // Unpack the markup
    113     keyDocFormat.unpackMarkup(keyDocument);
    114     // Verfy if all annotations from the default annotation set are consistent
    115     gate.corpora.TestDocument.verifyNodeIdConsistency(keyDocument);
    116
    117     // Save the size of the document and the number of annotations
    118     long keyDocumentSize = keyDocument.getContent().size().longValue();
    119     int keyDocumentAnnotationSetSize = keyDocument.getAnnotations().size();
    120
    121
    122     // Export the Gate document called keyDocument as  XML, into a temp file,
    123     // using UTF-8 encoding
    124     File xmlFile = null;
    125     xmlFile = Files.writeTempFile(keyDocument.toXml(),"UTF-8");
    126     assertTrue("The temp Gate XML file is null. Can't continue.",xmlFile != null);
    127 /*
    128     // Prepare to write into the xmlFile using UTF-8 encoding
    129     OutputStreamWriter writer = new OutputStreamWriter(
    130                     new FileOutputStream(xmlFile),"UTF-8");
    131     // Write (test the toXml() method)
    132     writer.write(keyDocument.toXml());
    133     writer.flush();
    134     writer.close();
    135 */
    136     // Load the XML Gate document form the tmp file into memory
    137     gate.Document gateDoc = null;
    138     gateDoc = gate.Factory.newDocument(xmlFile.toURL());
    139
    140     assertTrue("Coudn't create a Gate document instance for " +
    141                 xmlFile.toURL().toString() +
    142                 " Can't continue." , gateDoc != null);
    143
    144     gate.DocumentFormat gateDocFormat = null;
    145     gateDocFormat =
    146             DocumentFormat.getDocumentFormat(gateDoc,gateDoc.getSourceUrl());
    147
    148     assertTrue("Fail to recognize " +
    149       xmlFile.toURL().toString() +
    150       " as being a Gate XML document !", gateDocFormat != null);
    151
    152     gateDocFormat.unpackMarkup(gateDoc);
    153     // Verfy if all annotations from the default annotation set are consistent
    154     gate.corpora.TestDocument.verifyNodeIdConsistency(gateDoc);
    155
    156     // Save the size of the document snd the number of annotations
    157     long gateDocSize = keyDocument.getContent().size().longValue();
    158     int gateDocAnnotationSetSize = keyDocument.getAnnotations().size();
    159
    160     assertTrue("Exporting as Gate XML resulted in document content size lost." +
    161       " Something went wrong.", keyDocumentSize == gateDocSize);
    162
    163     assertTrue("Exporting as Gate XML resulted in annotation lost." +
    164       " No. of annotations missing =  " +
    165       Math.abs(keyDocumentAnnotationSetSize - gateDocAnnotationSetSize),
    166       keyDocumentAnnotationSetSize == gateDocAnnotationSetSize);
    167
    168     //Don't need tmp Gate XML file.
    169     xmlFile.delete();
    170   }//runCompleteTestWithAFormat
    171
    172   /** A test */
    173   public void testUnpackMarkup() throws Exception{
    174     // create the markupElementsMap map
    175     Map markupElementsMap = null;
    176     gate.Document doc = null;
    177     /*
    178     markupElementsMap = new HashMap();
    179     // populate it
    180     markupElementsMap.put ("S","Sentence");
    181     markupElementsMap.put ("s","Sentence");
    182     */
    183     // Create the element2String map
    184     Map anElement2StringMap = null;
    185     anElement2StringMap = new HashMap();
    186     // Populate it
    187     anElement2StringMap.put("S","\n");
    188     anElement2StringMap.put("s","\n");
    189
    190     doc = gate.Factory.newDocument(Gate.getUrl("tests/xml/xces.xml"));
    191  //doc = gate.Factory.newDocument(new URL("file:///z:/gu.xml"));
    192
    193     AnnotationSet annotSet = doc.getAnnotations(
    194                         GateConstants.ORIGINAL_MARKUPS_ANNOT_SET_NAME);
    195     assertEquals("For "+doc.getSourceUrl()+" the number of annotations"+
    196     " should be:758",758,annotSet.size());
    197
    198     gate.corpora.TestDocument.verifyNodeIdConsistency(doc);
    199   } // testUnpackMarkup()
    200
    201   /** Test suite routine for the test runner */
    202   public static Test suite() {
    203     return new TestSuite(TestXml.class);
    204   } // suite
    205
    206 } // class TestXml
    207

| TestXml |