/* * #%L * OME Bio-Formats package for reading and converting biological file formats. * %% * Copyright (C) 2005 - 2015 Open Microscopy Environment: * - Board of Regents of the University of Wisconsin-Madison * - Glencoe Software, Inc. * - University of Dundee * %% * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as * published by the Free Software Foundation, either version 2 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public * License along with this program. If not, see * <http://www.gnu.org/licenses/gpl-2.0.html>. * #L% */ package loci.formats.utests; import java.io.ByteArrayOutputStream; import java.io.OutputStreamWriter; import java.io.UnsupportedEncodingException; import java.lang.reflect.Constructor; import java.util.List; import java.util.Map; import java.util.Map.Entry; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.transform.OutputKeys; import javax.xml.transform.Result; import javax.xml.transform.Source; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerException; import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import loci.formats.ome.OMEXMLMetadataImpl; import static org.testng.AssertJUnit.*; import ome.xml.meta.OMEXMLMetadataRoot; import ome.xml.model.Annotation; import ome.xml.model.Arc; import ome.xml.model.BinaryFile; import ome.xml.model.BooleanAnnotation; import ome.xml.model.DoubleAnnotation; import ome.xml.model.External; import ome.xml.model.Filament; import ome.xml.model.LightEmittingDiode; import ome.xml.model.ListAnnotation; import ome.xml.model.LongAnnotation; import ome.xml.model.OMEModel; import ome.xml.model.OMEModelImpl; import ome.xml.model.OMEModelObject; import ome.xml.model.Objective; import ome.xml.model.ObjectiveSettings; import ome.xml.model.Reference; import ome.xml.model.CommentAnnotation; import ome.xml.model.TiffData; import ome.xml.model.TimestampAnnotation; import ome.xml.model.UUID; import ome.xml.model.XMLAnnotation; import ome.xml.model.Channel; import ome.xml.model.Dichroic; import ome.xml.model.Detector; import ome.xml.model.Filter; import ome.xml.model.FilterSet; import ome.xml.model.Image; import ome.xml.model.Instrument; import ome.xml.model.Laser; import ome.xml.model.Pixels; import ome.xml.model.Plate; import ome.xml.model.Rectangle; import ome.xml.model.ROI; import ome.xml.model.Shape; import ome.xml.model.Union; import ome.xml.model.Well; import ome.xml.model.WellSample; import ome.xml.model.enums.ArcType; import ome.xml.model.enums.DimensionOrder; import ome.xml.model.enums.EnumerationException; import ome.xml.model.enums.FilamentType; import ome.xml.model.enums.FilterType; import ome.xml.model.enums.LaserType; import ome.xml.model.enums.NamingConvention; import ome.xml.model.enums.PixelType; import ome.xml.model.primitives.NonNegativeLong; import ome.xml.model.primitives.PositiveInteger; import ome.units.quantity.Power; import ome.units.UNITS; import org.testng.annotations.BeforeClass; import org.testng.annotations.Optional; import org.testng.annotations.Parameters; import org.testng.annotations.Test; import org.w3c.dom.Document; import org.w3c.dom.Element; /** */ @Test(groups={"inOutTests"}) public class InOutCurrentTest { public static final String IMAGE_ID = "Image:0"; public static final String GENERAL_ANNOTATION_NAMESPACE = "test-ome-InOutCurrent-namespace"; public static final String IMAGE_ANNOTATION_ID = "Annotation:ImageBoolean0"; public static final String IMAGE_LIST_ANNOTATION_ID = "Annotation:ImageList0"; public static final String PIXELS_ID = "Pixels:0"; public static final String CHANNEL_ANNOTATION_ID = "Annotation:ChannelXML0"; public static final String INSTRUMENT_ID = "Instrument:0"; public static final String INSTRUMENT_ANNOTATION_ID = "Annotation:InstrumentString1"; public static final String INSTRUMENT_ANNOTATION_VALUE = "Value:String1"; public static final String DETECTOR_ID = "Detector:0"; public static final String DETECTOR_ANNOTATION_ID = "Annotation:DetectorString2"; public static final String DETECTOR_ANNOTATION_VALUE = "Value:String2"; public static final String LIGHTSOURCE_LASER_ID = "LightSource:0"; public static final String LIGHTSOURCE_LASER_ANNOTATION_ID = "Annotation:LightSourceLaserString3"; public static final String LIGHTSOURCE_LASER_ANNOTATION_VALUE = "Value:String3"; public static final String LIGHTSOURCE_PUMP_ID = "LightSource:1"; public static final String LIGHTSOURCE_ARC_ID = "LightSource:2"; public static final String LIGHTSOURCE_ARC_ANNOTATION_ID = "Annotation:LightSourceArcString4"; public static final String LIGHTSOURCE_ARC_ANNOTATION_VALUE = "Value:String4"; public static final String LIGHTSOURCE_FILAMENT_ID = "LightSource:3"; public static final String LIGHTSOURCE_FILAMENT_ANNOTATION_ID = "Annotation:LightSourceFilamentString5"; public static final String LIGHTSOURCE_FILAMENT_ANNOTATION_VALUE = "Value:String5"; public static final String LIGHTSOURCE_LED_ID = "LightSource:4"; public static final String LIGHTSOURCE_LED_ANNOTATION_ID = "Annotation:LightSourceLEDString6"; public static final String LIGHTSOURCE_LED_ANNOTATION_VALUE = "Value:String6"; public static final String DICHROIC_ID = "Dichroic:0"; public static final String DICHROIC_ANNOTATION_ID = "Annotation:DichroicString7"; public static final String DICHROIC_ANNOTATION_VALUE = "Value:String7"; public static final String FILTERSET_ID = "FilterSet:0"; public static final String EM_FILTER_ID = "Filter:0"; public static final String EM_FILTER_ANNOTATION_ID = "Annotation:EmFilterString8"; public static final String EM_FILTER_ANNOTATION_VALUE = "Value:String8"; public static final String EX_FILTER_ID = "Filter:1"; public static final String OBJECTIVE_ID = "Objective:0"; public static final String OBJECTIVE_ANNOTATION_ID = "Annotation:ObjectiveString9"; public static final String OBJECTIVE_ANNOTATION_VALUE = "Value:String9"; public static final String PLATE_ID = "Plate:0"; public static final String PLATE_ANNOTATION_ID = "Annotation:PlateTimestamp0"; public static final String WELL_ANNOTATION_ID = "Annotation:WellLong0"; public static final String ROI_ID = "ROI:5"; public static final String ROI_ANNOTATION_ID = "Annotation:ROIString0"; public static final String SHAPE_ID = "Shape:0"; public static final String SHAPE_ANNOTATION_ID = "Annotation:ShapeString10"; public static final String SHAPE_ANNOTATION_VALUE = "Value:String10"; public static final DimensionOrder DIMENSION_ORDER = DimensionOrder.XYZCT; public static final PixelType PIXEL_TYPE = PixelType.UINT16; public static final Integer SIZE_X = 512; public static final Integer SIZE_Y = 512; public static final Integer SIZE_Z = 64; public static final Integer SIZE_C = 3; public static final Integer SIZE_T = 50; public static final String DETECTOR_MODEL = "ReallySensitive!"; public static final String LIGHTSOURCE_LASER_MODEL = "ReallyBrightLaser!"; public static final String LIGHTSOURCE_PUMP_MODEL = "ReallyBrightPump!"; public static final String LIGHTSOURCE_ARC_MODEL = "ReallyBrightArc!"; public static final String LIGHTSOURCE_FILAMENT_MODEL = "ReallyBrightFilament!"; public static final String LIGHTSOURCE_LED_MODEL = "ReallyBrightLED!"; public static final String OBJECTIVE_MODEL = "ReallyClear!"; public static final String DICHROIC_SN = "0123456789"; public static final String FILTERSET_LOT = "RandomLot"; public static final FilterType EM_FILTER_TYPE = FilterType.LONGPASS; public static final FilterType EX_FILTER_TYPE = FilterType.NEUTRALDENSITY; public static final Double LIGHTSOURCE_LASER_POWER = 1000.0; public static final Double LIGHTSOURCE_PUMP_POWER = 100.0; public static final Double LIGHTSOURCE_ARC_POWER = 500.0; public static final Double LIGHTSOURCE_FILAMENT_POWER = 200.0; public static final Double LIGHTSOURCE_LED_POWER = 10.0; public static final LaserType LASER_TYPE = LaserType.DYE; public static final ArcType ARC_TYPE = ArcType.HGXE; public static final FilamentType FILAMENT_TYPE = FilamentType.HALOGEN; public static final Boolean IMAGE_ANNOTATION_VALUE = Boolean.FALSE; public static final String CHANNEL_ANNOTATION_VALUE = "<TestData><key>foo</key><value>bar</value></TestData>"; public static final Double PIXELS_ANNOTATION_VALUE = 3.14; public static final String PLATE_ANNOTATION_VALUE = "1970-01-01T00:00:00"; public static final Long WELL_ANNOTATION_VALUE = 262144L; public static final PositiveInteger WELL_ROWS = new PositiveInteger(3); public static final PositiveInteger WELL_COLS = new PositiveInteger(2); public static final NamingConvention WELL_ROW = NamingConvention.LETTER; public static final NamingConvention WELL_COL = NamingConvention.NUMBER; public static final String ROI_ANNOTATION_VALUE = "Some extra ROI data"; public static final Double RECTANGLE_X = 10.0; public static final Double RECTANGLE_Y = 20.0; public static final Double RECTANGLE_WIDTH = 128.0; public static final Double RECTANGLE_HEIGHT = 256.0; public static final String TIFF_DATA_UUID = "6DFA2954-FA9B-4447-A26C-82F9580D9425"; /** XML namespace. */ public static final String XML_NS = "http://www.openmicroscopy.org/Schemas/OME/2015-01"; /** XSI namespace. */ public static final String XSI_NS = "http://www.w3.org/2001/XMLSchema-instance"; /** XML schema location. */ public static final String SCHEMA_LOCATION = "http://www.openmicroscopy.org/Schemas/OME/2015-01/ome.xsd"; private Document document; public String asString; public OMEModelMock mock; public OMEXMLMetadataRoot ome; public OMEModel model; public OMEXMLMetadataImpl metadata; @Parameters({"mockClassName"}) @BeforeClass public void setUp(@Optional String mockClassName) throws Exception { if (mockClassName == null) { mockClassName = "loci.formats.utests.ObjectBasedOMEModelMock"; } Class mockClass = Class.forName(mockClassName); Constructor constructor = mockClass.getDeclaredConstructor(); mock = (OMEModelMock) constructor.newInstance(); DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder parser = factory.newDocumentBuilder(); document = parser.newDocument(); ome = (OMEXMLMetadataRoot) mock.getRoot(); // Produce a valid OME DOM element hierarchy Element root = ome.asXMLElement(document); root.setAttribute("xmlns", XML_NS); root.setAttribute("xmlns:xsi", XSI_NS); root.setAttribute("xsi:schemaLocation", XML_NS + " " + SCHEMA_LOCATION); document.appendChild(root); // Produce string XML asString = asString(); } @Test public void testValidOMENode() throws EnumerationException { model = new OMEModelImpl(); // Read string XML in as a DOM tree and parse into the object hierarchy ome = new OMEXMLMetadataRoot(document.getDocumentElement(), model); model.resolveReferences(); assertNotNull(ome); assertEquals(1, ome.sizeOfImageList()); } @Test public void testValidMetadataRoot() { metadata = new OMEXMLMetadataImpl(); metadata.setRoot(ome); assertEquals(ome, metadata.getRoot()); } @Test(dependsOnMethods={"testValidOMENode"}) public void testValidImageNode() { Image image = ome.getImage(0); assertNotNull(image); assertEquals(IMAGE_ID, image.getID()); } @Test(dependsOnMethods={"testValidMetadataRoot"}) public void testValidImageMetadata() { assertEquals(1, metadata.getImageCount()); assertEquals(IMAGE_ID, metadata.getImageID(0)); } @Test(dependsOnMethods={"testValidImageNode"}) public void testValidImageAnnotation() { Annotation n = ome.getImage(0).getLinkedAnnotation(0); assertNotNull(n); assertEquals(ListAnnotation.class, n.getClass()); ListAnnotation l = (ListAnnotation) n; assertEquals(l.getID(), IMAGE_LIST_ANNOTATION_ID); assertEquals(l.getNamespace(), GENERAL_ANNOTATION_NAMESPACE); Annotation n2 = l.getLinkedAnnotation(0); assertEquals(BooleanAnnotation.class, n2.getClass()); BooleanAnnotation b = (BooleanAnnotation) n2; assertEquals(b.getValue(), IMAGE_ANNOTATION_VALUE); assertEquals(b.getNamespace(), GENERAL_ANNOTATION_NAMESPACE); assertEquals(b.getID(), IMAGE_ANNOTATION_ID); } @Test(dependsOnMethods={"testValidImageMetadata"}) public void testValidImageAnnotationMetadata() { assertEquals(1, metadata.getListAnnotationCount()); assertEquals(1, metadata.getBooleanAnnotationCount()); assertEquals(1, metadata.getImageAnnotationRefCount(0)); assertEquals(IMAGE_LIST_ANNOTATION_ID, metadata.getListAnnotationID(0)); assertEquals(IMAGE_ANNOTATION_VALUE, metadata.getBooleanAnnotationValue(0)); assertEquals(GENERAL_ANNOTATION_NAMESPACE, metadata.getBooleanAnnotationNamespace(0)); assertEquals(IMAGE_ANNOTATION_ID, metadata.getBooleanAnnotationID(0)); } @Test(dependsOnMethods={"testValidImageNode"}) public void testValidPixelsNode() { Pixels pixels = ome.getImage(0).getPixels(); assertEquals(SIZE_X, pixels.getSizeX().getValue()); assertEquals(SIZE_Y, pixels.getSizeY().getValue()); assertEquals(SIZE_Z, pixels.getSizeZ().getValue()); assertEquals(SIZE_C, pixels.getSizeC().getValue()); assertEquals(SIZE_T, pixels.getSizeT().getValue()); assertEquals(DIMENSION_ORDER, pixels.getDimensionOrder()); assertEquals(PIXEL_TYPE, pixels.getType()); assertEquals(1, pixels.sizeOfTiffDataList()); } @Test(dependsOnMethods={"testValidImageMetadata"}) public void testValidPixelsMetadata() { assertEquals(SIZE_X, metadata.getPixelsSizeX(0).getValue()); assertEquals(SIZE_Y, metadata.getPixelsSizeY(0).getValue()); assertEquals(SIZE_Z, metadata.getPixelsSizeZ(0).getValue()); assertEquals(SIZE_C, metadata.getPixelsSizeC(0).getValue()); assertEquals(SIZE_T, metadata.getPixelsSizeT(0).getValue()); assertEquals(DIMENSION_ORDER, metadata.getPixelsDimensionOrder(0)); assertEquals(PIXEL_TYPE, metadata.getPixelsType(0)); } @Test(dependsOnMethods={"testValidPixelsNode"}) public void testValidTiffDataNode() { TiffData tiffData = ome.getImage(0).getPixels().getTiffData(0); UUID uuid = tiffData.getUUID(); assertEquals(TIFF_DATA_UUID, uuid.getValue()); } @Test(dependsOnMethods={"testValidPixelsMetadata"}) public void testValidTiffDataMetadata() { // TODO: Implement } @Test(dependsOnMethods={"testValidPixelsNode"}) public void testValidChannelNode() { Pixels pixels = ome.getImage(0).getPixels(); assertEquals(3, pixels.sizeOfChannelList()); for (Channel channel : pixels.copyChannelList()) { assertNotNull(channel.getID()); } } @Test(dependsOnMethods={"testValidPixelsMetadata"}) public void testValidChannelMetadata() { assertEquals(3, metadata.getChannelCount(0)); for (int i = 0; i < 3; i++) { assertNotNull(metadata.getChannelID(0, i)); } } @Test(dependsOnMethods={"testValidChannelNode"}) public void testValidChannelAnnotation() { Channel c = ome.getImage(0).getPixels().getChannel(0); Annotation n = c.getLinkedAnnotation(0); assertNotNull(n); assertTrue(n instanceof XMLAnnotation); assertEquals(CHANNEL_ANNOTATION_ID, n.getID()); assertEquals(n.getNamespace(), GENERAL_ANNOTATION_NAMESPACE); assertEquals(CHANNEL_ANNOTATION_VALUE, ((XMLAnnotation)n).getValue()); } @Test(dependsOnMethods={"testValidOMENode"}) public void testValidInstrumentNode() { Instrument instrument = ome.getInstrument(0); assertNotNull(instrument); assertEquals(INSTRUMENT_ID, instrument.getID()); } @Test(dependsOnMethods={"testValidMetadataRoot"}) public void testValidInstrumentMetadata() { assertEquals(1, metadata.getInstrumentCount()); assertEquals(INSTRUMENT_ID, metadata.getInstrumentID(0)); assertEquals(5, metadata.getLightSourceCount(0)); assertEquals(1, metadata.getDetectorCount(0)); assertEquals(2, metadata.getFilterCount(0)); } @Test(dependsOnMethods={"testValidInstrumentNode"}) public void testValidInstrumentAnnotation() { Annotation n = ome.getInstrument(0).getLinkedAnnotation(0); assertNotNull(n); assertEquals(INSTRUMENT_ANNOTATION_ID, n.getID()); assertEquals(n.getNamespace(), GENERAL_ANNOTATION_NAMESPACE); assertTrue(n instanceof CommentAnnotation); CommentAnnotation string = (CommentAnnotation) n; assertEquals(INSTRUMENT_ANNOTATION_VALUE, string.getValue()); } @Test(dependsOnMethods={"testValidInstrumentNode"}) public void testValidDetectorNode() { Detector detector = ome.getInstrument(0).getDetector(0); assertNotNull(detector); assertEquals(DETECTOR_ID, detector.getID()); assertEquals(DETECTOR_MODEL, detector.getModel()); } @Test(dependsOnMethods={"testValidDetectorNode"}) public void testValidDetectorMetadata() { assertEquals(1, metadata.getDetectorCount(0)); assertEquals(DETECTOR_ID, metadata.getDetectorID(0, 0)); assertEquals(DETECTOR_MODEL, metadata.getDetectorModel(0, 0)); } @Test(dependsOnMethods={"testValidDetectorNode"}) public void testValidDetectorAnnotation() { Annotation n = ome.getInstrument(0).getDetector(0).getLinkedAnnotation(0); assertNotNull(n); assertEquals(DETECTOR_ANNOTATION_ID, n.getID()); assertEquals(n.getNamespace(), GENERAL_ANNOTATION_NAMESPACE); assertTrue(n instanceof CommentAnnotation); CommentAnnotation string = (CommentAnnotation) n; assertEquals(DETECTOR_ANNOTATION_VALUE, string.getValue()); } @Test(dependsOnMethods={"testValidInstrumentNode"},enabled=false) public void testValidLaserNode() { Laser laser = (Laser) ome.getInstrument(0).getLightSource(0); assertNotNull(laser); assertEquals(LIGHTSOURCE_LASER_ID, laser.getID()); assertEquals(LIGHTSOURCE_LASER_MODEL, laser.getModel()); assertEquals(LIGHTSOURCE_LASER_POWER, laser.getPower().value(UNITS.MW).doubleValue()); assertEquals(LASER_TYPE, laser.getType()); } @Test(dependsOnMethods={"testValidLaserNode"},enabled=false) public void testValidLaserMetadata() { assertEquals(LIGHTSOURCE_LASER_ID, metadata.getLaserID(0, 0)); assertEquals(LIGHTSOURCE_LASER_MODEL, metadata.getLaserModel(0, 0)); assertEquals(LIGHTSOURCE_LASER_POWER, metadata.getLaserPower(0, 0).value(UNITS.MW).doubleValue()); assertEquals(LASER_TYPE, metadata.getLaserType(0, 0)); } @Test(dependsOnMethods={"testValidLaserMetadata"},enabled=false) public void testValidLaserAnnotation() { Annotation n = ome.getInstrument(0).getLightSource(0).getLinkedAnnotation(0); assertNotNull(n); assertEquals(LIGHTSOURCE_LASER_ANNOTATION_ID, n.getID()); assertEquals(n.getNamespace(), GENERAL_ANNOTATION_NAMESPACE); assertTrue(n instanceof CommentAnnotation); CommentAnnotation string = (CommentAnnotation) n; assertEquals(LIGHTSOURCE_LASER_ANNOTATION_VALUE, string.getValue()); } @Test(dependsOnMethods={"testValidLaserNode"},enabled=false) public void testValidPumpNode() { Laser laser = (Laser) ome.getInstrument(0).getLightSource(0); Laser laserPump = (Laser) ome.getInstrument(0).getLightSource(1); assertNotNull(laserPump); assertEquals(LIGHTSOURCE_PUMP_ID, laserPump.getID()); assertEquals(LIGHTSOURCE_PUMP_MODEL, laserPump.getModel()); assertEquals(LIGHTSOURCE_PUMP_POWER, laserPump.getPower().value(UNITS.MW).doubleValue()); assertEquals(LASER_TYPE, laserPump.getType()); assertEquals(laser.getLinkedPump(),laserPump); } @Test(dependsOnMethods={"testValidLaserMetadata"},enabled=false) public void testValidPumpMetadata() { assertEquals(LIGHTSOURCE_PUMP_ID, metadata.getLaserID(0, 1)); assertEquals(LIGHTSOURCE_PUMP_MODEL, metadata.getLaserModel(0, 1)); assertEquals(LIGHTSOURCE_PUMP_POWER, metadata.getLaserPower(0, 1).value(UNITS.MW).doubleValue()); assertEquals(LASER_TYPE, metadata.getLaserType(0, 1)); assertEquals(LIGHTSOURCE_PUMP_ID, metadata.getLaserPump(0, 0)); } // Create <Arc/> under <Instrument/> @Test(dependsOnMethods={"testValidInstrumentNode"},enabled=false) public void testValidArcNode() { Arc arc = (Arc) ome.getInstrument(0).getLightSource(2); assertNotNull(arc); assertEquals(LIGHTSOURCE_ARC_ID, arc.getID()); assertEquals(LIGHTSOURCE_ARC_MODEL, arc.getModel()); assertEquals(LIGHTSOURCE_ARC_POWER, arc.getPower().value(UNITS.MW).doubleValue()); assertEquals(ARC_TYPE, arc.getType()); } @Test(dependsOnMethods={"testValidArcNode"},enabled=false) public void testValidArcMetadata() { assertEquals(LIGHTSOURCE_ARC_ID, metadata.getArcID(0, 2)); assertEquals(LIGHTSOURCE_ARC_MODEL, metadata.getArcModel(0, 2)); assertEquals(LIGHTSOURCE_ARC_POWER, metadata.getArcPower(0, 2).value(UNITS.MW).doubleValue()); assertEquals(ARC_TYPE, metadata.getArcType(0, 2)); } @Test(dependsOnMethods={"testValidArcNode"},enabled=false) public void testValidArcAnnotation() { Annotation n = ome.getInstrument(0).getLightSource(2).getLinkedAnnotation(0); assertNotNull(n); assertEquals(LIGHTSOURCE_ARC_ANNOTATION_ID, n.getID()); assertEquals(n.getNamespace(), GENERAL_ANNOTATION_NAMESPACE); assertTrue(n instanceof CommentAnnotation); CommentAnnotation string = (CommentAnnotation) n; assertEquals(LIGHTSOURCE_ARC_ANNOTATION_VALUE, string.getValue()); } // Create <Filament/> under <Instrument/> @Test(dependsOnMethods={"testValidInstrumentNode"},enabled=false) public void testValidFilamentNode() { Filament filament = (Filament) ome.getInstrument(0).getLightSource(3); assertNotNull(filament); assertEquals(LIGHTSOURCE_FILAMENT_ID, filament.getID()); assertEquals(LIGHTSOURCE_FILAMENT_MODEL, filament.getModel()); assertEquals(LIGHTSOURCE_FILAMENT_POWER, filament.getPower().value(UNITS.MW).doubleValue()); assertEquals(FILAMENT_TYPE, filament.getType()); } // Create <Filament/> under <Instrument/> @Test(dependsOnMethods={"testValidFilamentNode"},enabled=false) public void testValidFilamentMetadata() { assertEquals(LIGHTSOURCE_FILAMENT_ID, metadata.getFilamentID(0, 3)); assertEquals(LIGHTSOURCE_FILAMENT_MODEL, metadata.getFilamentModel(0, 3)); assertEquals(LIGHTSOURCE_FILAMENT_POWER, metadata.getFilamentPower(0, 3).value(UNITS.MW).doubleValue()); assertEquals(FILAMENT_TYPE, metadata.getFilamentType(0, 3)); } @Test(dependsOnMethods={"testValidFilamentNode"},enabled=false) public void testValidFilamentAnnotation() { Annotation n = ome.getInstrument(0).getLightSource(3).getLinkedAnnotation(0); assertNotNull(n); assertEquals(LIGHTSOURCE_FILAMENT_ANNOTATION_ID, n.getID()); assertEquals(n.getNamespace(), GENERAL_ANNOTATION_NAMESPACE); assertTrue(n instanceof CommentAnnotation); CommentAnnotation string = (CommentAnnotation) n; assertEquals(LIGHTSOURCE_FILAMENT_ANNOTATION_VALUE, string.getValue()); } // Create <LightEmittingDiode/> under <Instrument/> @Test(dependsOnMethods={"testValidInstrumentNode"},enabled=false) public void testValidLightEmittingDiodeNode() { LightEmittingDiode led = (LightEmittingDiode) ome.getInstrument(0).getLightSource(4); assertNotNull(led); assertEquals(LIGHTSOURCE_LED_ID, led.getID()); assertEquals(LIGHTSOURCE_LED_MODEL, led.getModel()); assertEquals(LIGHTSOURCE_LED_POWER, led.getPower().value(UNITS.MW).doubleValue()); } @Test(dependsOnMethods={"testValidLightEmittingDiodeNode"},enabled=false) public void testValidLightEmittingDiodeAnnotation() { LightEmittingDiode led = (LightEmittingDiode) ome.getInstrument(0).getLightSource(4); Annotation n = led.getLinkedAnnotation(0); assertNotNull(n); assertEquals(LIGHTSOURCE_LED_ANNOTATION_ID, n.getID()); assertEquals(n.getNamespace(), GENERAL_ANNOTATION_NAMESPACE); assertTrue(n instanceof CommentAnnotation); CommentAnnotation string = (CommentAnnotation) n; assertEquals(LIGHTSOURCE_LED_ANNOTATION_VALUE, string.getValue()); } @Test(dependsOnMethods={"testValidInstrumentNode"}) public void testValidDichroicNode() { Dichroic dichroic = ome.getInstrument(0).getDichroic(0); assertNotNull(dichroic); assertEquals(DICHROIC_ID, dichroic.getID()); assertEquals(DICHROIC_SN, dichroic.getSerialNumber()); } @Test(dependsOnMethods={"testValidDichroicNode"}) public void testValidDichroicAnnotation() { Annotation n = ome.getInstrument(0).getDichroic(0).getLinkedAnnotation(0); assertNotNull(n); assertEquals(DICHROIC_ANNOTATION_ID, n.getID()); assertEquals(n.getNamespace(), GENERAL_ANNOTATION_NAMESPACE); assertTrue(n instanceof CommentAnnotation); CommentAnnotation string = (CommentAnnotation) n; assertEquals(DICHROIC_ANNOTATION_VALUE, string.getValue()); } @Test(dependsOnMethods={"testValidInstrumentNode"}) public void testValidObjectiveNode() { Objective objective = ome.getInstrument(0).getObjective(0); assertNotNull(objective); assertEquals(OBJECTIVE_ID, objective.getID()); assertEquals(OBJECTIVE_MODEL, objective.getModel()); } @Test(dependsOnMethods={"testValidObjectiveNode"}) public void testValidObjectiveAnnotation() { Annotation n = ome.getInstrument(0).getObjective(0).getLinkedAnnotation(0); assertNotNull(n); assertEquals(OBJECTIVE_ANNOTATION_ID, n.getID()); assertEquals(n.getNamespace(), GENERAL_ANNOTATION_NAMESPACE); assertTrue(n instanceof CommentAnnotation); CommentAnnotation string = (CommentAnnotation) n; assertEquals(OBJECTIVE_ANNOTATION_VALUE, string.getValue()); } @Test(dependsOnMethods={"testValidDichroicNode"}) public void testValidFilterSetNode() { Dichroic dichroic = ome.getInstrument(0).getDichroic(0); assertEquals(1, dichroic.sizeOfLinkedFilterSetList()); FilterSet filterSet = dichroic.getLinkedFilterSet(0); assertNotNull(filterSet); assertEquals(FILTERSET_ID, filterSet.getID()); assertEquals(FILTERSET_LOT, filterSet.getLotNumber()); assertEquals(filterSet.getLinkedDichroic().getID(), dichroic.getID()); } @Test(dependsOnMethods={"testValidFilterSetNode"}) public void testValidEmissionFilterNode() { Filter emFilter = ome.getInstrument(0).getFilter(0); assertNotNull(emFilter); assertEquals(EM_FILTER_ID, emFilter.getID()); assertEquals(EM_FILTER_TYPE, emFilter.getType()); FilterSet filterSet = ome.getInstrument(0).getDichroic(0).getLinkedFilterSet(0); assertEquals(EM_FILTER_ID, filterSet.getLinkedEmissionFilter(0).getID()); } @Test(dependsOnMethods={"testValidEmissionFilterNode"}) public void testValidEmissionFilterAnnotation() { Annotation n = ome.getInstrument(0).getFilter(0).getLinkedAnnotation(0); assertNotNull(n); assertEquals(EM_FILTER_ANNOTATION_ID, n.getID()); assertEquals(n.getNamespace(), GENERAL_ANNOTATION_NAMESPACE); assertTrue(n instanceof CommentAnnotation); CommentAnnotation string = (CommentAnnotation) n; assertEquals(EM_FILTER_ANNOTATION_VALUE, string.getValue()); } @Test(dependsOnMethods={"testValidFilterSetNode"}) public void testValidExcitationFilter() { Filter exFilter = ome.getInstrument(0).getFilter(1); assertNotNull(exFilter); assertEquals(EX_FILTER_ID, exFilter.getID()); assertEquals(EX_FILTER_TYPE, exFilter.getType()); FilterSet filterSet = ome.getInstrument(0).getDichroic(0).getLinkedFilterSet(0); assertEquals(EX_FILTER_ID, filterSet.getLinkedExcitationFilter(0).getID()); } @Test(dependsOnMethods={"testValidInstrumentNode", "testValidImageNode"}) public void testImageInstrumentLinkage() { Instrument instrument = ome.getInstrument(0); Image image = ome.getImage(0); Instrument linkedInstrument = image.getLinkedInstrument(); assertNotNull(linkedInstrument); assertEquals(instrument.getID(), linkedInstrument.getID()); assertEquals(1, instrument.sizeOfLinkedImageList()); Image linkedImage = instrument.getLinkedImage(0); assertNotNull(linkedImage); assertEquals(image.getID(), linkedImage.getID()); } @Test(dependsOnMethods={"testValidOMENode"}) public void testValidPlateNode() { Plate plate = ome.getPlate(0); assertNotNull(plate); assertEquals(PLATE_ID, plate.getID()); assertEquals(plate.getRows(), WELL_ROWS); assertEquals(plate.getColumns(), WELL_COLS); assertEquals(plate.getRowNamingConvention(), WELL_ROW); assertEquals(plate.getColumnNamingConvention(), WELL_COL); assertEquals(plate.sizeOfWellList(), WELL_ROWS.getValue() * WELL_COLS.getValue()); for (Integer row=0; row<WELL_ROWS.getValue(); row++) { for (Integer col=0; col<WELL_COLS.getValue(); col++) { Well well = plate.getWell(row * WELL_COLS.getValue() + col); assertNotNull(well); assertEquals(String.format("Well:%d_%d", row, col), well.getID()); assertEquals(well.getRow(), row); assertEquals(well.getColumn(), col); } } } @Test(dependsOnMethods={"testValidPlateNode"}) public void testValidPlateAnnotation() { Annotation n = ome.getPlate(0).getLinkedAnnotation(0); assertNotNull(n); assertEquals(PLATE_ANNOTATION_ID, n.getID()); assertEquals(n.getNamespace(), GENERAL_ANNOTATION_NAMESPACE); assertTrue(n instanceof TimestampAnnotation); TimestampAnnotation timestamp = (TimestampAnnotation) n; assertEquals(timestamp.getValue(), PLATE_ANNOTATION_VALUE); } @Test(dependsOnMethods={"testValidPlateNode"}) public void testValidWellSamples() { Plate plate = ome.getPlate(0); Integer wellSampleIndex = 0; for (int row=0; row<plate.getRows().getValue(); row++) { for (int col=0; col<plate.getColumns().getValue(); col++) { Well well = plate.getWell(row * plate.getColumns().getValue() + col); assertEquals(1, well.sizeOfWellSampleList()); WellSample sample = well.getWellSample(0); assertNotNull(sample); assertEquals(String.format("WellSample:%d_%d", row, col), sample.getID()); assertEquals(wellSampleIndex, sample.getIndex().getValue()); Image image = sample.getLinkedImage(); assertNotNull(image); assertEquals(IMAGE_ID, image.getID()); wellSampleIndex++; } } } @Test(dependsOnMethods={"testValidWellSamples"}) public void testValidWellAnnotation() { Annotation n = ome.getPlate(0).getWell(0).getLinkedAnnotation(0); assertNotNull(n); assertEquals(WELL_ANNOTATION_ID, n.getID()); assertEquals(n.getNamespace(), GENERAL_ANNOTATION_NAMESPACE); assertTrue(n instanceof LongAnnotation); LongAnnotation longAnnotation = (LongAnnotation) n; assertEquals(longAnnotation.getValue(), WELL_ANNOTATION_VALUE); } @Test(dependsOnMethods={"testValidOMENode"}) public void testValidROINode() { ROI roi = ome.getROI(0); assertNotNull(roi); assertEquals(ROI_ID, roi.getID()); Union shapeUnion = roi.getUnion(); assertNotNull(shapeUnion); assertEquals(1, shapeUnion.sizeOfShapeList()); Shape s = shapeUnion.getShape(0); assertNotNull(s); assertEquals(SHAPE_ID, s.getID()); assertTrue(s instanceof Rectangle); Rectangle rect = (Rectangle) s; assertEquals(RECTANGLE_X, rect.getX()); assertEquals(RECTANGLE_Y, rect.getY()); assertEquals(RECTANGLE_WIDTH, rect.getWidth()); assertEquals(RECTANGLE_HEIGHT, rect.getHeight()); } @Test(dependsOnMethods={"testValidROINode"}) public void testValidROIAnnotation() { Annotation n = ome.getROI(0).getLinkedAnnotation(0); assertNotNull(n); assertEquals(ROI_ANNOTATION_ID, n.getID()); assertEquals(n.getNamespace(), GENERAL_ANNOTATION_NAMESPACE); assertTrue(n instanceof CommentAnnotation); CommentAnnotation string = (CommentAnnotation) n; assertEquals(ROI_ANNOTATION_VALUE, string.getValue()); } private String asString() throws TransformerException, UnsupportedEncodingException { TransformerFactory transformerFactory = TransformerFactory.newInstance(); Transformer transformer = transformerFactory.newTransformer(); //Setup indenting to "pretty print" transformer.setOutputProperty(OutputKeys.INDENT, "yes"); transformer.setOutputProperty( "{http://xml.apache.org/xslt}indent-amount", "4"); Source source = new DOMSource(document); ByteArrayOutputStream os = new ByteArrayOutputStream(); Result result = new StreamResult(new OutputStreamWriter(os, "utf-8")); transformer.transform(source, result); return os.toString(); } @Test(groups={"disabled"}) public static void main(String[] args) throws Exception { InOutCurrentTest t = new InOutCurrentTest(); t.setUp("loci.formats.utests.ObjectBasedOMEModelMock"); System.out.println("###\n### XML\n###"); System.out.println(t.asString); t.testValidOMENode(); System.out.println("###\n### Model Objects\n###"); Map<String, OMEModelObject> objects = t.model.getModelObjects(); for (Entry<String, OMEModelObject> entry : objects.entrySet()) { System.out.println(String.format( "%s -- %s", entry.getKey(), entry.getValue().toString())); } System.out.println("###\n### References\n###"); Map<OMEModelObject, List<Reference>> references = t.model.getReferences(); for (Entry<OMEModelObject, List<Reference>> entry : references.entrySet()) { System.out.println(String.format( "%s -- %s", entry.getKey(), entry.getValue().toString())); } } }