| TestFiles |

    1   /*
    2    *  TestFiles.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, 10/June/00
    12   *
    13   *  $Id: TestFiles.java,v 1.18 2001/11/07 17:22:03 hamish Exp $
    14   */
    15
    16  package gate.util;
    17
    18  import java.util.*;
    19  import java.io.*;
    20  import junit.framework.*;
    21  import java.net.*;
    22
    23  /** Files test class.
    24    */
    25  public class TestFiles extends TestCase
    26  {
    27    /** Debug flag */
    28    private static final boolean DEBUG = false;
    29
    30    /** Construction */
    31    public TestFiles(String name) { super(name); }
    32
    33    /** Fixture set up */
    34    public void setUp() {
    35    } // setUp
    36
    37    /** Test the getResourceAs... methods. */
    38    public void testGetResources() throws Exception {
    39      assertTrue(true);
    40      String japeResName = "jape/combined/testloc.jape";
    41      String firstLine = "// testloc.jape";
    42
    43      InputStreamReader resReader =
    44        new InputStreamReader(Files.getGateResourceAsStream(japeResName));
    45      BufferedReader bufResReader = new BufferedReader(resReader);
    46      assertTrue(bufResReader.readLine().equals(firstLine));
    47      resReader.close();
    48
    49      String resString = Files.getGateResourceAsString(japeResName);
    50      assertTrue(resString.startsWith(firstLine));
    51
    52      byte[] resBytes = Files.getGateResourceAsByteArray(japeResName);
    53
    54      /*
    55      Out.println(new String(resBytes));
    56      Out.println(resBytes.length);
    57      Out.println(resString);
    58      Out.println(resString.length());
    59      */
    60
    61      char resChars[] = new char[firstLine.length()];
    62      for(int i=0; i<resChars.length; i++) resChars[i] = (char)resBytes[i];
    63      resString = new String(resChars);
    64      assertTrue(resString, resString.equals(firstLine));
    65
    66    } // testGetResources()
    67
    68    /** Test the writeTempFile... method. */
    69    public void testWriteTempFile() throws Exception {
    70      assertTrue(true);
    71      String japeResName = "jape/combined/testloc.jape";
    72      String firstLine = "// testloc.jape";
    73
    74      File f = Files.writeTempFile(Files.getGateResourceAsStream(japeResName));
    75      BufferedReader bfr = new BufferedReader(new FileReader(f));
    76
    77      String firstLn = bfr.readLine();
    78      assertTrue("first line from jape/combined/testloc.jape doesn't match",
    79        firstLine.equals(firstLn));
    80
    81      f.delete ();
    82    } // testWriteTempFile()
    83
    84    /** Test suite routine for the test runner */
    85    public static Test suite() {
    86      return new TestSuite(TestFiles.class);
    87    } // suite
    88
    89    public static void main(String args[]){
    90      TestFiles app = new TestFiles("TestFiles");
    91      try {
    92        app.testJarFiles ();
    93        app.testGetResources();
    94      } catch (Exception e) {
    95        e.printStackTrace (Err.getPrintWriter());
    96      }
    97    } // main
    98
    99    /** Test JarFiles methods */
    100   public void testJarFiles() throws Exception {
    101
    102     JarFiles jarFiles = new JarFiles();
    103     Set filesToMerge = new HashSet();
    104     String jarFilePathFirst = "jartest/ajartest.jar";
    105     String jarFilePathSecond ="jartest/bjartest.jar";
    106     String jarPathFirst = null;;
    107     String jarPathSecond = null;
    108     String jarPathFinal = null;
    109     File resourceFile  = null;
    110     File f1 = null;
    111     File f2 = null;
    112     FileInputStream fileStreamFirst = null;
    113     FileInputStream fileStreamSecond = null;
    114
    115     //open first jar file in a temporal file
    116     // Out.println(Files.getResourceAsStream(jarFilePathFirst));
    117     f1 = Files.writeTempFile(Files.getGateResourceAsStream(jarFilePathFirst));
    118
    119     //open second jar file in a temporal file
    120     f2 =Files.writeTempFile(Files.getGateResourceAsStream(jarFilePathSecond));
    121
    122
    123     //create a temporal file in order to put the classes of jar files
    124     resourceFile = File.createTempFile("jarfinal", ".tmp");
    125     resourceFile.deleteOnExit();
    126
    127     //determin the paths of the temporal files
    128     jarPathFirst = f1.getAbsolutePath();
    129     jarPathSecond = f2.getAbsolutePath();
    130     f1.deleteOnExit();
    131     f2.deleteOnExit();
    132     jarPathFinal = resourceFile.getAbsolutePath();
    133     filesToMerge.add(jarPathFirst);
    134     filesToMerge.add(jarPathSecond);
    135
    136     //close the temporal files
    137     fileStreamFirst = new FileInputStream(f1);
    138
    139     fileStreamSecond = new FileInputStream(f2);
    140
    141     fileStreamFirst.close();
    142
    143     fileStreamSecond.close();
    144
    145     jarFiles.merge(filesToMerge,jarPathFinal);
    146
    147   } // testJarFiles
    148
    149   /** Test the find method. */
    150   public void testFind(){
    151     String regex = "z:/gate2/doc/.*.html";
    152     String filePath = "z:/gate2/doc";
    153     Iterator iter;
    154     Files files = new Files();
    155     Set regfind = new HashSet();
    156
    157     regfind = files.Find(regex,filePath);
    158     iter = regfind.iterator();
    159     if (iter.hasNext()){
    160       while (iter.hasNext()){
    161         String verif = iter.next().toString();
    162         //Out.println(verif);
    163       }
    164     }
    165   } // testFind
    166
    167   /** Test the updateXmlElement method. */
    168   public void testUpdateXmlElement() throws IOException {
    169     String nl = Strings.getNl();
    170     String configElementName = "GATECONFIG";
    171     String configElement = "<" + configElementName + " FULLSIZE=\"yes\"/>";
    172     String exampleXmlStart =
    173       "<?xml version=\"1.0\"?>" + nl +
    174       "<!-- a comment -->" + nl +
    175       "<GATE>" + nl +
    176       "" + nl +
    177       "<CREOLE-DIRECTORY>http://on.the.net/</CREOLE-DIRECTORY>" + nl +
    178       "<!--- The next element may be overwritten by the GUI --->" + nl;
    179     String exampleXmlEnd =
    180       "</GATE>" + nl;
    181     String exampleXml = exampleXmlStart + configElement + nl + exampleXmlEnd;
    182
    183     // check that the getEmptyElement method works
    184     assertTrue(
    185       "the GATECONFIG element doesn't match",
    186       getEmptyElement(exampleXml, configElementName).equals(configElement)
    187     );
    188
    189     // a map of values to place in the new element
    190     Map newAttrs = new HashMap();
    191     newAttrs.put("a", "1");
    192     newAttrs.put("b", "2");
    193     newAttrs.put("c", "3");
    194
    195     // test the files method
    196     String newXml = Files.updateXmlElement(
    197       new BufferedReader(new StringReader(exampleXml)),
    198       configElementName,
    199       newAttrs
    200     );
    201     assertTrue(
    202       "newXml doesn't match (1): " + newXml.toString(),
    203       newXml.toString().startsWith(exampleXmlStart) &&
    204         newXml.toString().endsWith(exampleXmlEnd)
    205     );
    206     if(DEBUG) Out.prln(newXml);
    207
    208     // write the example data into a temp file and try on that
    209     File tempFile = Files.writeTempFile(exampleXml);
    210     newXml = Files.updateXmlElement(tempFile, configElementName, newAttrs);
    211     assertTrue(
    212       "newXml doesn't match (2): " + newXml.toString(),
    213       newXml.toString().startsWith(exampleXmlStart) &&
    214         newXml.toString().endsWith(exampleXmlEnd)
    215     );
    216     if(DEBUG) Out.prln(newXml);
    217
    218     // check that the file was overwritten successfully
    219     newXml = Files.getString(tempFile);
    220     assertTrue(
    221       "newXml doesn't match (3): " + newXml.toString(),
    222       newXml.toString().startsWith(exampleXmlStart) &&
    223         newXml.toString().endsWith(exampleXmlEnd)
    224     );
    225     if(DEBUG) Out.prln(newXml);
    226
    227   } // updateXmlElement
    228
    229   /**
    230    * Helper method to extract an empty element from a string
    231    * containing XML
    232    */
    233   String getEmptyElement(String xml, String elementName) {
    234     // find the index of "<elementName"; find the next ">"
    235     int start = xml.indexOf("<" + elementName);
    236     int end = xml.indexOf(">", start);
    237
    238     // get the range between the two indices
    239     StringBuffer xmlBuf = new StringBuffer(xml);
    240     String substr = xmlBuf.substring(start, end + 1);
    241     if(DEBUG) {
    242       Out.prln("start=" + start + "; end=" + end + "; substr=" + substr);
    243     }
    244
    245     return substr;
    246   } // getEmptyElement
    247
    248 } // class TestFiles
    249

| TestFiles |