@Test
public void testHashCode() {

    BasicAttributeContext attributeContext = new BasicAttributeContext();
    attributeContext.setPreparer("my.preparer");
    Attribute templateAttribute = Attribute.createTemplateAttribute("/my/template.jsp");
    attributeContext.setTemplateAttribute(templateAttribute);
    Attribute attribute1 = new Attribute("value1");
    Attribute attribute2 = new Attribute("value2");
    Attribute attribute3 = new Attribute("value3");
    attributeContext.putAttribute("attribute1", attribute1, true);
    attributeContext.putAttribute("attribute2", attribute2, true);
    attributeContext.putAttribute("attribute3", attribute3, false);
    Map<String, Attribute> cascadedAttributes = new HashMap<String, Attribute>();
    cascadedAttributes.put("attribute1", attribute1);
    cascadedAttributes.put("attribute2", attribute2);
    Map<String, Attribute> attributes = new HashMap<String, Attribute>();
    attributes.put("attribute3", attribute3);
    assertEquals(templateAttribute.hashCode() + "my.preparer".hashCode()
            + attributes.hashCode() + cascadedAttributes.hashCode(),
            attributeContext.hashCode());
}