1adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/*
2adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Copyright (C) 2007 The Android Open Source Project
3adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *
4adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License");
5adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * you may not use this file except in compliance with the License.
6adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * You may obtain a copy of the License at
7adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *
8adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *      http://www.apache.org/licenses/LICENSE-2.0
9adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *
10adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software
11adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS,
12adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * See the License for the specific language governing permissions and
14adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * limitations under the License.
15adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */
16adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
17adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpackage tests.api.javax.xml.parsers;
18adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
19adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport junit.framework.TestCase;
20adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.w3c.dom.DOMImplementation;
21adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.w3c.dom.Document;
22adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.w3c.dom.Element;
23adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.w3c.dom.EntityReference;
24adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.w3c.dom.Text;
25adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.xml.sax.EntityResolver;
26adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.xml.sax.ErrorHandler;
27adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.xml.sax.InputSource;
28adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.xml.sax.SAXException;
29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.xml.sax.SAXParseException;
30adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport tests.api.org.xml.sax.support.MethodLogger;
31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport tests.api.org.xml.sax.support.MockHandler;
32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport tests.api.org.xml.sax.support.MockResolver;
331ec94feeb09591c30996c7c0834d6f131e204922Jesse Wilsonimport tests.support.resource.Support_Resources;
34c36982772a413bb14eb6d865013aac03544441d1Jesse Wilson
35c36982772a413bb14eb6d865013aac03544441d1Jesse Wilsonimport javax.xml.parsers.DocumentBuilder;
36c36982772a413bb14eb6d865013aac03544441d1Jesse Wilsonimport javax.xml.parsers.DocumentBuilderFactory;
37c36982772a413bb14eb6d865013aac03544441d1Jesse Wilsonimport java.io.ByteArrayInputStream;
38c36982772a413bb14eb6d865013aac03544441d1Jesse Wilsonimport java.io.File;
39c36982772a413bb14eb6d865013aac03544441d1Jesse Wilsonimport java.io.FileInputStream;
40c36982772a413bb14eb6d865013aac03544441d1Jesse Wilsonimport java.io.IOException;
41c36982772a413bb14eb6d865013aac03544441d1Jesse Wilsonimport java.io.InputStream;
425ab82b77afbc8af3b91e90ab46b0a7cc0a090f04Jesse Wilsonimport java.net.URL;
43adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
44adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpublic class DocumentBuilderTest extends TestCase {
45adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
46adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    private class MockDocumentBuilder extends DocumentBuilder {
47adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
48adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public MockDocumentBuilder() {
49adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            super();
50adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
51adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
52adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        /*
53adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project         * @see javax.xml.parsers.DocumentBuilder#getDOMImplementation()
54adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project         */
55adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @Override
56adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public DOMImplementation getDOMImplementation() {
57adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // it is a fake
58adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return null;
59adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
60adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
61adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        /*
62adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project         * @see javax.xml.parsers.DocumentBuilder#isNamespaceAware()
63adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project         */
64adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @Override
65adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public boolean isNamespaceAware() {
66adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // it is a fake
67adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return false;
68adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
69adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
70adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        /*
71adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project         * @see javax.xml.parsers.DocumentBuilder#isValidating()
72adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project         */
73adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @Override
74adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public boolean isValidating() {
75adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // it is a fake
76adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return false;
77adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
78adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
79adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        /*
80adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project         * @see javax.xml.parsers.DocumentBuilder#newDocument()
81adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project         */
82adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @Override
83adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public Document newDocument() {
84adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // it is a fake
85adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return null;
86adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
87adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
88adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        /*
89adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project         * @see javax.xml.parsers.DocumentBuilder#parse(org.xml.sax.InputSource)
90adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project         */
91adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @Override
92adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public Document parse(InputSource is) throws SAXException, IOException {
93adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // it is a fake
94adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return null;
95adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
96adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
97adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        /*
98adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project         * @see javax.xml.parsers.DocumentBuilder#setEntityResolver(
99adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project         *  org.xml.sax.EntityResolver)
100adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project         */
101adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @Override
102adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public void setEntityResolver(EntityResolver er) {
103adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // it is a fake
104adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
105adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
106adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        /*
107adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project         * @see javax.xml.parsers.DocumentBuilder#setErrorHandler(
108adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project         *  org.xml.sax.ErrorHandler)
109adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project         */
110adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @Override
111adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public void setErrorHandler(ErrorHandler eh) {
112adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // it is a fake
113adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
114adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
115adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public Object clone() throws CloneNotSupportedException {
116adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return super.clone();
117adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
118adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
119adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
120adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    DocumentBuilderFactory dbf;
121adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
122adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    DocumentBuilder db;
123adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
124adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    protected void setUp() throws Exception {
125c36982772a413bb14eb6d865013aac03544441d1Jesse Wilson
126adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        dbf = DocumentBuilderFactory.newInstance();
127f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
128adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        dbf.setIgnoringElementContentWhitespace(true);
129f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
130adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        db = dbf.newDocumentBuilder();
131adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        super.setUp();
132adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
133adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
134adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    protected void tearDown() throws Exception {
135adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        super.tearDown();
136adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
137adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
138adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testDocumentBuilder() {
139adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
140adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            new MockDocumentBuilder();
141adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (Exception e) {
142adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("unexpected exception " + e.toString());
143adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
144adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
145adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
146adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
147229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     *  javax.xml.parsers.DocumentBuilder#getSchema()
148adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *  TBD getSchema() is not supported
149adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
150adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /*   public void test_getSchema() {
151adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertNull(db.getSchema());
152adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        SchemaFactory sf =
153adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
154adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
155adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Schema schema = sf.newSchema();
156adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            dbf.setSchema(schema);
157adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertNotNull(dbf.newDocumentBuilder().getSchema());
158adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (ParserConfigurationException pce) {
159adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Unexpected ParserConfigurationException " + pce.toString());
160adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SAXException sax) {
161adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Unexpected SAXException " + sax.toString());
162adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
163adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
164adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project*/
165adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testNewDocument() {
166adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Document d;
167f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
168adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
169adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            d = dbf.newDocumentBuilder().newDocument();
170adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (Exception e) {
171adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            throw new RuntimeException("Unexpected exception", e);
172adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
173f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
174adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertNotNull(d);
175adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertNull(d.getDoctype());
176adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertNull(d.getDocumentElement());
177adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertNull(d.getNamespaceURI());
178adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
179adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
180adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testGetImplementation() {
181adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        DOMImplementation d;
182f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
183adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
184adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            d = dbf.newDocumentBuilder().getDOMImplementation();
185adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (Exception e) {
186adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            throw new RuntimeException("Unexpected exception", e);
187adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
188f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
189adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertNotNull(d);
190adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
191f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
192adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testIsNamespaceAware() {
193adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
194adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            dbf.setNamespaceAware(true);
195adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertTrue(dbf.newDocumentBuilder().isNamespaceAware());
196adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            dbf.setNamespaceAware(false);
197adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertFalse(dbf.newDocumentBuilder().isNamespaceAware());
198adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (Exception e) {
199adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            throw new RuntimeException("Unexpected exception", e);
200adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
201adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
202adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
203adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testIsValidating() {
204adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
205adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            dbf.setValidating(false);
206adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertFalse(dbf.newDocumentBuilder().isValidating());
207adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (Exception e) {
208adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            throw new RuntimeException("Unexpected exception", e);
209adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
210adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
211adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
212adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testIsXIncludeAware() {
213adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
214adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            dbf.setXIncludeAware(false);
215adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertFalse(dbf.newDocumentBuilder().isXIncludeAware());
216adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (Exception e) {
217adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            throw new RuntimeException("Unexpected exception", e);
218adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
219adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
220adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
221adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
222c36982772a413bb14eb6d865013aac03544441d1Jesse Wilson     * Tests that the Base URI for the document is populated with the file URI.
223c36982772a413bb14eb6d865013aac03544441d1Jesse Wilson     */
224c36982772a413bb14eb6d865013aac03544441d1Jesse Wilson    public void testGetBaseURI() throws IOException, SAXException {
2251ec94feeb09591c30996c7c0834d6f131e204922Jesse Wilson        File f = Support_Resources.resourceToTempFile("/simple.xml");
226c36982772a413bb14eb6d865013aac03544441d1Jesse Wilson        Document d = db.parse(f);
227c36982772a413bb14eb6d865013aac03544441d1Jesse Wilson        assertTrue(d.getDocumentElement().getBaseURI().startsWith("file://"));
228c36982772a413bb14eb6d865013aac03544441d1Jesse Wilson    }
229c36982772a413bb14eb6d865013aac03544441d1Jesse Wilson
230c36982772a413bb14eb6d865013aac03544441d1Jesse Wilson    /**
231229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * javax.xml.parsers.DocumentBuilder#parse(java.io.File)
232adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Case 1: Try to parse correct xml document.
233adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Case 2: Try to call parse() with null argument.
234adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Case 3: Try to parse a non-existent file.
235adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Case 4: Try to parse incorrect xml file.
236adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
23706739ed0b37e8a6fad76cdd59e8bb29f8aa813b6Jorg Pleumann    public void test_parseLjava_io_File() throws IOException {
2381ec94feeb09591c30996c7c0834d6f131e204922Jesse Wilson        File f = Support_Resources.resourceToTempFile("/simple.xml");
23906739ed0b37e8a6fad76cdd59e8bb29f8aa813b6Jorg Pleumann
240adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // case 1: Trivial use.
241adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
242adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Document d = db.parse(f);
243adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertNotNull(d);
244adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project       //      TBD getXmlEncoding() IS NOT SUPPORTED
245adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project       //     assertEquals("ISO-8859-1", d.getXmlEncoding());
246adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertEquals(2, d.getChildNodes().getLength());
247adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertEquals("#comment",
248adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    d.getChildNodes().item(0).getNodeName());
249adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertEquals("breakfast_menu",
250adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    d.getChildNodes().item(1).getNodeName());
251adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IOException ioe) {
252adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Unexpected IOException " + ioe.toString());
253adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SAXException sax) {
254adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Unexpected SAXException " + sax.toString());
255adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
256adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
257adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // case 2: Try to call parse with null argument
258adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
259adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            db.parse((File)null);
260adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Expected IllegalArgumentException was not thrown");
261adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalArgumentException iae) {
262adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // expected
263adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IOException ioe) {
264adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Unexpected IOException " + ioe.toString());
265adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SAXException sax) {
266adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Unexpected SAXException " + sax.toString());
267adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
268adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
269adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // case 3: Try to parse a non-existent file
270adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
271adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            db.parse(new File("_"));
272adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Expected IOException was not thrown");
273adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IOException ioe) {
274adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // expected
275adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SAXException sax) {
276adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Unexpected SAXException " + sax.toString());
277adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
278adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
279adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // case 4: Try to parse incorrect xml file
2801ec94feeb09591c30996c7c0834d6f131e204922Jesse Wilson        f = Support_Resources.resourceToTempFile("/wrong.xml");
281adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
282adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            db.parse(f);
283adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Expected SAXException was not thrown");
284adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IOException ioe) {
285adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Unexpected IOException " + ioe.toString());
286adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SAXException sax) {
287adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // expected
288adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
289adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
290adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
291adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
292229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * javax.xml.parsers.DocumentBuilder#parse(java.io.InputStream)
293adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Case 1: Try to parse correct xml document.
294adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Case 2: Try to call parse() with null argument.
295adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Case 3: Try to parse a non-existent file.
296adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Case 4: Try to parse incorrect xml file.
297adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
298adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_parseLjava_io_InputStream() {
299adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        InputStream is = getClass().getResourceAsStream("/simple.xml");
300adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // case 1: Trivial use.
301adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
302adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Document d = db.parse(is);
303adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertNotNull(d);
304adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // TBD getXmlEncoding() IS NOT SUPPORTED
305adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // assertEquals("ISO-8859-1", d.getXmlEncoding());
306adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertEquals(2, d.getChildNodes().getLength());
307adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertEquals("#comment",
308adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    d.getChildNodes().item(0).getNodeName());
309adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertEquals("breakfast_menu",
310adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    d.getChildNodes().item(1).getNodeName());
311adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IOException ioe) {
312adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Unexpected IOException " + ioe.toString());
313adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SAXException sax) {
314adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Unexpected SAXException " + sax.toString());
315adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
316adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
317adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // case 2: Try to call parse with null argument
318adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
319adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            db.parse((InputStream)null);
320adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Expected IllegalArgumentException was not thrown");
321adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalArgumentException iae) {
322adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // expected
323adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IOException ioe) {
324adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Unexpected IOException " + ioe.toString());
325adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SAXException sax) {
326adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Unexpected SAXException " + sax.toString());
327adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
328adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
329adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // case 3: Try to parse a non-existent file
330adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
331adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            db.parse(new FileInputStream("_"));
332adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Expected IOException was not thrown");
333adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IOException ioe) {
334adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // expected
335adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SAXException sax) {
336adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Unexpected SAXException " + sax.toString());
337adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
338adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
339adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // case 4: Try to parse incorrect xml file
340adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
341adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            is = getClass().getResourceAsStream("/wrong.xml");
342adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            db.parse(is);
343adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Expected SAXException was not thrown");
344adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IOException ioe) {
345adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Unexpected IOException " + ioe.toString());
346adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SAXException sax) {
347adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // expected
348adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
349adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
350adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
351adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
352229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * javax.xml.parsers.DocumentBuilder#parse(java.io.InputStream)
353adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Case 1: Try to parse correct xml document.
354adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Case 2: Try to call parse() with null argument.
355adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Case 3: Try to parse a non-existent file.
356adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Case 4: Try to parse incorrect xml file.
357adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
358adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testParseInputSource() {
359adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        InputStream stream = getClass().getResourceAsStream("/simple.xml");
360adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        InputSource is = new InputSource(stream);
361f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
362adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // case 1: Trivial use.
363adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
364adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Document d = db.parse(is);
365adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertNotNull(d);
366adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // TBD getXmlEncoding() IS NOT SUPPORTED
367adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // assertEquals("ISO-8859-1", d.getXmlEncoding());
368adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertEquals(2, d.getChildNodes().getLength());
369adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertEquals("#comment",
370adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    d.getChildNodes().item(0).getNodeName());
371adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertEquals("breakfast_menu",
372adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    d.getChildNodes().item(1).getNodeName());
373adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IOException ioe) {
374adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Unexpected IOException " + ioe.toString());
375adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SAXException sax) {
376adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Unexpected SAXException " + sax.toString());
377adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
378adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
379adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // case 2: Try to call parse with null argument
380adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
381adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            db.parse((InputSource)null);
382adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Expected IllegalArgumentException was not thrown");
383adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalArgumentException iae) {
384adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // expected
385adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IOException ioe) {
386adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Unexpected IOException " + ioe.toString());
387adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SAXException sax) {
388adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Unexpected SAXException " + sax.toString());
389adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
390adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
391adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // case 3: Try to parse a non-existent file
392adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
393adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            db.parse(new InputSource(new FileInputStream("_")));
394adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Expected IOException was not thrown");
395adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IOException ioe) {
396adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // expected
397adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SAXException sax) {
398adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Unexpected SAXException " + sax.toString());
399adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
400adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
401adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // case 4: Try to parse incorrect xml file
402adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
403adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            is = new InputSource(getClass().getResourceAsStream("/wrong.xml"));
404adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            db.parse(is);
405adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Expected SAXException was not thrown");
406adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IOException ioe) {
407adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Unexpected IOException " + ioe.toString());
408adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SAXException sax) {
409adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // expected
410adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
411adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
412f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
413adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
414229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * javax.xml.parsers.DocumentBuilder#parse(java.io.InputStream,
415adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *     java.lang.String)
416adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Case 1: Try to parse correct xml document.
417adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Case 2: Try to call parse() with null argument.
418adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Case 3: Try to parse a non-existent file.
419adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Case 4: Try to parse incorrect xml file.
420adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
421adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_parseLjava_io_InputStreamLjava_lang_String() {
422adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        InputStream is = getClass().getResourceAsStream("/systemid.xml");
423adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // case 1: Trivial use.
424adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
425adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Document d = db.parse(is, SAXParserTestSupport.XML_SYSTEM_ID);
426adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertNotNull(d);
427adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//           TBD getXmlEncoding() is not supported
428adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//           assertEquals("UTF-8", d.getXmlEncoding());
429adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertEquals(4, d.getChildNodes().getLength());
430adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertEquals("collection",
431adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    d.getChildNodes().item(0).getNodeName());
432adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertEquals("#comment",
433adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    d.getChildNodes().item(1).getNodeName());
434adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertEquals("collection",
435adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    d.getChildNodes().item(2).getNodeName());
436adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertEquals("#comment",
437adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    d.getChildNodes().item(3).getNodeName());
438adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IOException ioe) {
439adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Unexpected IOException " + ioe.toString());
440adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SAXException sax) {
441adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Unexpected SAXException " + sax.toString());
442adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
443adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
444adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // case 2: Try to call parse with null argument
445adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
446adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            db.parse((InputStream)null, SAXParserTestSupport.XML_SYSTEM_ID);
447adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Expected IllegalArgumentException was not thrown");
448adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalArgumentException iae) {
449adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // expected
450adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IOException ioe) {
451adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Unexpected IOException " + ioe.toString());
452adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SAXException sax) {
453adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Unexpected SAXException " + sax.toString());
454adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
455adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
456adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // case 3: Try to parse a non-existent file
457adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// Doesn't make sense this way...
458adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//        try {
459adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//            db.parse(is, "/");
460adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//            fail("Expected IOException was not thrown");
461adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//        } catch (IOException ioe) {
462adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//            // expected
463adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//        } catch (SAXException sax) {
464adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//            fail("Unexpected SAXException " + sax.toString());
465adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//        }
466adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
467adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // case 4: Try to parse incorrect xml file
468adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
469adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            is = getClass().getResourceAsStream("/wrong.xml");
470adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            db.parse(is, SAXParserTestSupport.XML_SYSTEM_ID);
471adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Expected SAXException was not thrown");
472adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IOException ioe) {
473adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Unexpected IOException " + ioe.toString());
474adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SAXException sax) {
475adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // expected
476adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
477adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
478adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
479adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
480229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * javax.xml.parsers.DocumentBuilder#parse(java.lang.String)
481adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Case 1: Try to parse correct xml document.
482adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Case 2: Try to call parse() with null argument.
483adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Case 3: Try to parse a non-existent uri.
484adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Case 4: Try to parse incorrect xml file.
485adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
486bda224da00c0372a7752b1304aeda98e2930c4afJesse Wilson    public void test_parseLjava_lang_String() throws Exception {
487adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // case 1: Trivial use.
4885ab82b77afbc8af3b91e90ab46b0a7cc0a090f04Jesse Wilson        URL resource = getClass().getResource("/simple.xml");
4895ab82b77afbc8af3b91e90ab46b0a7cc0a090f04Jesse Wilson        Document d = db.parse(resource.toString());
490bda224da00c0372a7752b1304aeda98e2930c4afJesse Wilson        assertNotNull(d);
491adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//          TBD  getXmlEncoding() is not supported
492adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//          assertEquals("ISO-8859-1", d.getXmlEncoding());
493bda224da00c0372a7752b1304aeda98e2930c4afJesse Wilson        assertEquals(2, d.getChildNodes().getLength());
494bda224da00c0372a7752b1304aeda98e2930c4afJesse Wilson        assertEquals("#comment",
495bda224da00c0372a7752b1304aeda98e2930c4afJesse Wilson                d.getChildNodes().item(0).getNodeName());
496bda224da00c0372a7752b1304aeda98e2930c4afJesse Wilson        assertEquals("breakfast_menu",
497bda224da00c0372a7752b1304aeda98e2930c4afJesse Wilson                d.getChildNodes().item(1).getNodeName());
498adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
499adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // case 2: Try to call parse with null argument
500adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
501adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            db.parse((String)null);
502adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Expected IllegalArgumentException was not thrown");
503adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalArgumentException iae) {
504adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // expected
505adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
506adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
507adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // case 3: Try to parse a non-existent uri
508adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
509adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            db.parse("_");
510adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Expected IOException was not thrown");
511adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IOException ioe) {
512adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // expected
513adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
514adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
515adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // case 4: Try to parse incorrect xml file
516adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
5175ab82b77afbc8af3b91e90ab46b0a7cc0a090f04Jesse Wilson            resource = getClass().getResource("/wrong.xml");
5185ab82b77afbc8af3b91e90ab46b0a7cc0a090f04Jesse Wilson            db.parse(resource.toString());
519adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Expected SAXException was not thrown");
520adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SAXException sax) {
521adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // expected
522adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
523adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
524adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
525adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testReset() {
526adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Make sure EntityResolver gets reset
527adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        InputStream source = new ByteArrayInputStream("<a>&foo;</a>".getBytes());
528adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        InputStream entity = new ByteArrayInputStream("bar".getBytes());
529f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
530adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        MockResolver resolver = new MockResolver();
531adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        resolver.addEntity("foo", "foo", new InputSource(entity));
532adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
533adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Document d;
534f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
535adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
536adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            db = dbf.newDocumentBuilder();
537adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            db.setEntityResolver(resolver);
538adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            db.reset();
539adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            d = db.parse(source);
540adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (Exception e) {
541adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            throw new RuntimeException("Unexpected exception", e);
542adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
543f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
544adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Element root = (Element)d.getElementsByTagName("a").item(0);
545adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("foo", ((EntityReference)root.getFirstChild()).getNodeName());
546adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
547adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Make sure ErrorHandler gets reset
548adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        source = new ByteArrayInputStream("</a>".getBytes());
549adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
550adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        MethodLogger logger = new MethodLogger();
551adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        ErrorHandler handler = new MockHandler(logger);
552f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
553adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
554adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            db = dbf.newDocumentBuilder();
555adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            db.setErrorHandler(handler);
556adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            db.reset();
557adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            d = db.parse(source);
558adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SAXParseException e) {
559adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // Expected
560adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (Exception e) {
561f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes            throw new RuntimeException("Unexpected exception", e);
562adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
563adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
564adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(0, logger.size());
565adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
566adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
567adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testSetErrorHandler() {
568adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Ordinary case
569adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        InputStream source = new ByteArrayInputStream("</a>".getBytes());
570adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
571adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        MethodLogger logger = new MethodLogger();
572adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        ErrorHandler handler = new MockHandler(logger);
573f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
574adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
575adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            db = dbf.newDocumentBuilder();
576adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            db.setErrorHandler(handler);
577adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            db.parse(source);
578adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SAXParseException e) {
579adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // Expected, ErrorHandler does not mask exception
580adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (Exception e) {
581f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes            throw new RuntimeException("Unexpected exception", e);
582adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
583adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
584adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("error", logger.getMethod());
585adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue(logger.getArgs()[0] instanceof SAXParseException);
586f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
587f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes        // null case
588adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        source = new ByteArrayInputStream("</a>".getBytes());
589adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
590adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
591adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            db = dbf.newDocumentBuilder();
592adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            db.setErrorHandler(null);
593adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            db.parse(source);
594adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SAXParseException e) {
595adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // Expected
596adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (Exception e) {
597f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes            throw new RuntimeException("Unexpected exception", e);
598adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
599adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
600f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
601adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testSetEntityResolver() {
602adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Ordinary case
603adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        InputStream source = new ByteArrayInputStream("<a>&foo;</a>".getBytes());
604adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        InputStream entity = new ByteArrayInputStream("bar".getBytes());
605f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
606adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        MockResolver resolver = new MockResolver();
607adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        resolver.addEntity("foo", "foo", new InputSource(entity));
608adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
609adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Document d;
610f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
611adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
612adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            db = dbf.newDocumentBuilder();
613adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            db.setEntityResolver(resolver);
614adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            d = db.parse(source);
615adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (Exception e) {
616adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            throw new RuntimeException("Unexpected exception", e);
617adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
618f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
619adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Element root = (Element)d.getElementsByTagName("a").item(0);
620adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("bar", ((Text)root.getFirstChild()).getData());
621f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
622f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes        // null case
623adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        source = new ByteArrayInputStream("<a>&foo;</a>".getBytes());
624f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
625adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
626adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            db = dbf.newDocumentBuilder();
627adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            db.setEntityResolver(null);
628adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            d = db.parse(source);
629adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (Exception e) {
630adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            throw new RuntimeException("Unexpected exception", e);
631adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
632f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
633adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        root = (Element)d.getElementsByTagName("a").item(0);
634adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("foo", ((EntityReference)root.getFirstChild()).getNodeName());
635adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
636adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
637adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project}
638