" var='invitelist'>\n" +
" <desc>Tell all your friends about your new bot!</desc>\n" +
" </field>\n" +
" </x>\n";
DataForm dataForm = unmarshal(xml, DataForm.class);
Assert.assertNotNull(dataForm);
Assert.assertEquals(dataForm.getType(), DataForm.Type.FORM);
Assert.assertEquals(dataForm.getTitle(), "Bot Configuration");
Assert.assertEquals(dataForm.getInstructions().get(0), "Fill out this form to configure your new bot!");
Assert.assertEquals(dataForm.getFields().size(), 12);
Assert.assertEquals(dataForm.getFields().get(0).getValues().get(0), "jabber:bot");
Assert.assertEquals(dataForm.getFields().get(0).getType(), DataForm.Field.Type.HIDDEN);
Assert.assertEquals(dataForm.getFields().get(0).getVar(), "FORM_TYPE");
Assert.assertEquals(dataForm.getFields().get(1).getType(), DataForm.Field.Type.FIXED);
Assert.assertEquals(dataForm.getFields().get(1).getValues().get(0), "Section 1: Bot Info");
Assert.assertEquals(dataForm.getFields().get(2).getType(), DataForm.Field.Type.TEXT_SINGLE);
Assert.assertEquals(dataForm.getFields().get(2).getVar(), "botname");
Assert.assertEquals(dataForm.getFields().get(2).getLabel(), "The name of your bot");
Assert.assertEquals(dataForm.getFields().get(3).getType(), DataForm.Field.Type.TEXT_MULTI);
Assert.assertEquals(dataForm.getFields().get(3).getVar(), "description");
Assert.assertEquals(dataForm.getFields().get(3).getLabel(), "Helpful description of your bot");
Assert.assertEquals(dataForm.getFields().get(4).getType(), DataForm.Field.Type.BOOLEAN);
Assert.assertEquals(dataForm.getFields().get(4).getVar(), "public");
Assert.assertEquals(dataForm.getFields().get(4).getLabel(), "Public bot?");
Assert.assertEquals(dataForm.getFields().get(5).getType(), DataForm.Field.Type.TEXT_PRIVATE);
Assert.assertEquals(dataForm.getFields().get(5).getVar(), "password");
Assert.assertEquals(dataForm.getFields().get(5).getLabel(), "Password for special access");
Assert.assertEquals(dataForm.getFields().get(6).getType(), DataForm.Field.Type.FIXED);
Assert.assertEquals(dataForm.getFields().get(6).getValues().get(0), "Section 2: Features");
Assert.assertEquals(dataForm.getFields().get(7).getType(), DataForm.Field.Type.LIST_MULTI);
Assert.assertEquals(dataForm.getFields().get(7).getVar(), "features");
Assert.assertEquals(dataForm.getFields().get(7).getLabel(), "What features will the bot support?");
Assert.assertEquals(dataForm.getFields().get(7).getOptions().size(), 5);
Assert.assertEquals(dataForm.getFields().get(7).getOptions().get(0).getLabel(), "Contests");
Assert.assertEquals(dataForm.getFields().get(7).getOptions().get(0).getValue(), "contests");
Assert.assertEquals(dataForm.getFields().get(7).getOptions().get(1).getLabel(), "News");
Assert.assertEquals(dataForm.getFields().get(7).getOptions().get(1).getValue(), "news");
Assert.assertEquals(dataForm.getFields().get(7).getOptions().get(2).getLabel(), "Polls");
Assert.assertEquals(dataForm.getFields().get(7).getOptions().get(2).getValue(), "polls");
Assert.assertEquals(dataForm.getFields().get(7).getOptions().get(3).getLabel(), "Reminders");
Assert.assertEquals(dataForm.getFields().get(7).getOptions().get(3).getValue(), "reminders");
Assert.assertEquals(dataForm.getFields().get(7).getOptions().get(4).getLabel(), "Search");
Assert.assertEquals(dataForm.getFields().get(7).getOptions().get(4).getValue(), "search");
Assert.assertEquals(dataForm.getFields().get(7).getValues().get(0), "news");
Assert.assertEquals(dataForm.getFields().get(7).getValues().get(1), "search");
Assert.assertEquals(dataForm.getFields().get(8).getType(), DataForm.Field.Type.FIXED);
Assert.assertEquals(dataForm.getFields().get(8).getValues().get(0), "Section 3: Subscriber List");
Assert.assertEquals(dataForm.getFields().get(9).getType(), DataForm.Field.Type.LIST_SINGLE);
Assert.assertEquals(dataForm.getFields().get(9).getVar(), "maxsubs");
Assert.assertEquals(dataForm.getFields().get(9).getLabel(), "Maximum number of subscribers");
Assert.assertEquals(dataForm.getFields().get(9).getOptions().size(), 6);
Assert.assertEquals(dataForm.getFields().get(9).getOptions().get(0).getLabel(), "10");
Assert.assertEquals(dataForm.getFields().get(9).getOptions().get(0).getValue(), "10");
Assert.assertEquals(dataForm.getFields().get(9).getOptions().get(1).getLabel(), "20");
Assert.assertEquals(dataForm.getFields().get(9).getOptions().get(1).getValue(), "20");
Assert.assertEquals(dataForm.getFields().get(9).getOptions().get(2).getLabel(), "30");
Assert.assertEquals(dataForm.getFields().get(9).getOptions().get(2).getValue(), "30");
Assert.assertEquals(dataForm.getFields().get(9).getOptions().get(3).getLabel(), "50");
Assert.assertEquals(dataForm.getFields().get(9).getOptions().get(3).getValue(), "50");
Assert.assertEquals(dataForm.getFields().get(9).getOptions().get(4).getLabel(), "100");
Assert.assertEquals(dataForm.getFields().get(9).getOptions().get(4).getValue(), "100");
Assert.assertEquals(dataForm.getFields().get(9).getOptions().get(5).getLabel(), "None");
Assert.assertEquals(dataForm.getFields().get(9).getOptions().get(5).getValue(), "none");
Assert.assertEquals(dataForm.getFields().get(9).getValues().get(0), "20");
Assert.assertEquals(dataForm.getFields().get(10).getType(), DataForm.Field.Type.FIXED);
Assert.assertEquals(dataForm.getFields().get(10).getValues().get(0), "Section 4: Invitations");
Assert.assertEquals(dataForm.getFields().get(11).getType(), DataForm.Field.Type.JID_MULTI);
Assert.assertEquals(dataForm.getFields().get(11).getVar(), "invitelist");
Assert.assertEquals(dataForm.getFields().get(11).getLabel(), "People to invite");
Assert.assertNotNull(dataForm.findField("FORM_TYPE"));
}