X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=core%2Ftest%2Fnet%2Fsf%2Fopenrocket%2Fpreset%2Fxml%2FBaseComponentDTOTest.java;fp=core%2Ftest%2Fnet%2Fsf%2Fopenrocket%2Fpreset%2Fxml%2FBaseComponentDTOTest.java;h=bbc609d9895e89a56693ab0e7c3f764e6d3b7700;hb=9349577cdfdff682b2aabd6daa24fdc3a7449b58;hp=0000000000000000000000000000000000000000;hpb=30ba0a882f0c061176ba14dbf86d3d6fad096c02;p=debian%2Fopenrocket diff --git a/core/test/net/sf/openrocket/preset/xml/BaseComponentDTOTest.java b/core/test/net/sf/openrocket/preset/xml/BaseComponentDTOTest.java new file mode 100644 index 00000000..bbc609d9 --- /dev/null +++ b/core/test/net/sf/openrocket/preset/xml/BaseComponentDTOTest.java @@ -0,0 +1,72 @@ +package net.sf.openrocket.preset.xml; + +import net.sf.openrocket.motor.Manufacturer; +import net.sf.openrocket.preset.ComponentPreset; +import net.sf.openrocket.preset.ComponentPresetFactory; +import net.sf.openrocket.preset.TypedPropertyMap; +import org.junit.Assert; +import org.junit.Test; + +import javax.imageio.ImageIO; +import javax.xml.bind.JAXBContext; +import javax.xml.bind.Marshaller; +import javax.xml.bind.Unmarshaller; +import java.awt.image.BufferedImage; +import java.awt.image.DataBufferByte; +import java.io.StringReader; +import java.io.StringWriter; + +/** + */ +public class BaseComponentDTOTest { + + + @Test + public void testImage() throws Exception { + TypedPropertyMap presetspec = new TypedPropertyMap(); + presetspec.put(ComponentPreset.TYPE, ComponentPreset.Type.BODY_TUBE); + presetspec.put(ComponentPreset.MANUFACTURER, Manufacturer.getManufacturer("manufacturer")); + presetspec.put(ComponentPreset.PARTNO, "partno"); + presetspec.put(ComponentPreset.LENGTH, 2.0); + presetspec.put(ComponentPreset.OUTER_DIAMETER, 2.0); + presetspec.put(ComponentPreset.INNER_DIAMETER, 1.0); + presetspec.put(ComponentPreset.MASS, 100.0); + ComponentPreset preset = ComponentPresetFactory.create(presetspec); + + //Convert the presets to a BodyTubeDTO + BodyTubeDTO dto = new BodyTubeDTO(preset); + + //Add an image to the DTO. + BufferedImage image = ImageIO.read(this.getClass().getResourceAsStream("/pix/splashscreen.png")); + dto.setImage(image); + + JAXBContext binder = JAXBContext.newInstance(OpenRocketComponentDTO.class); + Marshaller marshaller = binder.createMarshaller(); + marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE); + StringWriter sw = new StringWriter(); + + //Serialize the dto to XML + marshaller.marshal(dto, sw); + String xml = sw.toString(); + + //Read the XML back to create the dto again + Unmarshaller unmarshaller = binder.createUnmarshaller(); + BodyTubeDTO redone = (BodyTubeDTO) unmarshaller.unmarshal(new StringReader(xml)); + + //Compare the image. + Assert.assertArrayEquals(((DataBufferByte) image.getData().getDataBuffer()).getData(), + ((DataBufferByte) redone.getImage().getData().getDataBuffer()).getData()); + + //Assert the rest of the attributes. + Assert.assertEquals(dto.getInsideDiameter(), redone.getInsideDiameter(), 0.00001); + Assert.assertEquals(dto.getLength(), redone.getLength(), 0.00001); + Assert.assertEquals(dto.getOutsideDiameter(), redone.getOutsideDiameter(), 0.00001); + Assert.assertEquals(dto.getDescription(), redone.getDescription()); + Assert.assertEquals(dto.getManufacturer(), redone.getManufacturer()); + Assert.assertEquals(dto.getMass(), redone.getMass(), 0.00001); + Assert.assertEquals(dto.getPartNo(), redone.getPartNo()); + + //Uncomment if you want to write the image to a file to view it. +// ImageIO.write(redone.getImage(), "png", new FileOutputStream("redone.png")); + } +}