### Question:
MergeableTagConverter extends XmlAdapter<String, MergeableTags> { @Override public MergeableTags unmarshal(String input) throws Exception { Set<String> tagValues = new HashSet<String>(); if(input != null && !input.isEmpty()){ String[] splitInput = input.split(SPLIT); tagValues.addAll(Arrays.asList(splitInput)); } return new MergeableTags(tagValues); }  @Override String marshal(MergeableTags mergeableTags); @Override MergeableTags unmarshal(String input);  }### Answer:
@Test public void testFromEmptyString() throws Exception { Object output = converter.unmarshal(""); assertNotNull(output); MergeableTags tags = (MergeableTags)output; assertTrue(tags.getTags().isEmpty()); }
@Test public void testFromNullString() throws Exception { Object output = converter.unmarshal(null); assertNotNull(output); MergeableTags tags = (MergeableTags)output; assertTrue(tags.getTags().isEmpty()); }
@Test public void testFromString() throws Exception { Object output = converter.unmarshal(CONVERTED_TAGS); assertNotNull(output); MergeableTags tags = (MergeableTags)output; assertEquals(TAGS.size(), tags.getTags().size()); assertTrue(tags.getTags().containsAll(TAGS)); }