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
17c46a2ea848e7a62cd5ee24216e446ad7b9ba7629Piotr Jastrzebskipackage org.apache.harmony.tests.org.xml.sax.helpers;
18adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
19adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.io.IOException;
20adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
21adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport junit.framework.TestCase;
22adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
23c46a2ea848e7a62cd5ee24216e446ad7b9ba7629Piotr Jastrzebskiimport org.apache.harmony.tests.org.xml.sax.support.MethodLogger;
24c46a2ea848e7a62cd5ee24216e446ad7b9ba7629Piotr Jastrzebskiimport org.apache.harmony.tests.org.xml.sax.support.MockFilter;
25c46a2ea848e7a62cd5ee24216e446ad7b9ba7629Piotr Jastrzebskiimport org.apache.harmony.tests.org.xml.sax.support.MockHandler;
26c46a2ea848e7a62cd5ee24216e446ad7b9ba7629Piotr Jastrzebskiimport org.apache.harmony.tests.org.xml.sax.support.MockResolver;
27adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.xml.sax.Attributes;
28adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.xml.sax.ContentHandler;
29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.xml.sax.DTDHandler;
30adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.xml.sax.EntityResolver;
31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.xml.sax.ErrorHandler;
32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.xml.sax.InputSource;
33adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.xml.sax.Locator;
34adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.xml.sax.SAXException;
35adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.xml.sax.SAXNotRecognizedException;
36adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.xml.sax.SAXNotSupportedException;
37adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.xml.sax.SAXParseException;
38adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.xml.sax.XMLReader;
39adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.xml.sax.helpers.AttributesImpl;
40adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.xml.sax.helpers.LocatorImpl;
41adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.xml.sax.helpers.XMLFilterImpl;
42adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
43adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
44adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpublic class XMLFilterImplTest extends TestCase {
45adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
46adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    // Note: In many cases we can only test that delegation works
47adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    // properly. The rest is outside the scope of the specification.
48adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
49adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    private MethodLogger logger = new MethodLogger();
50f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
51adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    private MockHandler handler = new MockHandler(logger);
52adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
53adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    private XMLFilterImpl parent = new MockFilter(logger);
54adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
55adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    private XMLFilterImpl child = new XMLFilterImpl(parent);
56adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
57adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    private XMLFilterImpl orphan = new XMLFilterImpl();
58f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
59adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    private void assertEquals(Object[] a, Object[] b) {
60adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(a.length, b.length);
61f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
62adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        for (int i = 0; i < a.length; i++) {
63adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertEquals("Element #" + i + " must be equal", a[i], b[i]);
64adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
65adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
66f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
67adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void setUp() {
68adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        parent.setContentHandler(handler);
69adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        parent.setDTDHandler(handler);
70adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        parent.setErrorHandler(handler);
71f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
72adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        child.setContentHandler(handler);
73adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        child.setDTDHandler(handler);
74adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        child.setErrorHandler(handler);
75adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
76f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
77adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testXMLFilterImpl() {
78adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(null, parent.getParent());
79adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
80adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
81adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testXMLFilterImplXMLReader() {
82adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Ordinary case
83adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(null, parent.getParent());
84f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
85adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // null case
86adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        XMLFilterImpl filter = new XMLFilterImpl(null);
87adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(null, filter.getParent());
88adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
89adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
90adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testGetSetParent() {
91adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        child.setParent(null);
92adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(null, child.getParent());
93adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
94adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        child.setParent(parent);
95adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(parent, child.getParent());
96adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
97adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
98adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testGetSetFeature() {
99adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Ordinary case
100adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
101adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            child.setFeature("foo", true);
102adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertEquals(true, child.getFeature("foo"));
103f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
104adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            child.setFeature("foo", false);
105adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertEquals(false, child.getFeature("foo"));
106adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SAXNotRecognizedException e) {
107adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            throw new RuntimeException("Unexpected exception", e);
108adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SAXNotSupportedException e) {
109adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            throw new RuntimeException("Unexpected exception", e);
110adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
111adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
112adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // No parent case
113adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
114adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            orphan.setFeature("foo", false);
115adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("SAXNotRecognizedException expected");
116adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SAXNotRecognizedException e) {
117adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // Expected
118adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SAXNotSupportedException e) {
119adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            throw new RuntimeException("Unexpected exception", e);
120adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
121adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
122adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
123adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testGetSetProperty() {
124adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Ordinary case
125adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
126adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            child.setProperty("foo", "bar");
127adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertEquals("bar", child.getProperty("foo"));
128f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
129adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            child.setProperty("foo", null);
130adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertEquals(null, child.getProperty("foo"));
131adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SAXNotRecognizedException e) {
132adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            throw new RuntimeException("Unexpected exception", e);
133adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SAXNotSupportedException e) {
134adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            throw new RuntimeException("Unexpected exception", e);
135adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
136adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
137adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // No parent case
138adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
139adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            orphan.setProperty("foo", "bar");
140adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("SAXNotRecognizedException expected");
141adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SAXNotRecognizedException e) {
142adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // Expected
143adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SAXNotSupportedException e) {
144adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            throw new RuntimeException("Unexpected exception", e);
145adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
146adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
147adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
148adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testGetSetEntityResolver() {
149adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        EntityResolver resolver = new MockResolver();
150adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
151adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        parent.setEntityResolver(resolver);
152adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(resolver, parent.getEntityResolver());
153f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
154adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        parent.setEntityResolver(null);
155adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(null, parent.getEntityResolver());
156adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
157adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
158adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testGetSetDTDHandler() {
159adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        parent.setDTDHandler(null);
160adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(null, parent.getDTDHandler());
161f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
162adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        parent.setDTDHandler(handler);
163adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(handler, parent.getDTDHandler());
164adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
165adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
166adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testGetSetContentHandler() {
167adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        parent.setContentHandler(null);
168adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(null, parent.getContentHandler());
169f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
170adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        parent.setContentHandler(handler);
171adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(handler, parent.getContentHandler());
172adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
173adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
174adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testGetSetErrorHandler() {
175adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        parent.setErrorHandler(null);
176adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(null, parent.getErrorHandler());
177f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
178adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        parent.setErrorHandler(handler);
179adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(handler, parent.getErrorHandler());
180adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
181adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
182adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testParseInputSource() {
183adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        InputSource is = new InputSource();
184adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
185adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Ordinary case
186adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
187adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            child.parse(is);
188adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SAXException e) {
189adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            throw new RuntimeException("Unexpected exception", e);
190adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IOException e) {
191adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            throw new RuntimeException("Unexpected exception", e);
192adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
193f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
194adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(1, logger.size());
195adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("parse", logger.getMethod());
196f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
197adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // No parent case
198adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
199adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            orphan.parse(is);
200adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("NullPointerException expected");
201adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NullPointerException e) {
202adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // Expected
203adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SAXException e) {
204adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            throw new RuntimeException("Unexpected exception", e);
205adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IOException e) {
206adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            throw new RuntimeException("Unexpected exception", e);
207adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
208adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
209adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
210adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testParseString() {
211adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Ordinary case
212adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
213adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            child.parse("foo");
214adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SAXException e) {
215adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            throw new RuntimeException("Unexpected exception", e);
216adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IOException e) {
217adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            throw new RuntimeException("Unexpected exception", e);
218adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
219f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
220adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(1, logger.size());
221adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("parse", logger.getMethod());
222f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
223adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // No parent case
224adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
225adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            orphan.parse("foo");
226adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("NullPointerException expected");
227adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NullPointerException e) {
228adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // Expected
229adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SAXException e) {
230adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            throw new RuntimeException("Unexpected exception", e);
231adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IOException e) {
232adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            throw new RuntimeException("Unexpected exception", e);
233adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
234adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
235adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
236adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testResolveEntity() {
237adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        InputSource expected = new InputSource();
238adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
239adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        MockResolver resolver = new MockResolver();
240adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        resolver.addEntity("foo", "bar", expected);
241adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
242adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        InputSource result = null;
243adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
244adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        parent.setEntityResolver(resolver);
245adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
246adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Ordinary case
247adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
248adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            result = parent.resolveEntity("foo", "bar");
249adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SAXException e) {
250adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            throw new RuntimeException("Unexpected exception", e);
251adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IOException e) {
252adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            throw new RuntimeException("Unexpected exception", e);
253adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
254adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
255adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(expected, result);
256adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
257adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // No entity resolver case
258adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        parent.setEntityResolver(null);
259adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
260adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
261adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            result = parent.resolveEntity("foo", "bar");
262adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SAXException e) {
263adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            throw new RuntimeException("Unexpected exception", e);
264adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IOException e) {
265adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            throw new RuntimeException("Unexpected exception", e);
266adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
267adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
268adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(null, result);
269adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
270adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
271adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testNotationDecl() {
272adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
273adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            parent.notationDecl("foo", "bar", "foobar");
274adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SAXException e) {
275adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            throw new RuntimeException("Unexpected exception", e);
276adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
277adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
278adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(logger.size(), 1);
279adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("notationDecl", logger.getMethod());
280adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(new Object[] { "foo", "bar", "foobar" },
281adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                logger.getArgs());
282adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
283adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
284adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testUnparsedEntityDecl() {
285adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
286adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            parent.unparsedEntityDecl("foo", "bar", "gabba", "hey");
287adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SAXException e) {
288adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            throw new RuntimeException("Unexpected exception", e);
289adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
290adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
291adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(logger.size(), 1);
292adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("unparsedEntityDecl", logger.getMethod());
293adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(new Object[] { "foo", "bar", "gabba", "hey" },
294adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                logger.getArgs());
295adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
296adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
297adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testSetDocumentLocator() {
298adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Locator l = new LocatorImpl();
299f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
300adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        child.setDocumentLocator(l);
301adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
302adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(logger.size(), 1);
303adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("setDocumentLocator", logger.getMethod());
304adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(new Object[] { l }, logger.getArgs());
305f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
306adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        child.setDocumentLocator(null);
307f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
308adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(logger.size(), 2);
309adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("setDocumentLocator", logger.getMethod());
310adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(new Object[] { null }, logger.getArgs());
311adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
312adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
313adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testStartDocument() {
314adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
315adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            parent.startDocument();
316adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SAXException e) {
317adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            throw new RuntimeException("Unexpected exception", e);
318adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
319adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
320adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(logger.size(), 1);
321adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("startDocument", logger.getMethod());
322adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(new Object[] {}, logger.getArgs());
323adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
324adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
325adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testEndDocument() {
326adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
327adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            parent.endDocument();
328adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SAXException e) {
329adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            throw new RuntimeException("Unexpected exception", e);
330adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
331adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
332adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(logger.size(), 1);
333adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("endDocument", logger.getMethod());
334adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(new Object[] {}, logger.getArgs());
335adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
336adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
337adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testStartPrefixMapping() {
338adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
339adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            parent.startPrefixMapping("foo", "http://some.uri");
340adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SAXException e) {
341adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            throw new RuntimeException("Unexpected exception", e);
342adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
343adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
344adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(logger.size(), 1);
345adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("startPrefixMapping", logger.getMethod());
346adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(new Object[] { "foo", "http://some.uri" },
347adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                logger.getArgs());
348adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
349adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
350adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testEndPrefixMapping() {
351adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
352adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            parent.endPrefixMapping("foo");
353adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SAXException e) {
354adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            throw new RuntimeException("Unexpected exception", e);
355adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
356adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
357adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(logger.size(), 1);
358adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("endPrefixMapping", logger.getMethod());
359adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(new Object[] { "foo" }, logger.getArgs());
360adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
361adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
362adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testStartElement() {
363adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Attributes atts = new AttributesImpl();
364adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
365adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
366adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            parent.startElement("http://some.uri", "bar", "foo:bar", atts);
367adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SAXException e) {
368adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            throw new RuntimeException("Unexpected exception", e);
369adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
370adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
371adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(logger.size(), 1);
372adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("startElement", logger.getMethod());
373adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(new Object[] { "http://some.uri", "bar", "foo:bar", atts },
374adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                logger.getArgs());
375adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
376adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
377adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testEndElement() {
378adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
379adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            parent.endElement("http://some.uri", "bar", "foo:bar");
380adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project         } catch (SAXException e) {
381adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project             throw new RuntimeException("Unexpected exception", e);
382adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project         }
383f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
384adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project         assertEquals(logger.size(), 1);
385adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project         assertEquals("endElement", logger.getMethod());
386adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project         assertEquals(new Object[] { "http://some.uri", "bar", "foo:bar" },
387adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                 logger.getArgs());
388adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
389adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
390adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testCharacters() {
391adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        char[] ch = "Android".toCharArray();
392adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
393adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
394adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            parent.characters(ch, 2, 5);
395adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SAXException e) {
396adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            throw new RuntimeException("Unexpected exception", e);
397adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
398adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
399adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(logger.size(), 1);
400adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("characters", logger.getMethod());
401adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(new Object[] { ch, 2, 5 }, logger.getArgs());
402adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
403adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
404adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testIgnorableWhitespace() {
405adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        char[] ch = "     ".toCharArray();
406adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
407adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
408adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            parent.ignorableWhitespace(ch, 0, 5);
409adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SAXException e) {
410adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            throw new RuntimeException("Unexpected exception", e);
411adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
412adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
413adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(logger.size(), 1);
414adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("ignorableWhitespace", logger.getMethod());
415adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(new Object[] { ch, 0, 5 }, logger.getArgs());
416adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
417adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
418adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testProcessingInstruction() {
419adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
420adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            parent.processingInstruction("foo", "bar");
421adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SAXException e) {
422adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            throw new RuntimeException("Unexpected exception", e);
423adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
424adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
425adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(logger.size(), 1);
426adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("processingInstruction", logger.getMethod());
427adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(new Object[] { "foo", "bar" }, logger.getArgs());
428adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
429adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
430adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testSkippedEntity() {
431adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
432adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            parent.skippedEntity("foo");
433adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SAXException e) {
434adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            throw new RuntimeException("Unexpected exception", e);
435adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
436adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
437adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(logger.size(), 1);
438adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("skippedEntity", logger.getMethod());
439adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(new Object[] { "foo" }, logger.getArgs());
440adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
441adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
442adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testWarning() {
443adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        SAXParseException exception = new SAXParseException("Oops!", null);
444adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
445adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
446adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            parent.warning(exception);
447adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SAXException e) {
448adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            throw new RuntimeException("Unexpected exception", e);
449adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
450adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
451adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(logger.size(), 1);
452adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("warning", logger.getMethod());
453adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(new Object[] { exception }, logger.getArgs());
454adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
455adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
456adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testError() {
457adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        SAXParseException exception = new SAXParseException("Oops!", null);
458f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
459adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
460adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            parent.error(exception);
461adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SAXException e) {
462adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            throw new RuntimeException("Unexpected exception", e);
463adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
464f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
465adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(logger.size(), 1);
466adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("error", logger.getMethod());
467adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(new Object[] { exception }, logger.getArgs());
468adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
469adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
470adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testFatalError() {
471adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        SAXParseException exception = new SAXParseException("Oops!", null);
472f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
473adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
474adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            parent.fatalError(exception);
475adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SAXException e) {
476adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            throw new RuntimeException("Unexpected exception", e);
477adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
478f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
479adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(logger.size(), 1);
480adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("fatalError", logger.getMethod());
481adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(new Object[] { exception }, logger.getArgs());
482adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
483adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
484adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project}
485