@Test
  public void testSimple() throws Exception {
    GroupExtension ext = new GroupExtension("mad-group", "david@localhost");

    GroupExtension parsed = parse(ext.toXML());
    assertNotNull(parsed);
    assertEquals("mad-group", parsed.getID());
    assertEquals("david@localhost", parsed.getOwner());
  }
  @Test
  public void testRemove() throws Exception {
    GroupExtension ext =
        new GroupExtension("mad-group", "david@localhost", GroupExtension.Type.SET);
    ext.removeMember("alpha@localhost");

    GroupExtension parsed = parse(ext.toXML());
    assertNotNull(parsed);
    assertEquals("mad-group", parsed.getID());
    assertEquals("david@localhost", parsed.getOwner());
    assertNotNull(ext.getMembers());
    assertEquals(1, ext.getMembers().size());

    Member m;

    m = ext.getMembers().get(0);
    assertNotNull(m);
    assertEquals("alpha@localhost", m.jid);
    assertEquals(Member.Operation.REMOVE, m.operation);
  }
  @Test
  public void testPart() throws Exception {
    GroupExtension ext =
        new GroupExtension("mad-group", "david@localhost", GroupExtension.Type.PART);

    GroupExtension parsed = parse(ext.toXML());
    assertNotNull(parsed);
    assertEquals("mad-group", parsed.getID());
    assertEquals("david@localhost", parsed.getOwner());
    assertEquals(Collections.emptyList(), ext.getMembers());
  }
  @Test
  public void testCreate() throws Exception {
    GroupExtension ext =
        new GroupExtension(
            "mad-group",
            "david@localhost",
            GroupExtension.Type.CREATE,
            "Mad group",
            Collections.<Member>emptyList());
    ext.addMember("alpha@localhost");
    ext.addMember("beta@localhost");

    GroupExtension parsed = parse(ext.toXML());
    assertNotNull(parsed);
    assertEquals("mad-group", parsed.getID());
    assertEquals("david@localhost", parsed.getOwner());
    assertEquals("Mad group", parsed.getSubject());
    assertNotNull(ext.getMembers());
    assertEquals(2, ext.getMembers().size());

    Member m;

    m = ext.getMembers().get(0);
    assertNotNull(m);
    assertEquals("alpha@localhost", m.jid);
    assertEquals(Member.Operation.ADD, m.operation);

    m = ext.getMembers().get(1);
    assertNotNull(m);
    assertEquals("beta@localhost", m.jid);
    assertEquals(Member.Operation.ADD, m.operation);
  }