@SuppressWarnings("unchecked")
  public void testEnum() throws Exception {

    // As Label

    Contact contact = new PersonalContact();
    contact.setGender(Gender.MALE);

    AndroidMetawidget metawidget = new AndroidMetawidget(null);
    SimpleBindingProcessorConfig config = new SimpleBindingProcessorConfig();
    config.setConverter(
        Gender.class,
        new Converter<Gender>() {

          public Gender convertFromView(View widget, Object value, Class<?> intoClass) {

            return Gender.valueOf((String) value);
          }

          public Object convertForView(View widget, Gender value) {

            if (widget instanceof Spinner) {
              return value;
            }

            return value.name();
          }
        });
    metawidget.setWidgetProcessors(new SimpleBindingProcessor(config));
    metawidget.setToInspect(contact);

    Map<String, String> attributes = CollectionUtils.newHashMap();
    TextView label = new TextView(null);

    attributes.put(NAME, "gender");
    attributes.put(TYPE, Gender.class.getName());
    metawidget
        .getWidgetProcessor(SimpleBindingProcessor.class)
        .processWidget(label, PROPERTY, attributes, metawidget);
    assertEquals("MALE", label.getText());

    // As Spinner

    metawidget.setToInspect(contact);
    Spinner spinner = metawidget.findViewWithTags("gender");
    assertEquals(Gender.MALE, spinner.getSelectedItem());
    assertEquals(null, ((ArrayAdapter<Gender>) spinner.getAdapter()).getItem(0));
    assertEquals(Gender.MALE, ((ArrayAdapter<Gender>) spinner.getAdapter()).getItem(1));
    assertEquals(Gender.FEMALE, ((ArrayAdapter<Gender>) spinner.getAdapter()).getItem(2));
    assertEquals(3, ((ArrayAdapter<String>) spinner.getAdapter()).getCount());
  }