@Test
  public void testMinimalReadWrite() throws Exception {
    List<Group> expected = new ArrayList<Group>();
    expected.add(new Group("group1"));
    expected.add(new Group("group2"));

    StringBuilder xml = new StringBuilder();
    GroupListWriter groupListWriter = new GroupListWriter();
    groupListWriter.write(expected, xml);
    assertFalse(xml.toString().isEmpty());

    GroupListReader groupListReader = new GroupListReader();
    List<Group> actual = groupListReader.read(xml.toString());
    assertNotNull(actual);
    assertEquals(expected.size(), actual.size());
    assertEquals(expected.get(0), actual.get(0));
    assertEquals(expected.get(1), actual.get(1));
  }
  @Test
  public void testReaderExceptions() throws Exception {
    try {
      String s = null;
      GroupListReader groupListReader = new GroupListReader();
      List<Group> g = groupListReader.read(s);
      fail("null String should throw IllegalArgumentException");
    } catch (IllegalArgumentException e) {
    }

    try {
      InputStream in = null;
      GroupListReader groupListReader = new GroupListReader();
      List<Group> g = groupListReader.read(in);
      fail("null InputStream should throw IOException");
    } catch (IOException e) {
    }

    try {
      Reader r = null;
      GroupListReader groupListReader = new GroupListReader();
      List<Group> g = groupListReader.read(r);
      fail("null element should throw ReaderException");
    } catch (IllegalArgumentException e) {
    }
  }