DocumentBuilderTest.java revision 5ab82b77afbc8af3b91e90ab46b0a7cc0a090f04
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
19c36982772a413bb14eb6d865013aac03544441d1Jesse Wilsonimport dalvik.annotation.KnownFailure;
20c36982772a413bb14eb6d865013aac03544441d1Jesse Wilsonimport dalvik.annotation.TestLevel;
21c36982772a413bb14eb6d865013aac03544441d1Jesse Wilsonimport dalvik.annotation.TestTargetClass;
22c36982772a413bb14eb6d865013aac03544441d1Jesse Wilsonimport dalvik.annotation.TestTargetNew;
23adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport junit.framework.TestCase;
24adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.w3c.dom.DOMImplementation;
25adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.w3c.dom.Document;
26adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.w3c.dom.Element;
27adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.w3c.dom.EntityReference;
28adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.w3c.dom.Text;
29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.xml.sax.EntityResolver;
30adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.xml.sax.ErrorHandler;
31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.xml.sax.InputSource;
32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.xml.sax.SAXException;
33adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.xml.sax.SAXParseException;
34adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport tests.api.org.xml.sax.support.MethodLogger;
35adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport tests.api.org.xml.sax.support.MockHandler;
36adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport tests.api.org.xml.sax.support.MockResolver;
371ec94feeb09591c30996c7c0834d6f131e204922Jesse Wilsonimport tests.support.resource.Support_Resources;
38c36982772a413bb14eb6d865013aac03544441d1Jesse Wilsonimport tests.util.TestEnvironment;
39c36982772a413bb14eb6d865013aac03544441d1Jesse Wilson
40c36982772a413bb14eb6d865013aac03544441d1Jesse Wilsonimport javax.xml.parsers.DocumentBuilder;
41c36982772a413bb14eb6d865013aac03544441d1Jesse Wilsonimport javax.xml.parsers.DocumentBuilderFactory;
42c36982772a413bb14eb6d865013aac03544441d1Jesse Wilsonimport java.io.ByteArrayInputStream;
43c36982772a413bb14eb6d865013aac03544441d1Jesse Wilsonimport java.io.File;
44c36982772a413bb14eb6d865013aac03544441d1Jesse Wilsonimport java.io.FileInputStream;
45c36982772a413bb14eb6d865013aac03544441d1Jesse Wilsonimport java.io.IOException;
46c36982772a413bb14eb6d865013aac03544441d1Jesse Wilsonimport java.io.InputStream;
475ab82b77afbc8af3b91e90ab46b0a7cc0a090f04Jesse Wilsonimport java.net.URL;
48adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
49adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project@TestTargetClass(DocumentBuilder.class)
50adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpublic class DocumentBuilderTest extends TestCase {
51adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
52adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    private class MockDocumentBuilder extends DocumentBuilder {
53adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
54adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public MockDocumentBuilder() {
55adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            super();
56adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
57adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
58adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        /*
59adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project         * @see javax.xml.parsers.DocumentBuilder#getDOMImplementation()
60adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project         */
61adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @Override
62adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public DOMImplementation getDOMImplementation() {
63adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // it is a fake
64adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return null;
65adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
66adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
67adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        /*
68adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project         * @see javax.xml.parsers.DocumentBuilder#isNamespaceAware()
69adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project         */
70adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @Override
71adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public boolean isNamespaceAware() {
72adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // it is a fake
73adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return false;
74adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
75adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
76adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        /*
77adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project         * @see javax.xml.parsers.DocumentBuilder#isValidating()
78adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project         */
79adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @Override
80adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public boolean isValidating() {
81adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // it is a fake
82adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return false;
83adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
84adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
85adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        /*
86adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project         * @see javax.xml.parsers.DocumentBuilder#newDocument()
87adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project         */
88adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @Override
89adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public Document newDocument() {
90adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // it is a fake
91adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return null;
92adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
93adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
94adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        /*
95adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project         * @see javax.xml.parsers.DocumentBuilder#parse(org.xml.sax.InputSource)
96adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project         */
97adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @Override
98adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public Document parse(InputSource is) throws SAXException, IOException {
99adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // it is a fake
100adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return null;
101adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
102adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
103adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        /*
104adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project         * @see javax.xml.parsers.DocumentBuilder#setEntityResolver(
105adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project         *  org.xml.sax.EntityResolver)
106adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project         */
107adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @Override
108adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public void setEntityResolver(EntityResolver er) {
109adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // it is a fake
110adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
111adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
112adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        /*
113adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project         * @see javax.xml.parsers.DocumentBuilder#setErrorHandler(
114adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project         *  org.xml.sax.ErrorHandler)
115adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project         */
116adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @Override
117adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public void setErrorHandler(ErrorHandler eh) {
118adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // it is a fake
119adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
120adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
121adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public Object clone() throws CloneNotSupportedException {
122adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return super.clone();
123adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
124adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
125adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
126adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    DocumentBuilderFactory dbf;
127adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
128adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    DocumentBuilder db;
129adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
130adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    protected void setUp() throws Exception {
131c36982772a413bb14eb6d865013aac03544441d1Jesse Wilson        TestEnvironment.reset();
132c36982772a413bb14eb6d865013aac03544441d1Jesse Wilson
133adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        dbf = DocumentBuilderFactory.newInstance();
134adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
135adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        dbf.setIgnoringElementContentWhitespace(true);
136adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
137adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        db = dbf.newDocumentBuilder();
138adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        super.setUp();
139adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
140adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
141adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    protected void tearDown() throws Exception {
142adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        super.tearDown();
143adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
144adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
145adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    @TestTargetNew(
146adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        level = TestLevel.COMPLETE,
147adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        notes = "",
148adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        method = "DocumentBuilder",
149adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        args = {}
150adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    )
151adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testDocumentBuilder() {
152adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
153adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            new MockDocumentBuilder();
154adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (Exception e) {
155adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("unexpected exception " + e.toString());
156adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
157adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
158adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
159adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
160adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *  @tests javax.xml.parsers.DocumentBuilder#getSchema()
161adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *  TBD getSchema() is not supported
162adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
163adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /*   public void test_getSchema() {
164adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertNull(db.getSchema());
165adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        SchemaFactory sf =
166adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
167adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
168adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Schema schema = sf.newSchema();
169adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            dbf.setSchema(schema);
170adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertNotNull(dbf.newDocumentBuilder().getSchema());
171adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (ParserConfigurationException pce) {
172adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Unexpected ParserConfigurationException " + pce.toString());
173adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SAXException sax) {
174adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Unexpected SAXException " + sax.toString());
175adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
176adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
177adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project*/
178adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    @TestTargetNew(
179adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        level = TestLevel.COMPLETE,
180adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        notes = "",
181adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        method = "newDocument",
182adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        args = { }
183adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    )
184adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testNewDocument() {
185adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Document d;
186adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
187adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
188adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            d = dbf.newDocumentBuilder().newDocument();
189adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (Exception e) {
190adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            throw new RuntimeException("Unexpected exception", e);
191adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
192adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
193adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertNotNull(d);
194adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertNull(d.getDoctype());
195adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertNull(d.getDocumentElement());
196adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertNull(d.getNamespaceURI());
197adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
198adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
199adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    @TestTargetNew(
200adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        level = TestLevel.COMPLETE,
201adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        notes = "",
202adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        method = "getDOMImplementation",
203adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        args = { }
204adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    )
205adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testGetImplementation() {
206adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        DOMImplementation d;
207adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
208adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
209adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            d = dbf.newDocumentBuilder().getDOMImplementation();
210adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (Exception e) {
211adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            throw new RuntimeException("Unexpected exception", e);
212adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
213adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
214adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertNotNull(d);
215adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
216adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
217adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    @TestTargetNew(
218adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        level = TestLevel.COMPLETE,
219adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        notes = "",
220adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        method = "isNamespaceAware",
221adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        args = {}
222adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    )
223adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testIsNamespaceAware() {
224adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
225adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            dbf.setNamespaceAware(true);
226adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertTrue(dbf.newDocumentBuilder().isNamespaceAware());
227adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            dbf.setNamespaceAware(false);
228adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertFalse(dbf.newDocumentBuilder().isNamespaceAware());
229adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (Exception e) {
230adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            throw new RuntimeException("Unexpected exception", e);
231adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
232adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
233adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
234adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    @TestTargetNew(
235adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        level = TestLevel.SUFFICIENT,
236adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        notes = "No validating parser in Android, hence not tested",
237adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        method = "isValidating",
238adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        args = {}
239adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    )
240adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testIsValidating() {
241adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
242adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            dbf.setValidating(false);
243adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertFalse(dbf.newDocumentBuilder().isValidating());
244adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (Exception e) {
245adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            throw new RuntimeException("Unexpected exception", e);
246adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
247adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
248adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
249adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    @TestTargetNew(
250adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        level = TestLevel.SUFFICIENT,
251adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        notes = "No XInclude-aware parser in Android, hence not tested",
252adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        method = "isXIncludeAware",
253adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        args = {}
254adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    )
255adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    @KnownFailure("Should handle XIncludeAware flag more gracefully")
256adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testIsXIncludeAware() {
257adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
258adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            dbf.setXIncludeAware(false);
259adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertFalse(dbf.newDocumentBuilder().isXIncludeAware());
260adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (Exception e) {
261adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            throw new RuntimeException("Unexpected exception", e);
262adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
263adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
264adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
265adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
266c36982772a413bb14eb6d865013aac03544441d1Jesse Wilson     * Tests that the Base URI for the document is populated with the file URI.
267c36982772a413bb14eb6d865013aac03544441d1Jesse Wilson     */
268c36982772a413bb14eb6d865013aac03544441d1Jesse Wilson    @TestTargetNew(
269c36982772a413bb14eb6d865013aac03544441d1Jesse Wilson        level = TestLevel.COMPLETE,
270c36982772a413bb14eb6d865013aac03544441d1Jesse Wilson        notes = "",
271c36982772a413bb14eb6d865013aac03544441d1Jesse Wilson        method = "parse",
272c36982772a413bb14eb6d865013aac03544441d1Jesse Wilson        args = {java.io.File.class}
273c36982772a413bb14eb6d865013aac03544441d1Jesse Wilson    )
274c36982772a413bb14eb6d865013aac03544441d1Jesse Wilson    public void testGetBaseURI() throws IOException, SAXException {
2751ec94feeb09591c30996c7c0834d6f131e204922Jesse Wilson        File f = Support_Resources.resourceToTempFile("/simple.xml");
276c36982772a413bb14eb6d865013aac03544441d1Jesse Wilson        Document d = db.parse(f);
277c36982772a413bb14eb6d865013aac03544441d1Jesse Wilson        assertTrue(d.getDocumentElement().getBaseURI().startsWith("file://"));
278c36982772a413bb14eb6d865013aac03544441d1Jesse Wilson    }
279c36982772a413bb14eb6d865013aac03544441d1Jesse Wilson
280c36982772a413bb14eb6d865013aac03544441d1Jesse Wilson    /**
281adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @tests javax.xml.parsers.DocumentBuilder#parse(java.io.File)
282adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Case 1: Try to parse correct xml document.
283adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Case 2: Try to call parse() with null argument.
284adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Case 3: Try to parse a non-existent file.
285adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Case 4: Try to parse incorrect xml file.
286adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
287adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    @TestTargetNew(
288adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        level = TestLevel.COMPLETE,
289adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        notes = "",
290adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        method = "parse",
291adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        args = {java.io.File.class}
292adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    )
29306739ed0b37e8a6fad76cdd59e8bb29f8aa813b6Jorg Pleumann    public void test_parseLjava_io_File() throws IOException {
2941ec94feeb09591c30996c7c0834d6f131e204922Jesse Wilson        File f = Support_Resources.resourceToTempFile("/simple.xml");
29506739ed0b37e8a6fad76cdd59e8bb29f8aa813b6Jorg Pleumann
296adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // case 1: Trivial use.
297adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
298adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Document d = db.parse(f);
299adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertNotNull(d);
300adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project       //      TBD getXmlEncoding() IS NOT SUPPORTED
301adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project       //     assertEquals("ISO-8859-1", d.getXmlEncoding());
302adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertEquals(2, d.getChildNodes().getLength());
303adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertEquals("#comment",
304adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    d.getChildNodes().item(0).getNodeName());
305adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertEquals("breakfast_menu",
306adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    d.getChildNodes().item(1).getNodeName());
307adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IOException ioe) {
308adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Unexpected IOException " + ioe.toString());
309adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SAXException sax) {
310adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Unexpected SAXException " + sax.toString());
311adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
312adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
313adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // case 2: Try to call parse with null argument
314adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
315adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            db.parse((File)null);
316adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Expected IllegalArgumentException was not thrown");
317adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalArgumentException iae) {
318adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // expected
319adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IOException ioe) {
320adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Unexpected IOException " + ioe.toString());
321adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SAXException sax) {
322adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Unexpected SAXException " + sax.toString());
323adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
324adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
325adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // case 3: Try to parse a non-existent file
326adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
327adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            db.parse(new File("_"));
328adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Expected IOException was not thrown");
329adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IOException ioe) {
330adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // expected
331adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SAXException sax) {
332adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Unexpected SAXException " + sax.toString());
333adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
334adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
335adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // case 4: Try to parse incorrect xml file
3361ec94feeb09591c30996c7c0834d6f131e204922Jesse Wilson        f = Support_Resources.resourceToTempFile("/wrong.xml");
337adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
338adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            db.parse(f);
339adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Expected SAXException was not thrown");
340adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IOException ioe) {
341adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Unexpected IOException " + ioe.toString());
342adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SAXException sax) {
343adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // expected
344adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
345adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
346adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
347adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
348adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @tests javax.xml.parsers.DocumentBuilder#parse(java.io.InputStream)
349adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Case 1: Try to parse correct xml document.
350adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Case 2: Try to call parse() with null argument.
351adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Case 3: Try to parse a non-existent file.
352adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Case 4: Try to parse incorrect xml file.
353adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
354adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    @TestTargetNew(
355adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        level = TestLevel.COMPLETE,
356adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        notes = "",
357adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        method = "parse",
358adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        args = {java.io.InputStream.class}
359adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    )
360adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_parseLjava_io_InputStream() {
361adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        InputStream is = getClass().getResourceAsStream("/simple.xml");
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((InputStream)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 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 = 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    }
412adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
413adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
414adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @tests javax.xml.parsers.DocumentBuilder#parse(java.io.InputStream)
415adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Case 1: Try to parse correct xml document.
416adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Case 2: Try to call parse() with null argument.
417adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Case 3: Try to parse a non-existent file.
418adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Case 4: Try to parse incorrect xml file.
419adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
420adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    @TestTargetNew(
421adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        level = TestLevel.COMPLETE,
422adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        notes = "",
423adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        method = "parse",
424adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        args = { InputSource.class }
425adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    )
426adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testParseInputSource() {
427adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        InputStream stream = getClass().getResourceAsStream("/simple.xml");
428adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        InputSource is = new InputSource(stream);
429adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
430adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // case 1: Trivial use.
431adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
432adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Document d = db.parse(is);
433adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertNotNull(d);
434adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // TBD getXmlEncoding() IS NOT SUPPORTED
435adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // assertEquals("ISO-8859-1", d.getXmlEncoding());
436adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertEquals(2, d.getChildNodes().getLength());
437adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertEquals("#comment",
438adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    d.getChildNodes().item(0).getNodeName());
439adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertEquals("breakfast_menu",
440adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    d.getChildNodes().item(1).getNodeName());
441adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IOException ioe) {
442adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Unexpected IOException " + ioe.toString());
443adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SAXException sax) {
444adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Unexpected SAXException " + sax.toString());
445adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
446adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
447adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // case 2: Try to call parse with null argument
448adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
449adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            db.parse((InputSource)null);
450adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Expected IllegalArgumentException was not thrown");
451adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalArgumentException iae) {
452adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // expected
453adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IOException ioe) {
454adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Unexpected IOException " + ioe.toString());
455adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SAXException sax) {
456adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Unexpected SAXException " + sax.toString());
457adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
458adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
459adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // case 3: Try to parse a non-existent file
460adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
461adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            db.parse(new InputSource(new FileInputStream("_")));
462adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Expected IOException was not thrown");
463adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IOException ioe) {
464adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // expected
465adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SAXException sax) {
466adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Unexpected SAXException " + sax.toString());
467adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
468adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
469adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // case 4: Try to parse incorrect xml file
470adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
471adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            is = new InputSource(getClass().getResourceAsStream("/wrong.xml"));
472adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            db.parse(is);
473adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Expected SAXException was not thrown");
474adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IOException ioe) {
475adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Unexpected IOException " + ioe.toString());
476adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SAXException sax) {
477adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // expected
478adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
479adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
480adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
481adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
482adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @tests javax.xml.parsers.DocumentBuilder#parse(java.io.InputStream,
483adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *     java.lang.String)
484adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Case 1: Try to parse correct xml document.
485adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Case 2: Try to call parse() with null argument.
486adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Case 3: Try to parse a non-existent file.
487adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Case 4: Try to parse incorrect xml file.
488adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
489adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    @TestTargetNew(
490adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        level = TestLevel.COMPLETE,
491adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        notes = "",
492adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        method = "parse",
493adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        args = {java.io.InputStream.class, java.lang.String.class}
494adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    )
495adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_parseLjava_io_InputStreamLjava_lang_String() {
496adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        InputStream is = getClass().getResourceAsStream("/systemid.xml");
497adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // case 1: Trivial use.
498adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
499adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Document d = db.parse(is, SAXParserTestSupport.XML_SYSTEM_ID);
500adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertNotNull(d);
501adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//           TBD getXmlEncoding() is not supported
502adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//           assertEquals("UTF-8", d.getXmlEncoding());
503adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertEquals(4, d.getChildNodes().getLength());
504adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertEquals("collection",
505adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    d.getChildNodes().item(0).getNodeName());
506adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertEquals("#comment",
507adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    d.getChildNodes().item(1).getNodeName());
508adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertEquals("collection",
509adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    d.getChildNodes().item(2).getNodeName());
510adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertEquals("#comment",
511adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    d.getChildNodes().item(3).getNodeName());
512adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IOException ioe) {
513adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Unexpected IOException " + ioe.toString());
514adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SAXException sax) {
515adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Unexpected SAXException " + sax.toString());
516adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
517adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
518adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // case 2: Try to call parse with null argument
519adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
520adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            db.parse((InputStream)null, SAXParserTestSupport.XML_SYSTEM_ID);
521adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Expected IllegalArgumentException was not thrown");
522adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalArgumentException iae) {
523adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // expected
524adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IOException ioe) {
525adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Unexpected IOException " + ioe.toString());
526adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SAXException sax) {
527adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Unexpected SAXException " + sax.toString());
528adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
529adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
530adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // case 3: Try to parse a non-existent file
531adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// Doesn't make sense this way...
532adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//        try {
533adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//            db.parse(is, "/");
534adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//            fail("Expected IOException was not thrown");
535adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//        } catch (IOException ioe) {
536adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//            // expected
537adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//        } catch (SAXException sax) {
538adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//            fail("Unexpected SAXException " + sax.toString());
539adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//        }
540adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
541adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // case 4: Try to parse incorrect xml file
542adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
543adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            is = getClass().getResourceAsStream("/wrong.xml");
544adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            db.parse(is, SAXParserTestSupport.XML_SYSTEM_ID);
545adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Expected SAXException was not thrown");
546adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IOException ioe) {
547adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Unexpected IOException " + ioe.toString());
548adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SAXException sax) {
549adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // expected
550adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
551adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
552adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
553adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
554adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @tests javax.xml.parsers.DocumentBuilder#parse(java.lang.String)
555adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Case 1: Try to parse correct xml document.
556adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Case 2: Try to call parse() with null argument.
557adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Case 3: Try to parse a non-existent uri.
558adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Case 4: Try to parse incorrect xml file.
559adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
560adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    @TestTargetNew(
561adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        level = TestLevel.COMPLETE,
562adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        notes = "",
563adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        method = "parse",
564adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        args = {java.lang.String.class}
565adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    )
566bda224da00c0372a7752b1304aeda98e2930c4afJesse Wilson    public void test_parseLjava_lang_String() throws Exception {
567adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // case 1: Trivial use.
5685ab82b77afbc8af3b91e90ab46b0a7cc0a090f04Jesse Wilson        URL resource = getClass().getResource("/simple.xml");
5695ab82b77afbc8af3b91e90ab46b0a7cc0a090f04Jesse Wilson        Document d = db.parse(resource.toString());
570bda224da00c0372a7752b1304aeda98e2930c4afJesse Wilson        assertNotNull(d);
571adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//          TBD  getXmlEncoding() is not supported
572adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project//          assertEquals("ISO-8859-1", d.getXmlEncoding());
573bda224da00c0372a7752b1304aeda98e2930c4afJesse Wilson        assertEquals(2, d.getChildNodes().getLength());
574bda224da00c0372a7752b1304aeda98e2930c4afJesse Wilson        assertEquals("#comment",
575bda224da00c0372a7752b1304aeda98e2930c4afJesse Wilson                d.getChildNodes().item(0).getNodeName());
576bda224da00c0372a7752b1304aeda98e2930c4afJesse Wilson        assertEquals("breakfast_menu",
577bda224da00c0372a7752b1304aeda98e2930c4afJesse Wilson                d.getChildNodes().item(1).getNodeName());
578adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
579adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // case 2: Try to call parse with null argument
580adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
581adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            db.parse((String)null);
582adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Expected IllegalArgumentException was not thrown");
583adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalArgumentException iae) {
584adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // expected
585adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
586adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
587adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // case 3: Try to parse a non-existent uri
588adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
589adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            db.parse("_");
590adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Expected IOException was not thrown");
591adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IOException ioe) {
592adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // expected
593adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
594adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
595adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // case 4: Try to parse incorrect xml file
596adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
5975ab82b77afbc8af3b91e90ab46b0a7cc0a090f04Jesse Wilson            resource = getClass().getResource("/wrong.xml");
5985ab82b77afbc8af3b91e90ab46b0a7cc0a090f04Jesse Wilson            db.parse(resource.toString());
599adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Expected SAXException was not thrown");
600adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SAXException sax) {
601adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // expected
602adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
603adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
604adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
605adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    @TestTargetNew(
606adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        level = TestLevel.COMPLETE,
607adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        method = "reset",
608adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        args = { }
609adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    )
610adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    @KnownFailure("Android DocumentBuilder should implement reset() properly")
611adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testReset() {
612adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Make sure EntityResolver gets reset
613adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        InputStream source = new ByteArrayInputStream("<a>&foo;</a>".getBytes());
614adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        InputStream entity = new ByteArrayInputStream("bar".getBytes());
615adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
616adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        MockResolver resolver = new MockResolver();
617adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        resolver.addEntity("foo", "foo", new InputSource(entity));
618adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
619adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Document d;
620adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
621adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
622adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            db = dbf.newDocumentBuilder();
623adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            db.setEntityResolver(resolver);
624adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            db.reset();
625adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            d = db.parse(source);
626adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (Exception e) {
627adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            throw new RuntimeException("Unexpected exception", e);
628adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
629adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
630adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Element root = (Element)d.getElementsByTagName("a").item(0);
631adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("foo", ((EntityReference)root.getFirstChild()).getNodeName());
632adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
633adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Make sure ErrorHandler gets reset
634adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        source = new ByteArrayInputStream("</a>".getBytes());
635adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
636adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        MethodLogger logger = new MethodLogger();
637adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        ErrorHandler handler = new MockHandler(logger);
638adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
639adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
640adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            db = dbf.newDocumentBuilder();
641adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            db.setErrorHandler(handler);
642adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            db.reset();
643adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            d = db.parse(source);
644adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SAXParseException e) {
645adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // Expected
646adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (Exception e) {
647adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            throw new RuntimeException("Unexpected exception", e);
648adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
649adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
650adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(0, logger.size());
651adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
652adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
653adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    @TestTargetNew(
654adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        level = TestLevel.COMPLETE,
655adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        method = "setErrorHandler",
656adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        args = { ErrorHandler.class }
657adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    )
658adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testSetErrorHandler() {
659adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Ordinary case
660adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        InputStream source = new ByteArrayInputStream("</a>".getBytes());
661adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
662adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        MethodLogger logger = new MethodLogger();
663adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        ErrorHandler handler = new MockHandler(logger);
664adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
665adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
666adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            db = dbf.newDocumentBuilder();
667adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            db.setErrorHandler(handler);
668adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            db.parse(source);
669adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SAXParseException e) {
670adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // Expected, ErrorHandler does not mask exception
671adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (Exception e) {
672adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            throw new RuntimeException("Unexpected exception", e);
673adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
674adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
675adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("error", logger.getMethod());
676adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue(logger.getArgs()[0] instanceof SAXParseException);
677adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
678adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // null case
679adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        source = new ByteArrayInputStream("</a>".getBytes());
680adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
681adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
682adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            db = dbf.newDocumentBuilder();
683adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            db.setErrorHandler(null);
684adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            db.parse(source);
685adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SAXParseException e) {
686adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // Expected
687adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (Exception e) {
688adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            throw new RuntimeException("Unexpected exception", e);
689adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
690adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
691adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
692adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    @TestTargetNew(
693adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        level = TestLevel.COMPLETE,
694adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        method = "setEntityResolver",
695adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        args = { EntityResolver.class }
696adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    )
697adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    @KnownFailure("Android DocumentBuilder should support entity resolving")
698adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testSetEntityResolver() {
699adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Ordinary case
700adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        InputStream source = new ByteArrayInputStream("<a>&foo;</a>".getBytes());
701adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        InputStream entity = new ByteArrayInputStream("bar".getBytes());
702adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
703adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        MockResolver resolver = new MockResolver();
704adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        resolver.addEntity("foo", "foo", new InputSource(entity));
705adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
706adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Document d;
707adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
708adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
709adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            db = dbf.newDocumentBuilder();
710adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            db.setEntityResolver(resolver);
711adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            d = db.parse(source);
712adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (Exception e) {
713adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            throw new RuntimeException("Unexpected exception", e);
714adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
715adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
716adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Element root = (Element)d.getElementsByTagName("a").item(0);
717adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("bar", ((Text)root.getFirstChild()).getData());
718adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
719adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // null case
720adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        source = new ByteArrayInputStream("<a>&foo;</a>".getBytes());
721adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
722adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
723adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            db = dbf.newDocumentBuilder();
724adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            db.setEntityResolver(null);
725adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            d = db.parse(source);
726adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (Exception e) {
727adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            throw new RuntimeException("Unexpected exception", e);
728adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
729adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
730adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        root = (Element)d.getElementsByTagName("a").item(0);
731adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("foo", ((EntityReference)root.getFirstChild()).getNodeName());
732adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
733adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
734adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project}
735