public void testSerializeAndDeserialize() throws Exception {
SortedMap<Integer, Element> elements = new TreeMap<Integer, Element>();
elements.put(14, new Gadget("http://a/b.xml"));
Blip expectedBlip = new Blip("blip1", Arrays.asList("blip2", "blip3"),
"\nhello world!\n another line", Arrays.asList("robot@test.com", "user@test.com"),
"user@test.com", 1000l, 123l, null, "<some string>", Arrays.asList(new Annotation("key", "val", 2, 3)),
elements, new ArrayList<String>(), wavelet);
Blip actualBlip = Blip.deserialize(wavelet.getOperationQueue(), wavelet,
expectedBlip.serialize());
assertEquals(expectedBlip.getWaveId(), actualBlip.getWaveId());
assertEquals(expectedBlip.getWaveletId(), actualBlip.getWaveletId());
assertEquals(expectedBlip.getBlipId(), actualBlip.getBlipId());
assertEquals(expectedBlip.getContent(), actualBlip.getContent());
assertEquals(expectedBlip.getCreator(), actualBlip.getCreator());
assertEquals(expectedBlip.getLastModifiedTime(), actualBlip.getLastModifiedTime());
assertEquals(expectedBlip.getParentBlipId(), actualBlip.getParentBlipId());
assertEquals(expectedBlip.getVersion(), actualBlip.getVersion());
assertEquals(expectedBlip.getContributors(), actualBlip.getContributors());
assertEquals(expectedBlip.getChildBlipIds(), actualBlip.getChildBlipIds());
assertEquals(expectedBlip.getElements().keySet(), actualBlip.getElements().keySet());
assertEquals(expectedBlip.getAnnotations().size(), actualBlip.getAnnotations().size());
}