Home | History | Annotate | Download | only in parsers
      1 /*
      2  * Copyright (C) 2007 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 package org.apache.harmony.tests.javax.xml.parsers;
     17 
     18 import dalvik.annotation.KnownFailure;
     19 
     20 import junit.framework.TestCase;
     21 
     22 import org.apache.harmony.tests.javax.xml.parsers.SAXParserTestSupport.MyDefaultHandler;
     23 import org.apache.harmony.tests.javax.xml.parsers.SAXParserTestSupport.MyHandler;
     24 import org.apache.harmony.tests.org.xml.sax.support.BrokenInputStream;
     25 import org.apache.harmony.tests.org.xml.sax.support.MethodLogger;
     26 import org.apache.harmony.tests.org.xml.sax.support.MockHandler;
     27 import org.xml.sax.HandlerBase;
     28 import org.xml.sax.InputSource;
     29 import org.xml.sax.Parser;
     30 import org.xml.sax.SAXException;
     31 import org.xml.sax.SAXNotRecognizedException;
     32 import org.xml.sax.SAXNotSupportedException;
     33 import org.xml.sax.XMLReader;
     34 import org.xml.sax.ext.LexicalHandler;
     35 import org.xml.sax.helpers.DefaultHandler;
     36 
     37 import tests.support.resource.Support_Resources;
     38 
     39 import java.io.File;
     40 import java.io.FileInputStream;
     41 import java.io.FileNotFoundException;
     42 import java.io.IOException;
     43 import java.io.InputStream;
     44 import java.io.InputStreamReader;
     45 import java.util.HashMap;
     46 import java.util.Vector;
     47 
     48 import javax.xml.parsers.SAXParser;
     49 import javax.xml.parsers.SAXParserFactory;
     50 
     51 @SuppressWarnings("deprecation")
     52 public class SAXParserTest extends TestCase {
     53 
     54     private class MockSAXParser extends SAXParser {
     55         public MockSAXParser() {
     56             super();
     57         }
     58 
     59         /*
     60          * @see javax.xml.parsers.SAXParser#getParser()
     61          */
     62         @Override
     63         public Parser getParser() throws SAXException {
     64             // it is a fake
     65             return null;
     66         }
     67 
     68         /*
     69          * @see javax.xml.parsers.SAXParser#getProperty(java.lang.String)
     70          */
     71         @Override
     72         public Object getProperty(String name) throws SAXNotRecognizedException,
     73                 SAXNotSupportedException {
     74             // it is a fake
     75             return null;
     76         }
     77 
     78         /*
     79          * @see javax.xml.parsers.SAXParser#getXMLReader()
     80          */
     81         @Override
     82         public XMLReader getXMLReader() throws SAXException {
     83             // it is a fake
     84             return null;
     85         }
     86 
     87         /*
     88          * @see javax.xml.parsers.SAXParser#isNamespaceAware()
     89          */
     90         @Override
     91         public boolean isNamespaceAware() {
     92             // it is a fake
     93             return false;
     94         }
     95 
     96         /*
     97          * @see javax.xml.parsers.SAXParser#isValidating()
     98          */
     99         @Override
    100         public boolean isValidating() {
    101             // it is a fake
    102             return false;
    103         }
    104 
    105         /*
    106          * @see javax.xml.parsers.SAXParser#setProperty(java.lang.String,
    107          * java.lang.Object)
    108          */
    109         @Override
    110         public void setProperty(String name, Object value) throws
    111                 SAXNotRecognizedException, SAXNotSupportedException {
    112             // it is a fake
    113         }
    114     }
    115 
    116     private static final String LEXICAL_HANDLER_PROPERTY
    117             = "http://xml.org/sax/properties/lexical-handler";
    118 
    119     SAXParserFactory spf;
    120 
    121     SAXParser parser;
    122 
    123     static HashMap<String, String> ns;
    124 
    125     static Vector<String> el;
    126 
    127     static HashMap<String, String> attr;
    128 
    129     SAXParserTestSupport sp = new SAXParserTestSupport();
    130 
    131     File [] list_wf;
    132     File [] list_nwf;
    133     File [] list_out_dh;
    134     File [] list_out_hb;
    135 
    136     boolean validating = false;
    137 
    138     private InputStream getResource(String name) {
    139         return this.getClass().getResourceAsStream(name);
    140     }
    141 
    142     public void initFiles() throws Exception {
    143         // we differntiate between a validating and a non validating parser
    144         try {
    145             SAXParser parser = SAXParserFactory.newInstance().newSAXParser();
    146             validating = parser.isValidating();
    147         } catch (Exception e) {
    148             fail("could not obtain a SAXParser");
    149         }
    150 
    151         String tmpPath = System.getProperty("java.io.tmpdir");
    152 
    153         // nwf = not well formed, wf = well formed
    154         list_wf = new File[] {new File(tmpPath + "/" +
    155                 SAXParserTestSupport.XML_WF + "staff.xml")};
    156         list_nwf = new File[] {new File(tmpPath + "/" +
    157                 SAXParserTestSupport.XML_NWF + "staff.xml")};
    158         list_out_dh = new File[] {new File(tmpPath + "/" +
    159                 SAXParserTestSupport.XML_WF_OUT_DH + "staff.out")};
    160         list_out_hb = new File[] {new File(tmpPath + "/" +
    161                 SAXParserTestSupport.XML_WF_OUT_HB + "staff.out")};
    162 
    163         list_wf[0].deleteOnExit();
    164         list_nwf[0].deleteOnExit();
    165         list_out_hb[0].deleteOnExit();
    166         list_out_dh[0].deleteOnExit();
    167 
    168 
    169         Support_Resources.copyLocalFileto(list_wf[0],
    170                 getResource(SAXParserTestSupport.XML_WF + "staff.xml"));
    171         Support_Resources.copyLocalFileto(new File(
    172                 tmpPath + "/" + SAXParserTestSupport.XML_WF + "staff.dtd"),
    173                 getResource(SAXParserTestSupport.XML_WF + "staff.dtd"));
    174 
    175         Support_Resources.copyLocalFileto(list_nwf[0],
    176                 getResource(SAXParserTestSupport.XML_NWF + "staff.xml"));
    177         Support_Resources.copyLocalFileto(new File(
    178                 tmpPath + "/" + SAXParserTestSupport.XML_NWF + "staff.dtd"),
    179                 getResource(SAXParserTestSupport.XML_NWF + "staff.dtd"));
    180 
    181         Support_Resources.copyLocalFileto(list_out_dh[0],
    182                 getResource(SAXParserTestSupport.XML_WF_OUT_DH + "staff.out"));
    183         Support_Resources.copyLocalFileto(list_out_hb[0],
    184                 getResource(SAXParserTestSupport.XML_WF_OUT_HB + "staff.out"));
    185     }
    186 
    187     @Override
    188     protected void setUp() throws Exception {
    189         spf = SAXParserFactory.newInstance();
    190         parser = spf.newSAXParser();
    191         assertNotNull(parser);
    192 
    193         ns = new HashMap<String, String>();
    194         attr = new HashMap<String, String>();
    195         el = new Vector<String>();
    196         initFiles();
    197     }
    198 
    199     @Override
    200     protected void tearDown() throws Exception {
    201     }
    202 
    203 //    public static void main(String[] args) throws Exception {
    204 //        SAXParserTest st = new SAXParserTest();
    205 //        st.setUp();
    206 //        st.generateDataFromReferenceImpl();
    207 //
    208 //    }
    209 //
    210 //    private void generateDataFromReferenceImpl() {
    211 //        try {
    212 //            for(int i = 0; i < list_wf.length; i++) {
    213 //                MyDefaultHandler dh = new MyDefaultHandler();
    214 //                InputStream is = new FileInputStream(list_wf[i]);
    215 //                parser.parse(is, dh, ParsingSupport.XML_SYSTEM_ID);
    216 //                HashMap refHm = dh.createData();
    217 //
    218 //                StringBuilder sb = new StringBuilder();
    219 //                for (int j = 0; j < ParsingSupport.KEYS.length; j++) {
    220 //                    String key = ParsingSupport.KEYS[j];
    221 //                    sb.append(refHm.get(key)).append(
    222 //                            ParsingSupport.SEPARATOR_DATA);
    223 //                }
    224 //                FileWriter fw = new FileWriter("/tmp/build_dh"+i+".out");
    225 //                fw.append(sb.toString());
    226 //                fw.close();
    227 //            }
    228 //
    229 //            for(int i = 0; i < list_nwf.length; i++) {
    230 //                MyHandler hb = new MyHandler();
    231 //                InputStream is = new FileInputStream(list_wf[i]);
    232 //                parser.parse(is, hb, ParsingSupport.XML_SYSTEM_ID);
    233 //                HashMap refHm = hb.createData();
    234 //
    235 //                StringBuilder sb = new StringBuilder();
    236 //                for (int j = 0; j < ParsingSupport.KEYS.length; j++) {
    237 //                    String key = ParsingSupport.KEYS[j];
    238 //                    sb.append(refHm.get(key)).append(
    239 //                            ParsingSupport.SEPARATOR_DATA);
    240 //                }
    241 //                FileWriter fw = new FileWriter("/tmp/build_hb"+i+".out");
    242 //                fw.append(sb.toString());
    243 //                fw.close();
    244 //            }
    245 //
    246 //
    247 //        } catch (Exception e) {
    248 //            e.printStackTrace();
    249 //        }
    250 //    }
    251 
    252     public void testSAXParser() {
    253         try {
    254             new MockSAXParser();
    255         } catch (Exception e) {
    256             fail("unexpected exception " + e.toString());
    257         }
    258     }
    259 
    260     /**
    261      * javax.xml.parser.SAXParser#getSchema().
    262      * TODO getSchema() IS NOT SUPPORTED
    263      */
    264     /*   public void test_getSchema() {
    265         assertNull(parser.getSchema());
    266         SchemaFactory sf =
    267             SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
    268         try {
    269             Schema schema = sf.newSchema();
    270             spf.setSchema(schema);
    271             assertNotNull(spf.newSAXParser().getSchema());
    272         } catch (ParserConfigurationException pce) {
    273             fail("Unexpected ParserConfigurationException " + pce.toString());
    274         } catch (SAXException sax) {
    275             fail("Unexpected SAXException " + sax.toString());
    276         }
    277     }
    278      */
    279 
    280     public void testIsNamespaceAware() {
    281         try {
    282             spf.setNamespaceAware(true);
    283             assertTrue(spf.newSAXParser().isNamespaceAware());
    284             spf.setNamespaceAware(false);
    285             assertFalse(spf.newSAXParser().isNamespaceAware());
    286         } catch (Exception e) {
    287             throw new RuntimeException("Unexpected exception", e);
    288         }
    289     }
    290 
    291     public void testIsValidating() {
    292         try {
    293             spf.setValidating(false);
    294             assertFalse(spf.newSAXParser().isValidating());
    295         } catch (Exception e) {
    296             throw new RuntimeException("Unexpected exception", e);
    297         }
    298     }
    299 
    300     public void testIsXIncludeAware() {
    301         try {
    302             spf.setXIncludeAware(false);
    303             assertFalse(spf.newSAXParser().isXIncludeAware());
    304         } catch (Exception e) {
    305             throw new RuntimeException("Unexpected exception", e);
    306         }
    307     }
    308 
    309     public void test_parseLjava_io_FileLorg_xml_sax_helpers_DefaultHandler() throws Exception {
    310 
    311         for(int i = 0; i < list_wf.length; i++) {
    312             HashMap<String, String> hm =
    313                 new SAXParserTestSupport().readFile(list_out_dh[i].getPath());
    314             MyDefaultHandler dh = new MyDefaultHandler();
    315             parser.parse(list_wf[i], dh);
    316             assertTrue(SAXParserTestSupport.equalsMaps(hm, dh.createData()));
    317         }
    318 
    319         for(int i = 0; i < list_nwf.length; i++) {
    320             try {
    321                 MyDefaultHandler dh = new MyDefaultHandler();
    322                 parser.parse(list_nwf[i], dh);
    323                 fail("SAXException is not thrown");
    324             } catch(org.xml.sax.SAXException se) {
    325                 //expected
    326             }
    327         }
    328 
    329         try {
    330             MyDefaultHandler dh = new MyDefaultHandler();
    331             parser.parse((File) null, dh);
    332             fail("java.lang.IllegalArgumentException is not thrown");
    333         } catch(java.lang.IllegalArgumentException iae) {
    334             //expected
    335         }
    336 
    337         try {
    338             parser.parse(list_wf[0], (DefaultHandler) null);
    339         } catch(java.lang.IllegalArgumentException iae) {
    340             fail("java.lang.IllegalArgumentException is thrown");
    341         }
    342     }
    343 
    344     public void testParseFileHandlerBase() {
    345         for(int i = 0; i < list_wf.length; i++) {
    346             try {
    347                 HashMap<String, String> hm = sp.readFile(
    348                         list_out_hb[i].getPath());
    349                 MyHandler dh = new MyHandler();
    350                 parser.parse(list_wf[i], dh);
    351                 assertTrue(SAXParserTestSupport.equalsMaps(hm,
    352                         dh.createData()));
    353             } catch (IOException ioe) {
    354                 fail("Unexpected IOException " + ioe.toString());
    355             } catch (SAXException sax) {
    356                 fail("Unexpected SAXException " + sax.toString());
    357             }
    358         }
    359 
    360         for(int i = 0; i < list_nwf.length; i++) {
    361             try {
    362                 MyHandler dh = new MyHandler();
    363                 parser.parse(list_nwf[i], dh);
    364                 fail("SAXException is not thrown");
    365             } catch(org.xml.sax.SAXException se) {
    366                 //expected
    367             } catch (FileNotFoundException fne) {
    368                 fail("Unexpected FileNotFoundException " + fne.toString());
    369             } catch (IOException ioe) {
    370                 fail("Unexpected IOException " + ioe.toString());
    371             }
    372         }
    373 
    374         try {
    375             MyHandler dh = new MyHandler();
    376             parser.parse((File) null, dh);
    377             fail("java.lang.IllegalArgumentException is not thrown");
    378         } catch(java.lang.IllegalArgumentException iae) {
    379             //expected
    380         } catch (IOException ioe) {
    381             fail("Unexpected IOException " + ioe.toString());
    382         } catch(SAXException sax) {
    383             fail("Unexpected SAXException " + sax.toString());
    384         }
    385 
    386         try {
    387             parser.parse(list_wf[0], (HandlerBase) null);
    388         } catch(java.lang.IllegalArgumentException iae) {
    389             fail("java.lang.IllegalArgumentException is thrown");
    390         } catch (FileNotFoundException fne) {
    391             fail("Unexpected FileNotFoundException " + fne.toString());
    392         } catch(IOException ioe) {
    393             fail("Unexpected IOException " + ioe.toString());
    394         } catch(SAXException sax) {
    395             fail("Unexpected SAXException " + sax.toString());
    396         }
    397     }
    398 
    399     public void test_parseLorg_xml_sax_InputSourceLorg_xml_sax_helpers_DefaultHandler()
    400             throws Exception {
    401         for(int i = 0; i < list_wf.length; i++) {
    402             HashMap<String, String> hm = new SAXParserTestSupport().readFile(
    403                     list_out_dh[i].getPath());
    404             MyDefaultHandler dh = new MyDefaultHandler();
    405             InputSource is = new InputSource(new FileInputStream(list_wf[i]));
    406             parser.parse(is, dh);
    407             assertTrue(SAXParserTestSupport.equalsMaps(hm, dh.createData()));
    408         }
    409 
    410         for (File file : list_nwf) {
    411             try {
    412                 MyDefaultHandler dh = new MyDefaultHandler();
    413                 InputSource is = new InputSource(new FileInputStream(file));
    414                 parser.parse(is, dh);
    415                 fail("SAXException is not thrown");
    416             } catch (SAXException expected) {
    417             }
    418         }
    419 
    420         try {
    421             MyDefaultHandler dh = new MyDefaultHandler();
    422             parser.parse((InputSource) null, dh);
    423             fail("java.lang.IllegalArgumentException is not thrown");
    424         } catch (IllegalArgumentException expected) {
    425         }
    426 
    427         InputSource is = new InputSource(new FileInputStream(list_wf[0]));
    428         parser.parse(is, (DefaultHandler) null);
    429 
    430         InputStream in = null;
    431         try {
    432             in = new BrokenInputStream(new FileInputStream(list_wf[0]), 10);
    433             is = new InputSource(in);
    434             parser.parse(is, (DefaultHandler) null);
    435             fail("IOException expected");
    436         } catch(IOException expected) {
    437         } finally {
    438             in.close();
    439         }
    440     }
    441 
    442     public void testParseInputSourceHandlerBase() throws Exception {
    443         for(int i = 0; i < list_wf.length; i++) {
    444             HashMap<String, String> hm = sp.readFile(list_out_hb[i].getPath());
    445             MyHandler dh = new MyHandler();
    446             InputSource is = new InputSource(new FileInputStream(list_wf[i]));
    447             parser.parse(is, dh);
    448             assertTrue(SAXParserTestSupport.equalsMaps(hm, dh.createData()));
    449         }
    450 
    451         for (File file : list_nwf) {
    452             try {
    453                 MyHandler dh = new MyHandler();
    454                 InputSource is = new InputSource(new FileInputStream(file));
    455                 parser.parse(is, dh);
    456                 fail("SAXException is not thrown");
    457             } catch (SAXException expected) {
    458             }
    459         }
    460 
    461         try {
    462             MyHandler dh = new MyHandler();
    463             parser.parse((InputSource) null, dh);
    464             fail("java.lang.IllegalArgumentException is not thrown");
    465         } catch(IllegalArgumentException expected) {
    466         }
    467 
    468         InputSource is = new InputSource(new FileInputStream(list_wf[0]));
    469         parser.parse(is, (HandlerBase) null);
    470 
    471         // Reader case
    472         is = new InputSource(new InputStreamReader(new FileInputStream(list_wf[0])));
    473         parser.parse(is, (HandlerBase) null);
    474 
    475         // SystemID case
    476         is = new InputSource(list_wf[0].toURI().toString());
    477         parser.parse(is, (HandlerBase) null);
    478 
    479         // Inject IOException
    480         InputStream in = null;
    481         try {
    482             in = new BrokenInputStream(new FileInputStream(list_wf[0]), 10);
    483             parser.parse(in, (HandlerBase) null, SAXParserTestSupport.XML_SYSTEM_ID);
    484             fail("IOException expected");
    485         } catch(IOException expected) {
    486         } finally {
    487             in.close();
    488         }
    489     }
    490 
    491     public void test_parseLjava_io_InputStreamLorg_xml_sax_helpers_DefaultHandler() throws Exception {
    492 
    493         for(int i = 0; i < list_wf.length; i++) {
    494 
    495             HashMap<String, String> hm = new SAXParserTestSupport().readFile(
    496                     list_out_dh[i].getPath());
    497             MyDefaultHandler dh = new MyDefaultHandler();
    498             InputStream is = new FileInputStream(list_wf[i]);
    499             parser.parse(is, dh);
    500             assertTrue(SAXParserTestSupport.equalsMaps(hm, dh.createData()));
    501         }
    502 
    503         for(int i = 0; i < list_nwf.length; i++) {
    504             try {
    505                 MyDefaultHandler dh = new MyDefaultHandler();
    506                 InputStream is = new FileInputStream(list_nwf[i]);
    507                 parser.parse(is, dh);
    508                 fail("SAXException is not thrown");
    509             } catch(org.xml.sax.SAXException se) {
    510                 //expected
    511             }
    512         }
    513 
    514         try {
    515             MyDefaultHandler dh = new MyDefaultHandler();
    516             parser.parse((InputStream) null, dh);
    517             fail("java.lang.IllegalArgumentException is not thrown");
    518         } catch(java.lang.IllegalArgumentException iae) {
    519             //expected
    520         }
    521 
    522         try {
    523             InputStream is = new FileInputStream(list_wf[0]);
    524             parser.parse(is, (DefaultHandler) null);
    525         } catch(java.lang.IllegalArgumentException iae) {
    526             fail("java.lang.IllegalArgumentException is thrown");
    527         }
    528     }
    529 
    530     @KnownFailure("We supply optional qnames, but this test doesn't expect them")
    531     public void test_parseLjava_io_InputStreamLorg_xml_sax_helpers_DefaultHandlerLjava_lang_String() {
    532         for(int i = 0; i < list_wf.length; i++) {
    533             try {
    534                 HashMap<String, String> hm = sp.readFile(
    535                         list_out_hb[i].getPath());
    536                 MyDefaultHandler dh = new MyDefaultHandler();
    537                 InputStream is = new FileInputStream(list_wf[i]);
    538                 parser.parse(is, dh, SAXParserTestSupport.XML_SYSTEM_ID);
    539                 assertEquals(hm, dh.createData());
    540             } catch (IOException ioe) {
    541                 fail("Unexpected IOException " + ioe.toString());
    542             } catch (SAXException sax) {
    543                 fail("Unexpected SAXException " + sax.toString());
    544             }
    545         }
    546 
    547         for(int i = 0; i < list_nwf.length; i++) {
    548             try {
    549                 MyDefaultHandler dh = new MyDefaultHandler();
    550                 InputStream is = new FileInputStream(list_nwf[i]);
    551                 parser.parse(is, dh, SAXParserTestSupport.XML_SYSTEM_ID);
    552                 fail("SAXException is not thrown");
    553             } catch(org.xml.sax.SAXException se) {
    554                 //expected
    555             } catch (FileNotFoundException fne) {
    556                 fail("Unexpected FileNotFoundException " + fne.toString());
    557             } catch (IOException ioe) {
    558                 fail("Unexpected IOException " + ioe.toString());
    559             }
    560         }
    561 
    562         try {
    563             MyDefaultHandler dh = new MyDefaultHandler();
    564             parser.parse((InputStream) null, dh,
    565                     SAXParserTestSupport.XML_SYSTEM_ID);
    566             fail("java.lang.IllegalArgumentException is not thrown");
    567         } catch(java.lang.IllegalArgumentException iae) {
    568             //expected
    569         } catch (IOException ioe) {
    570             fail("Unexpected IOException " + ioe.toString());
    571         } catch(SAXException sax) {
    572             fail("Unexpected SAXException " + sax.toString());
    573         }
    574 
    575         try {
    576             InputStream is = new FileInputStream(list_wf[0]);
    577             parser.parse(is, (DefaultHandler) null,
    578                     SAXParserTestSupport.XML_SYSTEM_ID);
    579         } catch(java.lang.IllegalArgumentException iae) {
    580             fail("java.lang.IllegalArgumentException is thrown");
    581         } catch (FileNotFoundException fne) {
    582             fail("Unexpected FileNotFoundException " + fne.toString());
    583         } catch(IOException ioe) {
    584             fail("Unexpected IOException " + ioe.toString());
    585         } catch(SAXException sax) {
    586             fail("Unexpected SAXException " + sax.toString());
    587         }
    588 //
    589 //        for(int i = 0; i < list_wf.length; i++) {
    590 //
    591 //            HashMap<String, String> hm = new SAXParserTestSupport().readFile(
    592 //                    list_out_dh[i].getPath());
    593 //            MyDefaultHandler dh = new MyDefaultHandler();
    594 //            InputStream is = new FileInputStream(list_wf[i]);
    595 //            parser.parse(is, dh, SAXParserTestSupport.XML_SYSTEM_ID);
    596 //            assertTrue(SAXParserTestSupport.equalsMaps(hm, dh.createData()));
    597 //        }
    598 //
    599 //        for(int i = 0; i < list_nwf.length; i++) {
    600 //            try {
    601 //                MyDefaultHandler dh = new MyDefaultHandler();
    602 //                InputStream is = new FileInputStream(list_nwf[i]);
    603 //                parser.parse(is, dh, SAXParserTestSupport.XML_SYSTEM_ID);
    604 //                fail("SAXException is not thrown");
    605 //            } catch(org.xml.sax.SAXException se) {
    606 //                //expected
    607 //            }
    608 //        }
    609 //
    610 //        try {
    611 //            MyDefaultHandler dh = new MyDefaultHandler();
    612 //            parser.parse((InputStream) null, dh,
    613 //                    SAXParserTestSupport.XML_SYSTEM_ID);
    614 //            fail("java.lang.IllegalArgumentException is not thrown");
    615 //        } catch(java.lang.IllegalArgumentException iae) {
    616 //            //expected
    617 //        }
    618 //
    619 //        try {
    620 //            InputStream is = new FileInputStream(list_wf[0]);
    621 //            parser.parse(is, (DefaultHandler) null,
    622 //                    SAXParserTestSupport.XML_SYSTEM_ID);
    623 //        } catch(java.lang.IllegalArgumentException iae) {
    624 //            fail("java.lang.IllegalArgumentException is thrown");
    625 //        }
    626 //
    627 //        // TODO commented out since our parser is nonvalidating and thus never
    628 //        // tries to load staff.dtd in "/" ... and therefore never can fail with
    629 //        // an IOException
    630 //        /*try {
    631 //            MyDefaultHandler dh = new MyDefaultHandler();
    632 //            InputStream is = new FileInputStream(list_wf[0]);
    633 //            parser.parse(is, dh, "/");
    634 //            fail("Expected IOException was not thrown");
    635 //        } catch(IOException ioe) {
    636 //            // expected
    637 //        }*/
    638     }
    639 
    640     public void testParseInputStreamHandlerBase() throws Exception {
    641         for(int i = 0; i < list_wf.length; i++) {
    642             HashMap<String, String> hm = sp.readFile(list_out_hb[i].getPath());
    643             MyHandler dh = new MyHandler();
    644             InputStream is = new FileInputStream(list_wf[i]);
    645             parser.parse(is, dh);
    646             assertTrue(SAXParserTestSupport.equalsMaps(hm, dh.createData()));
    647         }
    648 
    649         for (File file : list_nwf) {
    650             try {
    651                 MyHandler dh = new MyHandler();
    652                 InputStream is = new FileInputStream(file);
    653                 parser.parse(is, dh);
    654                 fail("SAXException is not thrown");
    655             } catch (SAXException expected) {
    656             }
    657         }
    658 
    659         try {
    660             MyHandler dh = new MyHandler();
    661             parser.parse((InputStream) null, dh);
    662             fail("java.lang.IllegalArgumentException is not thrown");
    663         } catch (IllegalArgumentException expected) {
    664         }
    665 
    666         InputStream is = new FileInputStream(list_wf[0]);
    667         parser.parse(is, (HandlerBase) null);
    668 
    669         // Inject IOException
    670         try {
    671             is = new BrokenInputStream(new FileInputStream(list_wf[0]), 10);
    672             parser.parse(is, (HandlerBase) null);
    673             fail("IOException expected");
    674         } catch(IOException e) {
    675             // Expected
    676         } finally {
    677             is.close();
    678         }
    679     }
    680 
    681     public void testParseInputStreamHandlerBaseString() throws Exception {
    682         for(int i = 0; i < list_wf.length; i++) {
    683             HashMap<String, String> hm = sp.readFile(list_out_hb[i].getPath());
    684             MyHandler dh = new MyHandler();
    685             InputStream is = new FileInputStream(list_wf[i]);
    686             parser.parse(is, dh, SAXParserTestSupport.XML_SYSTEM_ID);
    687             assertTrue(SAXParserTestSupport.equalsMaps(hm, dh.createData()));
    688         }
    689 
    690         for (File file : list_nwf) {
    691             try {
    692                 MyHandler dh = new MyHandler();
    693                 InputStream is = new FileInputStream(file);
    694                 parser.parse(is, dh, SAXParserTestSupport.XML_SYSTEM_ID);
    695                 fail("SAXException is not thrown");
    696             } catch (SAXException expected) {
    697             }
    698         }
    699 
    700         try {
    701             MyHandler dh = new MyHandler();
    702             parser.parse(null, dh, SAXParserTestSupport.XML_SYSTEM_ID);
    703             fail("java.lang.IllegalArgumentException is not thrown");
    704         } catch(IllegalArgumentException expected) {
    705         }
    706 
    707         InputStream is = new FileInputStream(list_wf[0]);
    708         parser.parse(is, (HandlerBase) null, SAXParserTestSupport.XML_SYSTEM_ID);
    709 
    710         // Inject IOException
    711         try {
    712             is = new BrokenInputStream(new FileInputStream(list_wf[0]), 10);
    713             parser.parse(is, (HandlerBase) null, SAXParserTestSupport.XML_SYSTEM_ID);
    714             fail("IOException expected");
    715         } catch(IOException expected) {
    716         } finally {
    717             is.close();
    718         }
    719     }
    720 
    721     public void test_parseLjava_lang_StringLorg_xml_sax_helpers_DefaultHandler() throws Exception {
    722 
    723         for(int i = 0; i < list_wf.length; i++) {
    724 
    725             HashMap<String, String> hm = new SAXParserTestSupport().readFile(
    726                     list_out_dh[i].getPath());
    727             MyDefaultHandler dh = new MyDefaultHandler();
    728             parser.parse(list_wf[i].toURI().toString(), dh);
    729             assertTrue(SAXParserTestSupport.equalsMaps(hm, dh.createData()));
    730         }
    731 
    732         for(int i = 0; i < list_nwf.length; i++) {
    733             try {
    734                 MyDefaultHandler dh = new MyDefaultHandler();
    735                 parser.parse(list_nwf[i].toURI().toString(), dh);
    736                 fail("SAXException is not thrown");
    737             } catch(org.xml.sax.SAXException se) {
    738                 //expected
    739             }
    740         }
    741 
    742         try {
    743             MyDefaultHandler dh = new MyDefaultHandler();
    744             parser.parse((String) null, dh);
    745             fail("java.lang.IllegalArgumentException is not thrown");
    746         } catch(java.lang.IllegalArgumentException iae) {
    747             //expected
    748         }
    749 
    750         try {
    751             parser.parse(list_wf[0].toURI().toString(), (DefaultHandler) null);
    752         } catch(java.lang.IllegalArgumentException iae) {
    753             fail("java.lang.IllegalArgumentException is thrown");
    754         }
    755     }
    756 
    757     public void testParseStringHandlerBase() {
    758         for(int i = 0; i < list_wf.length; i++) {
    759             try {
    760                 HashMap<String, String> hm = sp.readFile(
    761                         list_out_hb[i].getPath());
    762                 MyHandler dh = new MyHandler();
    763                 parser.parse(list_wf[i].toURI().toString(), dh);
    764                 assertTrue(SAXParserTestSupport.equalsMaps(hm,
    765                         dh.createData()));
    766             } catch (IOException ioe) {
    767                 fail("Unexpected IOException " + ioe.toString());
    768             } catch (SAXException sax) {
    769                 fail("Unexpected SAXException " + sax.toString());
    770             }
    771         }
    772 
    773         for(int i = 0; i < list_nwf.length; i++) {
    774             try {
    775                 MyHandler dh = new MyHandler();
    776                 parser.parse(list_nwf[i].toURI().toString(), dh);
    777                 fail("SAXException is not thrown");
    778             } catch(org.xml.sax.SAXException se) {
    779                 //expected
    780             } catch (FileNotFoundException fne) {
    781                 fail("Unexpected FileNotFoundException " + fne.toString());
    782             } catch (IOException ioe) {
    783                 fail("Unexpected IOException " + ioe.toString());
    784             }
    785         }
    786 
    787         try {
    788             MyHandler dh = new MyHandler();
    789             parser.parse((String) null, dh);
    790             fail("java.lang.IllegalArgumentException is not thrown");
    791         } catch(java.lang.IllegalArgumentException iae) {
    792             //expected
    793         } catch (IOException ioe) {
    794             fail("Unexpected IOException " + ioe.toString());
    795         } catch(SAXException sax) {
    796             fail("Unexpected SAXException " + sax.toString());
    797         }
    798 
    799         try {
    800             parser.parse(list_wf[0].toURI().toString(), (HandlerBase) null);
    801         } catch(java.lang.IllegalArgumentException iae) {
    802             fail("java.lang.IllegalArgumentException is thrown");
    803         } catch (FileNotFoundException fne) {
    804             fail("Unexpected FileNotFoundException " + fne.toString());
    805         } catch(IOException ioe) {
    806             fail("Unexpected IOException " + ioe.toString());
    807         } catch(SAXException sax) {
    808             fail("Unexpected SAXException " + sax.toString());
    809         }
    810     }
    811 
    812     public void testReset() {
    813         try {
    814             spf = SAXParserFactory.newInstance();
    815             parser = spf.newSAXParser();
    816 
    817             parser.setProperty(LEXICAL_HANDLER_PROPERTY, new MockHandler(new MethodLogger()));
    818             parser.reset();
    819             assertEquals(null, parser.getProperty(LEXICAL_HANDLER_PROPERTY));
    820         } catch (Exception e) {
    821             throw new RuntimeException("Unexpected exception", e);
    822         }
    823     }
    824 
    825     public void testGetParser() {
    826         spf = SAXParserFactory.newInstance();
    827         try {
    828             Parser parser = spf.newSAXParser().getParser();
    829             assertNotNull(parser);
    830         } catch (Exception e) {
    831             throw new RuntimeException("Unexpected exception", e);
    832         }
    833     }
    834 
    835     public void testGetReader() {
    836         spf = SAXParserFactory.newInstance();
    837         try {
    838             XMLReader reader = spf.newSAXParser().getXMLReader();
    839             assertNotNull(reader);
    840         } catch (Exception e) {
    841             throw new RuntimeException("Unexpected exception", e);
    842         }
    843     }
    844 
    845     public void testSetGetProperty() {
    846         // Ordinary case
    847         String validName = "http://xml.org/sax/properties/lexical-handler";
    848         LexicalHandler validValue = new MockHandler(new MethodLogger());
    849 
    850         try {
    851             SAXParser parser = spf.newSAXParser();
    852             parser.setProperty(validName, validValue);
    853             assertEquals(validValue, parser.getProperty(validName));
    854 
    855             parser.setProperty(validName, null);
    856             assertEquals(null, parser.getProperty(validName));
    857         } catch (Exception e) {
    858             throw new RuntimeException("Unexpected exception", e);
    859         }
    860 
    861         // Unsupported property
    862         try {
    863             SAXParser parser = spf.newSAXParser();
    864             parser.setProperty("foo", "bar");
    865             fail("SAXNotRecognizedException expected");
    866         } catch (SAXNotRecognizedException e) {
    867             // Expected
    868         } catch (Exception e) {
    869             throw new RuntimeException("Unexpected exception", e);
    870         }
    871 
    872         try {
    873             SAXParser parser = spf.newSAXParser();
    874             parser.getProperty("foo");
    875             fail("SAXNotRecognizedException expected");
    876         } catch (SAXNotRecognizedException e) {
    877             // Expected
    878         } catch (Exception e) {
    879             throw new RuntimeException("Unexpected exception", e);
    880         }
    881 
    882         // No name case
    883         try {
    884             SAXParser parser = spf.newSAXParser();
    885             parser.setProperty(null, "bar");
    886             fail("NullPointerException expected");
    887         } catch (NullPointerException e) {
    888             // Expected
    889         } catch (Exception e) {
    890             throw new RuntimeException("Unexpected exception", e);
    891         }
    892 
    893         try {
    894             SAXParser parser = spf.newSAXParser();
    895             parser.getProperty(null);
    896             fail("NullPointerException expected");
    897         } catch (NullPointerException e) {
    898             // Expected
    899         } catch (Exception e) {
    900             throw new RuntimeException("Unexpected exception", e);
    901         }
    902     }
    903 
    904 }
    905