Home | History | Annotate | Download | only in helpers
      1 /*
      2  * Copyright (C) 2007 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *     http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 
     17 package tests.api.org.xml.sax.helpers;
     18 
     19 import junit.framework.TestCase;
     20 
     21 import org.xml.sax.AttributeList;
     22 import org.xml.sax.helpers.AttributeListImpl;
     23 
     24 @SuppressWarnings("deprecation")
     25 public class AttributeListImplTest extends TestCase {
     26 
     27     private AttributeListImpl empty = new AttributeListImpl();
     28 
     29     private AttributeListImpl multi = new AttributeListImpl();
     30 
     31     @Override
     32     public void setUp() {
     33         multi.addAttribute("foo", "string", "abc");
     34         multi.addAttribute("bar", "string", "xyz");
     35         multi.addAttribute("answer", "int", "42");
     36     }
     37 
     38     public void testAttributeListImpl() {
     39         assertEquals(0, empty.getLength());
     40         assertEquals(3, multi.getLength());
     41     }
     42 
     43     public void testAttributeListImplAttributeList() {
     44         // Ordinary case
     45         AttributeListImpl ai = new AttributeListImpl(empty);
     46         assertEquals(0, ai.getLength());
     47 
     48         // Another ordinary case
     49         ai = new AttributeListImpl(multi);
     50         assertEquals(3, ai.getLength());
     51 
     52         // No Attributes
     53         try {
     54             ai = new AttributeListImpl(null);
     55             assertEquals(0, ai.getLength());
     56             fail("NullPointerException expected");
     57         } catch (NullPointerException e) {
     58             // Expected
     59         }
     60     }
     61 
     62     public void testSetAttributeList() {
     63         // Ordinary cases
     64         AttributeListImpl attrs = new AttributeListImpl();
     65         attrs.addAttribute("doe", "boolean", "false");
     66 
     67         attrs.setAttributeList(empty);
     68         assertEquals(0, attrs.getLength());
     69 
     70         attrs.setAttributeList(multi);
     71         assertEquals(multi.getLength(), attrs.getLength());
     72 
     73         for (int i = 0; i < multi.getLength(); i++) {
     74             assertEquals(multi.getName(i), attrs.getName(i));
     75             assertEquals(multi.getType(i), attrs.getType(i));
     76             assertEquals(multi.getValue(i), attrs.getValue(i));
     77         }
     78 
     79         // null case
     80         try {
     81             attrs.setAttributeList(null);
     82             fail("NullPointerException expected");
     83         } catch (NullPointerException e) {
     84             // Expected, must still have old elements
     85             assertEquals(3, attrs.getLength());
     86         }
     87     }
     88 
     89     public void testAddAttribute() {
     90         // Ordinary case
     91         multi.addAttribute("doe", "boolean", "false");
     92 
     93         assertEquals("doe", multi.getName(3));
     94         assertEquals("boolean", multi.getType(3));
     95         assertEquals("false", multi.getValue(3));
     96 
     97         // Duplicate case
     98         multi.addAttribute("doe", "boolean", "false");
     99 
    100         assertEquals("doe", multi.getName(4));
    101         assertEquals("boolean", multi.getType(4));
    102         assertEquals("false", multi.getValue(4));
    103 
    104         // null case
    105         multi.addAttribute(null, null, null);
    106         assertEquals(null, multi.getName(5));
    107         assertEquals(null, multi.getType(5));
    108         assertEquals(null, multi.getValue(5));
    109     }
    110 
    111     public void testRemoveAttribute() {
    112         // Ordinary case
    113         multi.removeAttribute("foo");
    114         assertEquals("bar", multi.getName(0));
    115         assertEquals("string", multi.getType(0));
    116         assertEquals("xyz", multi.getValue(0));
    117 
    118         // Unknown attribute
    119         multi.removeAttribute("john");
    120         assertEquals(2, multi.getLength());
    121 
    122         // null case
    123         multi.removeAttribute(null);
    124         assertEquals(2, multi.getLength());
    125     }
    126 
    127     public void testClear() {
    128         assertEquals(3, multi.getLength());
    129         multi.clear();
    130         assertEquals(0, multi.getLength());
    131     }
    132 
    133     public void testGetLength() {
    134         AttributeListImpl ai = new AttributeListImpl(empty);
    135         assertEquals(0, ai.getLength());
    136 
    137         ai = new AttributeListImpl(multi);
    138         assertEquals(3, ai.getLength());
    139 
    140         for (int i = 2; i >= 0; i--) {
    141             ai.removeAttribute(ai.getName(i));
    142             assertEquals(i, ai.getLength());
    143         }
    144     }
    145 
    146     public void testGetName() {
    147         // Ordinary cases
    148         assertEquals("foo", multi.getName(0));
    149         assertEquals("bar", multi.getName(1));
    150         assertEquals("answer", multi.getName(2));
    151 
    152         // Out of range
    153         assertEquals(null, multi.getName(-1));
    154         assertEquals(null, multi.getName(3));
    155     }
    156 
    157     public void testGetTypeInt() {
    158         // Ordinary cases
    159         assertEquals("string", multi.getType(0));
    160         assertEquals("string", multi.getType(1));
    161         assertEquals("int", multi.getType(2));
    162 
    163         // Out of range
    164         assertEquals(null, multi.getType(-1));
    165         assertEquals(null, multi.getType(3));
    166     }
    167 
    168     public void testGetValueInt() {
    169         // Ordinary cases
    170         assertEquals("abc", multi.getValue(0));
    171         assertEquals("xyz", multi.getValue(1));
    172         assertEquals("42", multi.getValue(2));
    173 
    174         // Out of range
    175         assertEquals(null, multi.getValue(-1));
    176         assertEquals(null, multi.getValue(5));
    177     }
    178 
    179     public void testGetTypeString() {
    180         // Ordinary cases
    181         assertEquals("string", multi.getType("foo"));
    182         assertEquals("string", multi.getType("bar"));
    183         assertEquals("int", multi.getType("answer"));
    184 
    185         // Not found
    186         assertEquals(null, multi.getType("john"));
    187 
    188         // null case
    189         assertEquals(null, multi.getType(null));
    190     }
    191 
    192     public void testGetValueString() {
    193         // Ordinary cases
    194         assertEquals("abc", multi.getValue("foo"));
    195         assertEquals("xyz", multi.getValue("bar"));
    196         assertEquals("42", multi.getValue("answer"));
    197 
    198         // Not found
    199         assertEquals(null, multi.getValue("john"));
    200 
    201         // null case
    202         assertEquals(null, multi.getValue(null));
    203     }
    204 
    205 }
    206