public void testDifferentAnnotations() throws Exception {
   Persister persister = new Persister();
   Example example = new Example("a", "b");
   StringWriter writer = new StringWriter();
   persister.write(example, writer);
   String text = writer.toString();
   Example deserialized = persister.read(Example.class, text);
   assertEquals(deserialized.getKey(), "a");
   assertEquals(deserialized.getValue(), "b");
   validate(persister, deserialized);
 }
 public void testInvalidExample() throws Exception {
   Persister persister = new Persister();
   InvalidExample example = new InvalidExample("a", "b");
   StringWriter writer = new StringWriter();
   boolean exception = false;
   try {
     persister.write(example, writer);
   } catch (ConstructorException e) {
     e.printStackTrace();
     exception = true;
   }
   assertTrue("Non matching annotations should throw a constructor exception", exception);
 }
 public void testDifferentListAnnotations() throws Exception {
   Persister persister = new Persister();
   List<String> list = new ArrayList<String>();
   ExampleList example = new ExampleList(list, "a");
   list.add("1");
   list.add("2");
   list.add("3");
   list.add("4");
   StringWriter writer = new StringWriter();
   persister.write(example, writer);
   String text = writer.toString();
   ExampleList deserialized = persister.read(ExampleList.class, text);
   assertEquals(deserialized.getList().size(), 4);
   assertTrue(deserialized.getList().contains("1"));
   assertTrue(deserialized.getList().contains("2"));
   assertTrue(deserialized.getList().contains("3"));
   assertTrue(deserialized.getList().contains("4"));
   assertEquals(deserialized.getName(), "a");
   validate(persister, deserialized);
 }