blob: 409d52b20733467bc871d33fcb5a214b6cbbed5a [file] [log] [blame]
/*
* 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.Attributes;
import org.xml.sax.helpers.AttributesImpl;
import dalvik.annotation.TestLevel;
import dalvik.annotation.TestTargetClass;
import dalvik.annotation.TestTargetNew;
@TestTargetClass(AttributesImpl.class)
public class AttributesImplTest extends TestCase {
private AttributesImpl empty = new AttributesImpl();
private AttributesImpl multi = new AttributesImpl();
@Override
public void setUp() {
multi.addAttribute("http://some.uri", "foo", "ns1:foo",
"string", "abc");
multi.addAttribute("http://some.uri", "bar", "ns1:bar",
"string", "xyz");
multi.addAttribute("http://some.other.uri", "answer", "ns2:answer",
"int", "42");
multi.addAttribute("", "gabbaHey", "", "string", "1-2-3-4");
multi.addAttribute("", "", "gabba:hey", "string", "1-2-3-4");
}
@TestTargetNew(
level = TestLevel.COMPLETE,
method = "AttributesImpl",
args = { }
)
public void testAttributesImpl() {
assertEquals(0, empty.getLength());
assertEquals(5, multi.getLength());
}
@TestTargetNew(
level = TestLevel.COMPLETE,
method = "AttributesImpl",
args = { Attributes.class }
)
public void testAttributesImplAttributes() {
// Ordinary case
AttributesImpl ai = new AttributesImpl(empty);
assertEquals(0, ai.getLength());
// Another ordinary case
ai = new AttributesImpl(multi);
assertEquals(5, ai.getLength());
// No Attributes
try {
ai = new AttributesImpl(null);
assertEquals(0, ai.getLength());
fail("NullPointerException expected");
} catch (NullPointerException e) {
// Expected
}
}
@TestTargetNew(
level = TestLevel.COMPLETE,
method = "getLength",
args = { }
)
public void testGetLength() {
AttributesImpl ai = new AttributesImpl(empty);
assertEquals(0, ai.getLength());
ai = new AttributesImpl(multi);
assertEquals(5, ai.getLength());
for (int i = 4; i >= 0; i--) {
ai.removeAttribute(i);
assertEquals(i, ai.getLength());
}
}
@TestTargetNew(
level = TestLevel.COMPLETE,
method = "getURI",
args = { int.class }
)
public void testGetURI() {
// Ordinary cases
assertEquals("http://some.uri", multi.getURI(0));
assertEquals("http://some.uri", multi.getURI(1));
assertEquals("http://some.other.uri", multi.getURI(2));
assertEquals("", multi.getURI(3));
assertEquals("", multi.getURI(4));
// Out of range
assertEquals(null, multi.getURI(-1));
assertEquals(null, multi.getURI(5));
}
@TestTargetNew(
level = TestLevel.COMPLETE,
method = "getLocalName",
args = { int.class }
)
public void testGetLocalName() {
// Ordinary cases
assertEquals("foo", multi.getLocalName(0));
assertEquals("bar", multi.getLocalName(1));
assertEquals("answer", multi.getLocalName(2));
assertEquals("gabbaHey", multi.getLocalName(3));
assertEquals("", multi.getLocalName(4));
// Out of range
assertEquals(null, multi.getLocalName(-1));
assertEquals(null, multi.getLocalName(5));
}
@TestTargetNew(
level = TestLevel.COMPLETE,
method = "getQName",
args = { int.class }
)
public void testGetQName() {
// Ordinary cases
assertEquals("ns1:foo", multi.getQName(0));
assertEquals("ns1:bar", multi.getQName(1));
assertEquals("ns2:answer", multi.getQName(2));
assertEquals("", multi.getQName(3));
assertEquals("gabba:hey", multi.getQName(4));
// Out of range
assertEquals(null, multi.getQName(-1));
assertEquals(null, multi.getQName(5));
}
@TestTargetNew(
level = TestLevel.COMPLETE,
method = "getType",
args = { int.class }
)
public void testGetTypeInt() {
// Ordinary cases
assertEquals("string", multi.getType(0));
assertEquals("string", multi.getType(1));
assertEquals("int", multi.getType(2));
assertEquals("string", multi.getType(3));
assertEquals("string", multi.getType(4));
// Out of range
assertEquals(null, multi.getType(-1));
assertEquals(null, multi.getType(5));
}
@TestTargetNew(
level = TestLevel.COMPLETE,
method = "getValue",
args = { int.class }
)
public void testGetValueInt() {
// Ordinary cases
assertEquals("abc", multi.getValue(0));
assertEquals("xyz", multi.getValue(1));
assertEquals("42", multi.getValue(2));
assertEquals("1-2-3-4", multi.getValue(3));
assertEquals("1-2-3-4", multi.getValue(4));
// Out of range
assertEquals(null, multi.getValue(-1));
assertEquals(null, multi.getValue(5));
}
@TestTargetNew(
level = TestLevel.COMPLETE,
method = "getIndex",
args = { String.class, String.class }
)
public void testGetIndexStringString() {
// Ordinary cases
assertEquals(0, multi.getIndex("http://some.uri", "foo"));
assertEquals(1, multi.getIndex("http://some.uri", "bar"));
assertEquals(2, multi.getIndex("http://some.other.uri", "answer"));
// Not found
assertEquals(-1, multi.getIndex("john", "doe"));
// null cases
assertEquals(-1, multi.getIndex("http://some.uri", null));
assertEquals(-1, multi.getIndex(null, "foo"));
}
@TestTargetNew(
level = TestLevel.COMPLETE,
method = "getIndex",
args = { String.class }
)
public void testGetIndexString() {
// Ordinary cases
assertEquals(0, multi.getIndex("ns1:foo"));
assertEquals(1, multi.getIndex("ns1:bar"));
assertEquals(2, multi.getIndex("ns2:answer"));
assertEquals(4, multi.getIndex("gabba:hey"));
// Not found
assertEquals(-1, multi.getIndex("john:doe"));
// null case
assertEquals(-1, multi.getIndex(null));
}
@TestTargetNew(
level = TestLevel.COMPLETE,
method = "getType",
args = { String.class, String.class }
)
public void testGetTypeStringString() {
// Ordinary cases
assertEquals("string", multi.getType("http://some.uri", "foo"));
assertEquals("string", multi.getType("http://some.uri", "bar"));
assertEquals("int", multi.getType("http://some.other.uri", "answer"));
// Not found
assertEquals(null, multi.getType("john", "doe"));
// null cases
assertEquals(null, multi.getType("http://some.uri", null));
assertEquals(null, multi.getType(null, "foo"));
}
@TestTargetNew(
level = TestLevel.COMPLETE,
method = "getType",
args = { String.class }
)
public void testGetTypeString() {
// Ordinary cases
assertEquals("string", multi.getType("ns1:foo"));
assertEquals("string", multi.getType("ns1:bar"));
assertEquals("int", multi.getType("ns2:answer"));
assertEquals("string", multi.getType("gabba:hey"));
// Not found
assertEquals(null, multi.getType("john:doe"));
// null case
assertEquals(null, multi.getType(null));
}
@TestTargetNew(
level = TestLevel.COMPLETE,
method = "getValue",
args = { String.class, String.class }
)
public void testGetValueStringString() {
// Ordinary cases
assertEquals("abc", multi.getValue("http://some.uri", "foo"));
assertEquals("xyz", multi.getValue("http://some.uri", "bar"));
assertEquals("42", multi.getValue("http://some.other.uri", "answer"));
// Not found
assertEquals(null, multi.getValue("john", "doe"));
// null cases
assertEquals(null, multi.getValue("http://some.uri", null));
assertEquals(null, multi.getValue(null, "foo"));
}
@TestTargetNew(
level = TestLevel.COMPLETE,
method = "getValue",
args = { String.class }
)
public void testGetValueString() {
// Ordinary cases
assertEquals("abc", multi.getValue("ns1:foo"));
assertEquals("xyz", multi.getValue("ns1:bar"));
assertEquals("42", multi.getValue("ns2:answer"));
assertEquals("1-2-3-4", multi.getValue("gabba:hey"));
// Not found
assertEquals(null, multi.getValue("john:doe"));
// null case
assertEquals(null, multi.getValue(null));
}
@TestTargetNew(
level = TestLevel.COMPLETE,
method = "clear",
args = { }
)
public void testClear() {
assertEquals(5, multi.getLength());
multi.clear();
assertEquals(0, multi.getLength());
}
@TestTargetNew(
level = TestLevel.COMPLETE,
method = "setAttributes",
args = { Attributes.class }
)
public void testSetAttributes() {
// Ordinary cases
AttributesImpl attrs = new AttributesImpl();
attrs.addAttribute("http://yet.another.uri", "doe", "john:doe",
"boolean", "false");
attrs.setAttributes(empty);
assertEquals(0, attrs.getLength());
attrs.setAttributes(multi);
assertEquals(multi.getLength(), attrs.getLength());
for (int i = 0; i < multi.getLength(); i++) {
assertEquals(multi.getURI(i), attrs.getURI(i));
assertEquals(multi.getLocalName(i), attrs.getLocalName(i));
assertEquals(multi.getQName(i), attrs.getQName(i));
assertEquals(multi.getType(i), attrs.getType(i));
assertEquals(multi.getValue(i), attrs.getValue(i));
}
// null case
try {
attrs.setAttributes(null);
fail("NullPointerException expected");
} catch (NullPointerException e) {
// Expected, but must be empty now
assertEquals(0, attrs.getLength());
}
}
@TestTargetNew(
level = TestLevel.COMPLETE,
method = "addAttribute",
args = { String.class, String.class, String.class, String.class,
String.class }
)
public void testAddAttribute() {
// Ordinary case
multi.addAttribute("http://yet.another.uri", "doe", "john:doe",
"boolean", "false");
assertEquals("http://yet.another.uri", multi.getURI(5));
assertEquals("doe", multi.getLocalName(5));
assertEquals("john:doe", multi.getQName(5));
assertEquals("boolean", multi.getType(5));
assertEquals("false", multi.getValue(5));
// Duplicate case
multi.addAttribute("http://yet.another.uri", "doe", "john:doe",
"boolean", "false");
assertEquals("http://yet.another.uri", multi.getURI(6));
assertEquals("doe", multi.getLocalName(6));
assertEquals("john:doe", multi.getQName(6));
assertEquals("boolean", multi.getType(6));
assertEquals("false", multi.getValue(6));
// null case
multi.addAttribute(null, null, null, null, null);
assertEquals(null, multi.getURI(7));
assertEquals(null, multi.getLocalName(7));
assertEquals(null, multi.getQName(7));
assertEquals(null, multi.getType(7));
assertEquals(null, multi.getValue(7));
}
@TestTargetNew(
level = TestLevel.COMPLETE,
method = "setAttribute",
args = { int.class, String.class, String.class, String.class,
String.class, String.class }
)
public void testSetAttribute() {
// Ordinary case
multi.setAttribute(0, "http://yet.another.uri", "doe", "john:doe",
"boolean", "false");
assertEquals("http://yet.another.uri", multi.getURI(0));
assertEquals("doe", multi.getLocalName(0));
assertEquals("john:doe", multi.getQName(0));
assertEquals("boolean", multi.getType(0));
assertEquals("false", multi.getValue(0));
// null case
multi.setAttribute(1, null, null, null, null, null);
assertEquals(null, multi.getURI(1));
assertEquals(null, multi.getLocalName(1));
assertEquals(null, multi.getQName(1));
assertEquals(null, multi.getType(1));
assertEquals(null, multi.getValue(1));
// Out of range
try {
multi.setAttribute(-1, "http://yet.another.uri", "doe", "john:doe",
"boolean", "false");
fail("ArrayIndexOutOfBoundsException expected");
} catch (ArrayIndexOutOfBoundsException e) {
// Expected
}
try {
multi.setAttribute(5, "http://yet.another.uri", "doe", "john:doe",
"boolean", "false");
fail("ArrayIndexOutOfBoundsException expected");
} catch (ArrayIndexOutOfBoundsException e) {
// Expected
}
}
@TestTargetNew(
level = TestLevel.COMPLETE,
method = "removeAttribute",
args = { int.class }
)
public void testRemoveAttribute() {
// Ordinary case
multi.removeAttribute(0);
assertEquals("http://some.uri", multi.getURI(0));
assertEquals("bar", multi.getLocalName(0));
assertEquals("ns1:bar", multi.getQName(0));
assertEquals("string", multi.getType(0));
assertEquals("xyz", multi.getValue(0));
// Out of range
try {
multi.removeAttribute(-1);
fail("ArrayIndexOutOfBoundsException expected");
} catch (ArrayIndexOutOfBoundsException e) {
// Expected
}
try {
multi.removeAttribute(4);
fail("ArrayIndexOutOfBoundsException expected");
} catch (ArrayIndexOutOfBoundsException e) {
// Expected
}
}
@TestTargetNew(
level = TestLevel.COMPLETE,
method = "setURI",
args = { int.class, String.class }
)
public void testSetURI() {
// Ordinary case
multi.setURI(0, "http://yet.another.uri");
assertEquals("http://yet.another.uri", multi.getURI(0));
// null case
multi.setURI(1, null);
assertEquals(null, multi.getURI(1));
// Out of range
try {
multi.setURI(-1, "http://yet.another.uri");
fail("ArrayIndexOutOfBoundsException expected");
} catch (ArrayIndexOutOfBoundsException e) {
// Expected
}
try {
multi.setURI(5, "http://yet.another.uri");
fail("ArrayIndexOutOfBoundsException expected");
} catch (ArrayIndexOutOfBoundsException e) {
// Expected
}
}
@TestTargetNew(
level = TestLevel.COMPLETE,
method = "setLocalName",
args = { int.class, String.class }
)
public void testSetLocalName() {
// Ordinary case
multi.setLocalName(0, "john");
assertEquals("john", multi.getLocalName(0));
// null case
multi.setLocalName(1, null);
assertEquals(null, multi.getLocalName(1));
// Out of range
try {
multi.setLocalName(-1, "john");
fail("ArrayIndexOutOfBoundsException expected");
} catch (ArrayIndexOutOfBoundsException e) {
// Expected
}
try {
multi.setLocalName(5, "john");
fail("ArrayIndexOutOfBoundsException expected");
} catch (ArrayIndexOutOfBoundsException e) {
// Expected
}
}
@TestTargetNew(
level = TestLevel.COMPLETE,
method = "setQName",
args = { int.class, String.class }
)
public void testSetQName() {
// Ordinary case
multi.setQName(0, "john:doe");
assertEquals("john:doe", multi.getQName(0));
// null case
multi.setQName(1, null);
assertEquals(null, multi.getQName(1));
// Out of range
try {
multi.setQName(-1, "john:doe");
fail("ArrayIndexOutOfBoundsException expected");
} catch (ArrayIndexOutOfBoundsException e) {
// Expected
}
try {
multi.setQName(5, "john:doe");
fail("ArrayIndexOutOfBoundsException expected");
} catch (ArrayIndexOutOfBoundsException e) {
// Expected
}
}
@TestTargetNew(
level = TestLevel.COMPLETE,
method = "setType",
args = { int.class, String.class }
)
public void testSetType() {
// Ordinary case
multi.setType(0, "float");
assertEquals("float", multi.getType(0));
// null case
multi.setType(1, null);
assertEquals(null, multi.getType(1));
// Out of range
try {
multi.setType(-1, "float");
fail("ArrayIndexOutOfBoundsException expected");
} catch (ArrayIndexOutOfBoundsException e) {
// Expected
}
try {
multi.setType(5, "float");
fail("ArrayIndexOutOfBoundsException expected");
} catch (ArrayIndexOutOfBoundsException e) {
// Expected
}
}
@TestTargetNew(
level = TestLevel.COMPLETE,
method = "setValue",
args = { int.class, String.class }
)
public void testSetValue() {
// Ordinary case
multi.setValue(0, "too much");
assertEquals("too much", multi.getValue(0));
// null case
multi.setValue(1, null);
assertEquals(null, multi.getValue(1));
// Out of range
try {
multi.setValue(-1, "too much");
fail("ArrayIndexOutOfBoundsException expected");
} catch (ArrayIndexOutOfBoundsException e) {
// Expected
}
try {
multi.setValue(5, "too much");
fail("ArrayIndexOutOfBoundsException expected");
} catch (ArrayIndexOutOfBoundsException e) {
// Expected
}
}
}