package tryanderror.xstream; import static org.hamcrest.CoreMatchers.is; import static org.junit.Assert.assertThat; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import org.junit.Test; import com.github.signed.xml.xstream.converter.RoleConverter; import com.github.signed.xml.xstream.domain.Role; import com.thoughtworks.xstream.converters.MarshallingContext; import com.thoughtworks.xstream.converters.UnmarshallingContext; import com.thoughtworks.xstream.io.HierarchicalStreamReader; import com.thoughtworks.xstream.io.HierarchicalStreamWriter; public class RoleConverterTest { private RoleConverter converter = new RoleConverter(); @Test public void onlyConvertsTheRoleEnumeration() { assertThat(converter.canConvert(Role.class), is(true)); } @Test public void doesNotConvertAnyOtherClass() { Class<?> anyOtherType = String.class; assertThat(converter.canConvert(anyOtherType), is(false)); } @Test public void serializesConstantToXmlRepresentation() throws Exception { MarshallingContext anyContext = null; HierarchicalStreamWriter writer = mock(HierarchicalStreamWriter.class); converter.marshal(Role.ReserveProvider, writer, anyContext); verify(writer).addAttribute("v", "A04"); } @Test public void deserializesToEnumConstant() throws Exception { UnmarshallingContext anyContext = null; HierarchicalStreamReader reader = mock(HierarchicalStreamReader.class); when(reader.getAttribute("v")).thenReturn("A27"); assertThat(converter.unmarshal(reader, anyContext), is((Object) Role.TransmissionSystemOperator)); } @Test(expected = RuntimeException.class) public void forUnknownXmlRepresentation() throws Exception { UnmarshallingContext anyContext = null; HierarchicalStreamReader reader = mock(HierarchicalStreamReader.class); when(reader.getAttribute("v")).thenReturn("UnknowXmlRepresentation"); converter.unmarshal(reader, anyContext); } }