/**
   * 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".
    }
  }
 @Override
 public void setUp() {
   mEmptyItem1 = new GenericItem(null, ATTRIBUTES);
   mEmptyItem2 = new GenericItem(null, ATTRIBUTES);
   mStringItem = new GenericItem(null, ATTRIBUTES);
   mStringItem.setAttribute("string", mStringAttribute);
   mIntegerItem = new GenericItem(null, ATTRIBUTES);
   mIntegerItem.setAttribute("integer", mIntegerAttribute);
   mFullItem1 = new GenericItem(null, ATTRIBUTES);
   mFullItem1.setAttribute("string", mStringAttribute);
   mFullItem1.setAttribute("integer", mIntegerAttribute);
   mFullItem2 = new GenericItem(null, ATTRIBUTES);
   mFullItem2.setAttribute("string", mStringAttribute);
   mFullItem2.setAttribute("integer", mIntegerAttribute);
   mInconsistentItem = new GenericItem(null, ATTRIBUTES);
   mInconsistentItem.setAttribute("string", "gnirts");
   mInconsistentItem.setAttribute("integer", 2);
 }