package org.weasis.core.ui.model.imp.suite; import static org.assertj.core.api.Assertions.assertThat; import static org.junit.Assert.fail; import java.io.InputStream; import org.junit.Test; import org.weasis.core.api.media.data.ImageElement; import org.weasis.core.ui.model.ReferencedImage; import org.weasis.core.ui.model.ReferencedSeries; import org.weasis.core.ui.model.graphic.Graphic; import org.weasis.core.ui.model.graphic.imp.PointGraphic; import org.weasis.core.ui.model.imp.XmlGraphicModel; import org.weasis.core.ui.model.layer.Layer; import org.weasis.core.ui.model.layer.LayerType; import org.weasis.core.ui.model.layer.imp.DefaultLayer; import org.weasis.core.ui.test.utils.ModelListHelper; import org.xml.sax.SAXParseException; public class DeserializationSuite extends ModelListHelper { public static final String XML_0 = "/presentation/presentation.0.xml"; //$NON-NLS-1$ public static final String XML_1 = "/presentation/presentation.1.xml"; //$NON-NLS-1$ public static final String XML_2 = "/presentation/presentation.2.xml"; //$NON-NLS-1$ public static final String XML_3 = "/presentation/presentation.3.xml"; //$NON-NLS-1$ public static final String XML_4 = "/presentation/presentation.4.xml"; //$NON-NLS-1$ public static final String XML_5 = "/presentation/presentation.5.xml"; //$NON-NLS-1$ @Test public void test_empty_xml() { InputStream xml_0 = checkXml(XML_0); try { deserialize(xml_0, XmlGraphicModel.class); fail("Must throws an exception"); //$NON-NLS-1$ } catch (Exception e) { assertThat(e).hasCauseExactlyInstanceOf(SAXParseException.class); } InputStream xml_1 = checkXml(XML_1); try { deserialize(xml_1, XmlGraphicModel.class); fail("Must throws an exception"); //$NON-NLS-1$ } catch (Exception e) { assertThat(e).hasCauseExactlyInstanceOf(SAXParseException.class); } } @Test public void test_empty_presentation() throws Exception { InputStream xml = checkXml(XML_2); XmlGraphicModel result = deserialize(xml, XmlGraphicModel.class); assertThat(result).isNotNull(); assertThat(result.getUuid()).isNotNull().isNotEmpty(); assertThat(result.getReferencedSeries()).isEmpty(); assertThat(result.getModels()).isEmpty(); assertThat(result.getLayers()).isEmpty(); assertThat(result.getLayerCount()).isEqualTo(0); assertThat(result.getAllGraphics()).isEmpty(); } @Test public void test_basic_presentation() throws Exception { InputStream xml = checkXml(XML_3); XmlGraphicModel result = deserialize(xml, XmlGraphicModel.class); XmlGraphicModel expected = new XmlGraphicModel(); assertThat(result).isNotNull(); assertThat(result.getUuid()).isEqualTo(PRESENTATION_UUID_0); assertThat(result.getReferencedSeries()).isEqualTo(expected.getReferencedSeries()).isEmpty(); assertThat(result.getModels()).isEqualTo(expected.getModels()).isEmpty(); assertThat(result.getLayers()).isEqualTo(expected.getLayers()).isEmpty(); assertThat(result.getLayerCount()).isEqualTo(expected.getLayerCount()).isEqualTo(0); assertThat(result.getAllGraphics()).isEqualTo(expected.getAllGraphics()).isEmpty(); } @Test public void test_basic_presentation_with_image_reference() throws Exception { ImageElement img = mockImage(PRESENTATION_UUID_1, PRESENTATION_UUID_2); InputStream xml = checkXml(XML_4); XmlGraphicModel result = deserialize(xml, XmlGraphicModel.class); XmlGraphicModel expected = new XmlGraphicModel(img); assertThat(result).isNotNull(); assertThat(result.getUuid()).isEqualTo(PRESENTATION_UUID_0); assertThat(result.getReferencedSeries()).hasSize(1); assertThat(expected.getReferencedSeries()).hasSize(1); ReferencedSeries resultRef = result.getReferencedSeries().get(0); ReferencedSeries expectedRef = expected.getReferencedSeries().get(0); assertThat(resultRef.getUuid()).isEqualTo(expectedRef.getUuid()).isEqualTo(PRESENTATION_UUID_2); assertThat(resultRef.getImages()).hasSize(1); assertThat(expectedRef.getImages()).hasSize(1); ReferencedImage resultImgRef = resultRef.getImages().get(0); ReferencedImage expectedImgRef = expectedRef.getImages().get(0); assertThat(resultImgRef.getUuid()).isEqualTo(expectedImgRef.getUuid()).isEqualTo(PRESENTATION_UUID_1); assertThat(result.getModels()).isEqualTo(expected.getModels()).isEmpty(); assertThat(result.getLayers()).isEqualTo(expected.getLayers()).isEmpty(); assertThat(result.getLayerCount()).isEqualTo(expected.getLayerCount()).isEqualTo(0); assertThat(result.getAllGraphics()).isEqualTo(expected.getAllGraphics()).isEmpty(); } @Test public void test_presentation_with_one_graphic() throws Exception { InputStream xml = checkXml(XML_5); XmlGraphicModel result = deserialize(xml, XmlGraphicModel.class); assertThat(result).isNotNull(); assertThat(result.getUuid()).isEqualTo(PRESENTATION_UUID_0); assertThat(result.getModels()).hasSize(1); assertThat(result.getLayers()).hasSize(1); Layer layer = result.getLayers().get(0); assertThat(layer).isInstanceOf(DefaultLayer.class); assertThat(layer.getUuid()).isEqualTo(LAYER_UUID_0); assertThat(layer.getLevel()).isEqualTo(40); assertThat(layer.getName()).isNull(); assertThat(layer.getType()).isEqualTo(LayerType.DRAW); assertThat(layer.getVisible()).isEqualTo(Boolean.TRUE); Graphic graphic = result.getModels().get(0); assertThat(graphic).isInstanceOf(PointGraphic.class); assertThat(graphic.getUuid()).isEqualTo(GRAPHIC_UUID_0); } private InputStream checkXml(String path) { InputStream xml = getClass().getResourceAsStream(path); assertThat(xml).isNotNull(); return xml; } }