/* * Copyright (C) 2007 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package tests.api.org.xml.sax.helpers; import junit.framework.TestCase; import org.xml.sax.AttributeList; import org.xml.sax.helpers.AttributeListImpl; @SuppressWarnings("deprecation") public class AttributeListImplTest extends TestCase { private AttributeListImpl empty = new AttributeListImpl(); private AttributeListImpl multi = new AttributeListImpl(); @Override public void setUp() { multi.addAttribute("foo", "string", "abc"); multi.addAttribute("bar", "string", "xyz"); multi.addAttribute("answer", "int", "42"); } public void testAttributeListImpl() { assertEquals(0, empty.getLength()); assertEquals(3, multi.getLength()); } public void testAttributeListImplAttributeList() { // Ordinary case AttributeListImpl ai = new AttributeListImpl(empty); assertEquals(0, ai.getLength()); // Another ordinary case ai = new AttributeListImpl(multi); assertEquals(3, ai.getLength()); // No Attributes try { ai = new AttributeListImpl(null); assertEquals(0, ai.getLength()); fail("NullPointerException expected"); } catch (NullPointerException e) { // Expected } } public void testSetAttributeList() { // Ordinary cases AttributeListImpl attrs = new AttributeListImpl(); attrs.addAttribute("doe", "boolean", "false"); attrs.setAttributeList(empty); assertEquals(0, attrs.getLength()); attrs.setAttributeList(multi); assertEquals(multi.getLength(), attrs.getLength()); for (int i = 0; i < multi.getLength(); i++) { assertEquals(multi.getName(i), attrs.getName(i)); assertEquals(multi.getType(i), attrs.getType(i)); assertEquals(multi.getValue(i), attrs.getValue(i)); } // null case try { attrs.setAttributeList(null); fail("NullPointerException expected"); } catch (NullPointerException e) { // Expected, must still have old elements assertEquals(3, attrs.getLength()); } } public void testAddAttribute() { // Ordinary case multi.addAttribute("doe", "boolean", "false"); assertEquals("doe", multi.getName(3)); assertEquals("boolean", multi.getType(3)); assertEquals("false", multi.getValue(3)); // Duplicate case multi.addAttribute("doe", "boolean", "false"); assertEquals("doe", multi.getName(4)); assertEquals("boolean", multi.getType(4)); assertEquals("false", multi.getValue(4)); // null case multi.addAttribute(null, null, null); assertEquals(null, multi.getName(5)); assertEquals(null, multi.getType(5)); assertEquals(null, multi.getValue(5)); } public void testRemoveAttribute() { // Ordinary case multi.removeAttribute("foo"); assertEquals("bar", multi.getName(0)); assertEquals("string", multi.getType(0)); assertEquals("xyz", multi.getValue(0)); // Unknown attribute multi.removeAttribute("john"); assertEquals(2, multi.getLength()); // null case multi.removeAttribute(null); assertEquals(2, multi.getLength()); } public void testClear() { assertEquals(3, multi.getLength()); multi.clear(); assertEquals(0, multi.getLength()); } public void testGetLength() { AttributeListImpl ai = new AttributeListImpl(empty); assertEquals(0, ai.getLength()); ai = new AttributeListImpl(multi); assertEquals(3, ai.getLength()); for (int i = 2; i >= 0; i--) { ai.removeAttribute(ai.getName(i)); assertEquals(i, ai.getLength()); } } public void testGetName() { // Ordinary cases assertEquals("foo", multi.getName(0)); assertEquals("bar", multi.getName(1)); assertEquals("answer", multi.getName(2)); // Out of range assertEquals(null, multi.getName(-1)); assertEquals(null, multi.getName(3)); } public void testGetTypeInt() { // Ordinary cases assertEquals("string", multi.getType(0)); assertEquals("string", multi.getType(1)); assertEquals("int", multi.getType(2)); // Out of range assertEquals(null, multi.getType(-1)); assertEquals(null, multi.getType(3)); } public void testGetValueInt() { // Ordinary cases assertEquals("abc", multi.getValue(0)); assertEquals("xyz", multi.getValue(1)); assertEquals("42", multi.getValue(2)); // Out of range assertEquals(null, multi.getValue(-1)); assertEquals(null, multi.getValue(5)); } public void testGetTypeString() { // Ordinary cases assertEquals("string", multi.getType("foo")); assertEquals("string", multi.getType("bar")); assertEquals("int", multi.getType("answer")); // Not found assertEquals(null, multi.getType("john")); // null case assertEquals(null, multi.getType(null)); } public void testGetValueString() { // Ordinary cases assertEquals("abc", multi.getValue("foo")); assertEquals("xyz", multi.getValue("bar")); assertEquals("42", multi.getValue("answer")); // Not found assertEquals(null, multi.getValue("john")); // null case assertEquals(null, multi.getValue(null)); } }