/* * #%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.in; import static org.testng.AssertJUnit.assertEquals; import java.io.IOException; import javax.xml.parsers.ParserConfigurationException; import loci.common.xml.XMLTools; import loci.formats.in.PrairieMetadata; import loci.formats.in.PrairieMetadata.Value; import loci.formats.in.PrairieMetadata.ValueTable; import org.testng.annotations.Test; import org.w3c.dom.Document; import org.xml.sax.SAXException; /** * Unit tests for {@link PrairieMetadata}. * * @author Curtis Rueden */ public class PrairieMetadataTest { private static final String OLD_XML = "<?xml version=\"1.0\" encoding=\"utf-8\"?>" + "<PVScan version=\"4.0.0.53\" date=\"3/23/2012 9:47:15 AM\" notes=\"\">" + " <Sequence type=\"TSeries ZSeries Element\" cycle=\"1\" >" + " <Frame relativeTime=\"0\" absoluteTime=\"2.06929400000001\" index=\"1\" label=\"CurrentSettings\">" + " <File channel=\"1\" channelName=\"Ch1\" preAmpID=\"0\" filename=\"TSeries-03232012-0934-006_Cycle001_CurrentSettings_Ch1_000001.tif\" />" + " <File channel=\"2\" channelName=\"Ch2\" preAmpID=\"1\" filename=\"TSeries-03232012-0934-006_Cycle001_CurrentSettings_Ch2_000001.tif\" />" + " <ExtraParameters validData=\"True\" />" + " <PVStateShard>" + " <Key key=\"linesPerFrame\" permissions=\"Read, Write, Save\" value=\"186\" />" + " <Key key=\"pmtGain_0\" permissions=\"Write, Save\" value=\"605\" />" + " <Key key=\"pmtGain_1\" permissions=\"Write, Save\" value=\"604\" />" + " <Key key=\"pmtGain_2\" permissions=\"Write, Save\" value=\"0\" />" + " <Key key=\"positionCurrent_XAxis\" permissions=\"Write, Save\" value=\"0.95\" />" + " <Key key=\"positionCurrent_YAxis\" permissions=\"Write, Save\" value=\"-4.45\" />" + " <Key key=\"positionCurrent_ZAxis\" permissions=\"Write, Save\" value=\"-9,62.45\" />" + " </PVStateShard>" + " </Frame>" + " </Sequence>" + "</PVScan>"; private static final String NEW_XML = "<?xml version=\"1.0\" encoding=\"utf-8\"?>" + "<PVScan version=\"5.2.64.400\" date=\"9/23/2014 3:03:37 PM\" notes=\"\">" + " <PVStateShard>" + " <PVStateValue key=\"linesPerFrame\" value=\"186\" />" + " <PVStateValue key=\"pmtGain\">" + " <IndexedValue index=\"0\" value=\"605\" description=\"Ch1 High Voltage\" />" + " <IndexedValue index=\"1\" value=\"604\" description=\"Ch2 High Voltage\" />" + " <IndexedValue index=\"2\" value=\"0\" description=\"Ch3 High Voltage\" />" + " </PVStateValue>" + " <PVStateValue key=\"positionCurrent\">" + " <SubindexedValues index=\"XAxis\">" + " <SubindexedValue subindex=\"0\" value=\"0.95\" />" + " </SubindexedValues>" + " <SubindexedValues index=\"YAxis\">" + " <SubindexedValue subindex=\"0\" value=\"-4.45\" />" + " </SubindexedValues>" + " <SubindexedValues index=\"ZAxis\">" + " <SubindexedValue subindex=\"0\" value=\"-9\" description=\"Focus\" />" + " <SubindexedValue subindex=\"1\" value=\"62.45\" description=\"Piezo\" />" + " </SubindexedValues>" + " </PVStateValue>" + " </PVStateShard>" + " <Sequence type=\"TSeries Timed Element\" cycle=\"1\" time=\"15:03:38.0036337\">" + " <PVStateShard>" + " <PVStateValue key=\"positionCurrent\">" + " <SubindexedValues index=\"XAxis\">" + " <SubindexedValue subindex=\"0\" value=\"-621.412879412341\" />" + " </SubindexedValues>" + " <SubindexedValues index=\"YAxis\">" + " <SubindexedValue subindex=\"0\" value=\"255.652372573538\" />" + " </SubindexedValues>" + " <SubindexedValues index=\"ZAxis\">" + " <SubindexedValue subindex=\"0\" value=\"28.15\" description=\"Z\" />" + " <SubindexedValue subindex=\"1\" value=\"111.23\" description=\"ZPiezo\" />" + " </SubindexedValues>" + " </PVStateValue>" + " </PVStateShard>" + " <Frame relativeTime=\"0\" absoluteTime=\"1.2349999999999\" index=\"1\" parameterSet=\"CurrentSettings\">" + " <File channel=\"1\" channelName=\"Ch1 Red\" filename=\"TSeries-09232014-1445-011_Cycle00001_Ch1_000001.ome.tif\" />" + " <ExtraParameters lastGoodFrame=\"0\" />" + " <PVStateShard />" + " </Frame>" + " </Sequence>" + "</PVScan>"; @Test public void testParseOldXML() throws ParserConfigurationException, SAXException, IOException { final Document xml = XMLTools.parseDOM(OLD_XML); final PrairieMetadata meta = new PrairieMetadata(xml, null, null); final Value positionCurrent = meta.getSequence(1).getFrame(1).getValue("positionCurrent"); final Value xAxis = positionCurrent.get("XAxis"); assertEquals("0.95", xAxis.value()); final Value yAxis = positionCurrent.get("YAxis"); assertEquals("-4.45", yAxis.value()); final ValueTable zAxis = (ValueTable) positionCurrent.get("ZAxis"); assertEquals("-9", zAxis.get(0).value()); assertEquals("62.45", zAxis.get(1).value()); } @Test public void testParseNewXML() throws ParserConfigurationException, SAXException, IOException { final Document xml = XMLTools.parseDOM(NEW_XML); final PrairieMetadata meta = new PrairieMetadata(xml, null, null); final ValueTable positionCurrent = (ValueTable) meta.getSequence(1).getFrame(1).getValue("positionCurrent"); final ValueTable xAxis = (ValueTable) positionCurrent.get("XAxis"); assertEquals("-621.412879412341", xAxis.value()); final ValueTable yAxis = (ValueTable) positionCurrent.get("YAxis"); assertEquals("255.652372573538", yAxis.value()); final ValueTable zAxis = (ValueTable) positionCurrent.get("ZAxis"); assertEquals("28.15", zAxis.get(0).value()); assertEquals("111.23", zAxis.get(1).value()); } }