ParserFactoryTest.java revision 834e5096a6bd02a677c2346e6aa420af37b70523
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.org.xml.sax.helpers; 18adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 19adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport dalvik.annotation.TestLevel; 20adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport dalvik.annotation.TestTargetClass; 21adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport dalvik.annotation.TestTargetNew; 22adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 23adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport junit.framework.TestCase; 24adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 25adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.xml.sax.helpers.ParserFactory; 26adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 27adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project@SuppressWarnings("deprecation") 28adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project@TestTargetClass(ParserFactory.class) 29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpublic class ParserFactoryTest extends TestCase { 30adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 33adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "makeParser", 34adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = { }, 35adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "Checks everything except META-INF case" 36adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 37834e5096a6bd02a677c2346e6aa420af37b70523Urs Grob public void testMakeParser() throws ClassNotFoundException, 38834e5096a6bd02a677c2346e6aa420af37b70523Urs Grob IllegalAccessException, InstantiationException { 39adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Property not set at all 40adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 41adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ParserFactory.makeParser(); 42834e5096a6bd02a677c2346e6aa420af37b70523Urs Grob fail("expected NullPointerException was not thrown"); 43adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NullPointerException e) { 44adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Expected 45adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 46adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 47adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Unknown class 48adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project System.setProperty("org.xml.sax.parser", "foo.bar.SAXParser"); 49adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 50adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 51adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ParserFactory.makeParser(); 52834e5096a6bd02a677c2346e6aa420af37b70523Urs Grob fail("expected ClassNotFoundException was not thrown"); 53adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (ClassNotFoundException e) { 54adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Expected 55adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 56adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 57adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Non-accessible class 58adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project System.setProperty("org.xml.sax.parser", 59adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "tests.api.org.xml.sax.support.NoAccessParser"); 60adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 61adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 62adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ParserFactory.makeParser(); 63834e5096a6bd02a677c2346e6aa420af37b70523Urs Grob fail("expected IllegalAccessException was not thrown"); 64adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IllegalAccessException e) { 65adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Expected 66adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 67adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 68adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Non-instantiable class 69adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project System.setProperty("org.xml.sax.parser", 70adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "tests.api.org.xml.sax.support.NoInstanceParser"); 71adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 72adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 73adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ParserFactory.makeParser(); 74834e5096a6bd02a677c2346e6aa420af37b70523Urs Grob fail("expected InstantiationException was not thrown"); 75adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (InstantiationException e) { 76adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Expected 77adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 78adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 79adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Non-Parser class 80adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project System.setProperty("org.xml.sax.parser", 81adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "tests.api.org.xml.sax.support.NoSubclassParser"); 82adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 83adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 84adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ParserFactory.makeParser(); 85834e5096a6bd02a677c2346e6aa420af37b70523Urs Grob fail("expected ClassCastException was not thrown"); 86adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (ClassCastException e) { 87adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Expected 88adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 89adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 90adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Good one, finally 91adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project System.setProperty("org.xml.sax.parser", 92adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "tests.api.org.xml.sax.support.DoNothingParser"); 93adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 94b86d64d29c612a186b9f81d92344f1af13d00ecfJorg Pleumann ParserFactory.makeParser(); 95adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 96adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 97adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 98adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 99adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 100adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "makeParser", 101adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = { String.class } 102adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 103834e5096a6bd02a677c2346e6aa420af37b70523Urs Grob public void testMakeParserString() throws ClassNotFoundException, 104834e5096a6bd02a677c2346e6aa420af37b70523Urs Grob IllegalAccessException, InstantiationException { 105adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // No class 106adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 107adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ParserFactory.makeParser(null); 108834e5096a6bd02a677c2346e6aa420af37b70523Urs Grob fail("expected NullPointerException was not thrown"); 109adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NullPointerException e) { 110adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Expected 111adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 112adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 113adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Unknown class 114adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 115adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ParserFactory.makeParser("foo.bar.SAXParser"); 116834e5096a6bd02a677c2346e6aa420af37b70523Urs Grob fail("expected ClassNotFoundException was not thrown"); 117adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (ClassNotFoundException e) { 118adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Expected 119adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 120adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 121adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Non-accessible class 122adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 123adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ParserFactory.makeParser( 124adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "tests.api.org.xml.sax.support.NoAccessParser"); 125834e5096a6bd02a677c2346e6aa420af37b70523Urs Grob fail("expected IllegalAccessException was not thrown"); 126adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IllegalAccessException e) { 127adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Expected 128adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 129adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 130adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Non-instantiable class 131adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 132adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ParserFactory.makeParser( 133adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "tests.api.org.xml.sax.support.NoInstanceParser"); 134834e5096a6bd02a677c2346e6aa420af37b70523Urs Grob fail("expected InstantiationException was not thrown"); 135adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (InstantiationException e) { 136adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Expected 137adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 138adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 139adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Non-Parser class 140adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 141adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ParserFactory.makeParser( 142adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "tests.api.org.xml.sax.support.NoSubclassParser"); 143834e5096a6bd02a677c2346e6aa420af37b70523Urs Grob fail("expected ClassCastException was not thrown"); 144adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (ClassCastException e) { 145adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Expected 146adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 147adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 148adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Good one, finally 149b86d64d29c612a186b9f81d92344f1af13d00ecfJorg Pleumann ParserFactory.makeParser( 150b86d64d29c612a186b9f81d92344f1af13d00ecfJorg Pleumann "tests.api.org.xml.sax.support.DoNothingParser"); 151adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 152adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 153adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 154adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project} 155