/**
   * Test for {@link GenericItem#setAttribute(String, Object)} and {@link
   * GenericItem#getAttribute(String)}.
   */
  public void testAttributes() {
    GenericItem item = new GenericItem(null, ATTRIBUTES);

    assertNull(item.getAttribute("string"));
    assertNull(item.getAttribute("integer"));

    item.setAttribute("string", mStringAttribute);
    item.setAttribute("integer", mIntegerAttribute);

    assertEquals(mStringAttribute, item.getAttribute("string"));
    assertEquals(mIntegerAttribute, item.getAttribute("integer"));

    item.setAttribute("string", null);
    item.setAttribute("integer", null);

    assertNull(item.getAttribute("string"));
    assertNull(item.getAttribute("integer"));

    try {
      item.setAttribute("object", new Object());
      fail("Failed to throw IllegalArgumentException");
    } catch (IllegalArgumentException e) {
      // Expected because "object" is not "string" or "integer".
    }
  }