package org.weasis.core.ui.model.imp.suite;
import static org.assertj.core.api.Assertions.assertThat;
import org.junit.Test;
import org.weasis.core.api.media.data.ImageElement;
import org.weasis.core.ui.model.GraphicModel;
import org.weasis.core.ui.model.graphic.Graphic;
import org.weasis.core.ui.model.graphic.imp.AnnotationGraphicTest;
import org.weasis.core.ui.model.graphic.imp.PixelInfoGraphicTest;
import org.weasis.core.ui.model.graphic.imp.PointGraphicTest;
import org.weasis.core.ui.model.graphic.imp.angle.AngleToolGraphicTest;
import org.weasis.core.ui.model.graphic.imp.angle.CobbAngleToolGraphicTest;
import org.weasis.core.ui.model.graphic.imp.area.PolygonGraphicTest;
import org.weasis.core.ui.model.graphic.imp.area.RectangleGraphicTest;
import org.weasis.core.ui.model.graphic.imp.line.LineGraphicTest;
import org.weasis.core.ui.model.graphic.imp.line.ParallelLineGraphicTest;
import org.weasis.core.ui.model.graphic.imp.line.PolylineGraphicTest;
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.test.utils.ModelListHelper;
public class SerializationSuite extends ModelListHelper {
@Test
public void test_empty_model() throws Exception {
GraphicModel model = new XmlGraphicModel();
model.setUuid(UUID_1);
String actual = serialize(model);
String expected = String.format(TPL_XML_PREFIX + "<presentation uuid=\"%s\"><references/><layers/><graphics/></presentation>", UUID_1); //$NON-NLS-1$
assertThat(actual).isEqualTo(expected);
}
@Test
public void test_add_one_point_graphic() throws Exception {
GraphicModel model = new XmlGraphicModel();
model.setUuid(UUID_1);
Graphic graphic = PointGraphicTest.COMPLETE_OBJECT;
model.addGraphic(graphic);
assertThat(model.getLayers()).hasSize(1);
Layer layer = model.getLayers().get(0);
String actual = serialize(model);
String expected = String.format(TPL_XML_PREFIX +
"<presentation uuid=\"%1$s\">" //$NON-NLS-1$
+ "<references/>" //$NON-NLS-1$
+ "<layers>" //$NON-NLS-1$
+ "<layer level=\"40\" locked=\"false\" selectable=\"true\" type=\"DRAW\" visible=\"true\" uuid=\"%2$s\"/>" //$NON-NLS-1$
+ "</layers>" //$NON-NLS-1$
+ "<graphics>" //$NON-NLS-1$
+ "<point pointSize=\"1\" fill=\"false\" showLabel=\"true\" thickness=\"3.0\" " //$NON-NLS-1$
+ "uuid=\"%3$s\">" //$NON-NLS-1$
+ "<paint rgb=\"ffff0000\"/>" //$NON-NLS-1$
+ "<layer>%2$s</layer>" //$NON-NLS-1$
+ "<pts>" //$NON-NLS-1$
+ "<pt x=\"1665.5\" y=\"987.0\"/>" //$NON-NLS-1$
+ "</pts>" //$NON-NLS-1$
+ "</point>" //$NON-NLS-1$
+ "</graphics>" //$NON-NLS-1$
+ "</presentation>", //$NON-NLS-1$
UUID_1, layer.getUuid(), graphic.getUuid());
assertThat(actual).isEqualTo(expected);
}
@Test
public void test_with_image_element() throws Exception {
ImageElement img = mockImage(UUID_2, UUID_3);
GraphicModel model = new XmlGraphicModel(img);
model.setUuid(UUID_1);
String actual = serialize(model);
String expected = String.format(TPL_XML_PREFIX +
"<presentation uuid=\"%s\">" //$NON-NLS-1$
+ "<references>" //$NON-NLS-1$
+ "<series uuid=\"%s\">" //$NON-NLS-1$
+ "<image frames=\"\" uuid=\"%s\"/>" //$NON-NLS-1$
+ "</series>" //$NON-NLS-1$
+ "</references>" //$NON-NLS-1$
+ "<layers/>" //$NON-NLS-1$
+ "<graphics/>" //$NON-NLS-1$
+ "</presentation>", //$NON-NLS-1$
UUID_1, UUID_3, UUID_2);
assertThat(actual).isEqualTo(expected);
}
@Test
public void test_with_mulitiple_graphics_and_one_layer() throws Exception {
ImageElement img = mockImage(UUID_2, UUID_3);
GraphicModel model = new XmlGraphicModel(img);
model.setUuid(UUID_1);
Graphic pointGraphic = PointGraphicTest.COMPLETE_OBJECT.copy();
Graphic pixelInfoGraphic = PixelInfoGraphicTest.COMPLETE_OBJECT.copy();
Graphic annotationGraphic = AnnotationGraphicTest.COMPLETE_OBJECT.copy();
Graphic lineGraphic = LineGraphicTest.COMPLETE_OBJECT.copy();
Graphic parallelLine = ParallelLineGraphicTest.COMPLETE_OBJECT.copy();
Graphic polylineGraphic = PolylineGraphicTest.COMPLETE_OBJECT.copy();
Graphic polygonGraphic = PolygonGraphicTest.COMPLETE_OBJECT.copy();
Graphic rectangleGraphic = RectangleGraphicTest.COMPLETE_OBJECT.copy();
Graphic angleGraphic = AngleToolGraphicTest.COMPLETE_OBJECT.copy();
Graphic cobbAngleGraphic = CobbAngleToolGraphicTest.COMPLETE_OBJECT.copy();
model.addGraphic(pointGraphic);
model.addGraphic(pixelInfoGraphic);
model.addGraphic(annotationGraphic);
model.addGraphic(lineGraphic);
model.addGraphic(parallelLine);
model.addGraphic(polylineGraphic);
model.addGraphic(polygonGraphic);
model.addGraphic(rectangleGraphic);
model.addGraphic(angleGraphic);
model.addGraphic(cobbAngleGraphic);
assertThat(model.getLayers()).hasSize(1);
Layer layer = model.getLayers().get(0);
assertThat(pointGraphic.getLayer()).isEqualTo(layer);
assertThat(pixelInfoGraphic.getLayer()).isEqualTo(layer);
assertThat(annotationGraphic.getLayer()).isEqualTo(layer);
assertThat(lineGraphic.getLayer()).isEqualTo(layer);
assertThat(polylineGraphic.getLayer()).isEqualTo(layer);
assertThat(polygonGraphic.getLayer()).isEqualTo(layer);
assertThat(rectangleGraphic.getLayer()).isEqualTo(layer);
assertThat(angleGraphic.getLayer()).isEqualTo(layer);
assertThat(cobbAngleGraphic.getLayer()).isEqualTo(layer);
String actual = serialize(model);
String expected = String.format(TPL_XML_PREFIX +
"<presentation uuid=\"%s\">" //$NON-NLS-1$
+ "<references>" //$NON-NLS-1$
+ "<series uuid=\"%s\">" //$NON-NLS-1$
+ "<image frames=\"\" uuid=\"%s\"/>" //$NON-NLS-1$
+ "</series>" //$NON-NLS-1$
+ "</references>" //$NON-NLS-1$
+ "<layers>" //$NON-NLS-1$
+ serializeWithoutHeader(layer)
+ "</layers>" //$NON-NLS-1$
+ "<graphics>" //$NON-NLS-1$
+ serializeWithoutHeader(pointGraphic)
+ serializeWithoutHeader(pixelInfoGraphic)
+ serializeWithoutHeader(annotationGraphic)
+ serializeWithoutHeader(lineGraphic)
+ serializeWithoutHeader(parallelLine)
+ serializeWithoutHeader(polylineGraphic)
+ serializeWithoutHeader(polygonGraphic)
+ serializeWithoutHeader(rectangleGraphic)
+ serializeWithoutHeader(angleGraphic)
+ serializeWithoutHeader(cobbAngleGraphic)
+ "</graphics>" //$NON-NLS-1$
+ "</presentation>", UUID_1, UUID_3, UUID_2); //$NON-NLS-1$
assertThat(actual).isEqualTo(expected);
}
@Test
public void test_with_mulitiple_graphics_and_multiple_layers() throws Exception {
ImageElement img = mockImage(UUID_2, UUID_3);
GraphicModel model = new XmlGraphicModel(img);
model.setUuid(UUID_1);
Graphic pointGraphic = PointGraphicTest.COMPLETE_OBJECT.copy();
Graphic pixelInfoGraphic = PixelInfoGraphicTest.COMPLETE_OBJECT.copy();
Graphic annotationGraphic = AnnotationGraphicTest.COMPLETE_OBJECT.copy();
Graphic lineGraphic = LineGraphicTest.COMPLETE_OBJECT.copy();
Graphic parallelLine = ParallelLineGraphicTest.COMPLETE_OBJECT.copy();
Graphic polylineGraphic = PolylineGraphicTest.COMPLETE_OBJECT.copy();
Graphic polygonGraphic = PolygonGraphicTest.COMPLETE_OBJECT.copy();
Graphic rectangleGraphic = RectangleGraphicTest.COMPLETE_OBJECT.copy();
Graphic angleGraphic = AngleToolGraphicTest.COMPLETE_OBJECT.copy();
Graphic cobbAngleGraphic = CobbAngleToolGraphicTest.COMPLETE_OBJECT.copy();
pixelInfoGraphic.setLayerType(LayerType.ANNOTATION);
lineGraphic.setLayerType(LayerType.MEASURE);
rectangleGraphic.setLayerType(LayerType.MEASURE);
model.addGraphic(pointGraphic);
model.addGraphic(pixelInfoGraphic);
model.addGraphic(annotationGraphic);
model.addGraphic(lineGraphic);
model.addGraphic(parallelLine);
model.addGraphic(polylineGraphic);
model.addGraphic(polygonGraphic);
model.addGraphic(rectangleGraphic);
model.addGraphic(angleGraphic);
model.addGraphic(cobbAngleGraphic);
assertThat(model.getLayers()).hasSize(3);
Layer layer1 = model.getLayers().get(0);
Layer layer2 = model.getLayers().get(1);
Layer layer3 = model.getLayers().get(2);
assertThat(layer1).isNotNull();
assertThat(layer2).isNotNull();
assertThat(layer3).isNotNull();
assertThat(pointGraphic.getLayer()).isEqualTo(layer1);
assertThat(pixelInfoGraphic.getLayer()).isEqualTo(layer2);
assertThat(annotationGraphic.getLayer()).isEqualTo(layer1);
assertThat(lineGraphic.getLayer()).isEqualTo(layer3);
assertThat(polylineGraphic.getLayer()).isEqualTo(layer1);
assertThat(polygonGraphic.getLayer()).isEqualTo(layer1);
assertThat(rectangleGraphic.getLayer()).isEqualTo(layer3);
assertThat(angleGraphic.getLayer()).isEqualTo(layer1);
assertThat(cobbAngleGraphic.getLayer()).isEqualTo(layer1);
String actual = serialize(model);
String expected = String.format(TPL_XML_PREFIX +
"<presentation uuid=\"%s\">" //$NON-NLS-1$
+ "<references>" //$NON-NLS-1$
+ "<series uuid=\"%s\">" //$NON-NLS-1$
+ "<image frames=\"\" uuid=\"%s\"/>" //$NON-NLS-1$
+ "</series>" //$NON-NLS-1$
+ "</references>" //$NON-NLS-1$
+ "<layers>" //$NON-NLS-1$
+ serializeWithoutHeader(layer1)
+ serializeWithoutHeader(layer2)
+ serializeWithoutHeader(layer3)
+ "</layers>" //$NON-NLS-1$
+ "<graphics>" //$NON-NLS-1$
+ serializeWithoutHeader(pointGraphic)
+ serializeWithoutHeader(pixelInfoGraphic)
+ serializeWithoutHeader(annotationGraphic)
+ serializeWithoutHeader(lineGraphic)
+ serializeWithoutHeader(parallelLine)
+ serializeWithoutHeader(polylineGraphic)
+ serializeWithoutHeader(polygonGraphic)
+ serializeWithoutHeader(rectangleGraphic)
+ serializeWithoutHeader(angleGraphic)
+ serializeWithoutHeader(cobbAngleGraphic)
+ "</graphics>" //$NON-NLS-1$
+ "</presentation>", UUID_1, UUID_3, UUID_2); //$NON-NLS-1$
assertThat(actual).isEqualTo(expected);
consoleDisplay(model);
}
}