@Test
public void testAttributes() {
final Element e = new Element(NAME);
assertEquals(0, e.getAttributesCount());
assertFalse(e.hasAttribute(NAME1));
assertEquals(-1, e.getAttributeIndex(NAME1));
assertTrue(e.getAttributes().isEmpty());
assertEquals(null, e.getAttributeValue(NAME1));
e.addAttribute(NAME1, null);
assertTrue(e.hasAttribute(NAME1));
assertEquals(null, e.getAttributeValue(NAME1));
assertEquals(0, e.getAttributeIndex(NAME1));
assertEquals(-1, e.getAttributeIndex(NAME2));
assertFalse(e.hasAttribute(NAME2));
assertEquals(1, e.getAttributes().size());
assertEquals(Boolean.TRUE, e.getAttributeAsOptionalBoolean(NAME1, Boolean.TRUE));
assertEquals(Long.valueOf(0L), e.getAttributeAsOptionalLong(NAME1, 0L));
assertEquals(Integer.valueOf(0), e.getAttributeAsOptionalInt(NAME1, 0));
assertEquals(Short.valueOf((short) 0), e.getAttributeAsOptionalShort(NAME1, (short) 0));
assertEquals(Byte.valueOf((byte) 0), e.getAttributeAsOptionalByte(NAME1, (byte) 0));
assertEquals(Double.valueOf(0.0), e.getAttributeAsOptionalDouble(NAME1, 0.0));
assertEquals(Float.valueOf(0.0F), e.getAttributeAsOptionalFloat(NAME1, 0.0F));
assertEquals(FailureReaction.DEFAULT, e.getAttributeAsOptionalEnum(NAME1, FailureReaction.class, FailureReaction.DEFAULT));
}