/* * #%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 static org.testng.AssertJUnit.assertEquals; import static org.testng.AssertJUnit.assertNull; import static org.testng.AssertJUnit.fail; import java.io.IOException; import java.security.MessageDigest; import loci.common.DataTools; import loci.formats.FormatException; import loci.formats.in.DeltavisionReader; import loci.formats.in.MetadataLevel; import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; /** * * @author Chris Allan <callan at blackcat dot ca> */ public class DeltavisionMetadataConfigurableTest { private static final String ID = "/Users/callan/testimages/tinyTest.d3d.dv"; private static final String ALL_ONLY_KEY = "Image Type"; private static final String ALL_ONLY_VALUE = "normal"; private DeltavisionReader pixelsOnly; private DeltavisionReader all; @BeforeClass public void setUp() { pixelsOnly = new DeltavisionReader(); pixelsOnly.getMetadataOptions().setMetadataLevel(MetadataLevel.MINIMUM); all = new DeltavisionReader(); all.getMetadataOptions().setMetadataLevel(MetadataLevel.ALL); } @Test public void testSetId() throws FormatException, IOException { long t0 = System.currentTimeMillis(); pixelsOnly.setId(ID); assertEquals(MetadataLevel.MINIMUM, pixelsOnly.getMetadataOptions().getMetadataLevel()); assertNull(pixelsOnly.getSeriesMetadata().get(ALL_ONLY_KEY)); long t1 = System.currentTimeMillis(); all.setId(ID); assertEquals(MetadataLevel.ALL, all.getMetadataOptions().getMetadataLevel()); assertEquals(ALL_ONLY_VALUE, all.getGlobalMetadata().get(ALL_ONLY_KEY)); long t2 = System.currentTimeMillis(); System.err.println(String.format("Pixels only: %d -- All: %d", t1 - t0, t2 - t1)); } @Test(dependsOnMethods={"testSetId"}) public void testDimensions() { assertEquals(all.getSeriesCount(), pixelsOnly.getSeriesCount()); assertEquals(all.getSizeX(), pixelsOnly.getSizeX()); assertEquals(all.getSizeY(), pixelsOnly.getSizeY()); assertEquals(all.getSizeZ(), pixelsOnly.getSizeZ()); assertEquals(all.getSizeC(), pixelsOnly.getSizeC()); assertEquals(all.getSizeT(), pixelsOnly.getSizeT()); assertEquals(all.getPixelType(), pixelsOnly.getPixelType()); } @Test(dependsOnMethods={"testSetId"}) public void testPlaneData() throws FormatException, IOException { for (int i = 0; i < pixelsOnly.getSeriesCount(); i++) { pixelsOnly.setSeries(i); all.setSeries(i); assertEquals(all.getImageCount(), pixelsOnly.getImageCount()); for (int j = 0; j < pixelsOnly.getImageCount(); j++) { byte[] pixelsOnlyPlane = pixelsOnly.openBytes(j); String sha1PixelsOnlyPlane = sha1(pixelsOnlyPlane); byte[] allPlane = all.openBytes(j); String sha1AllPlane = sha1(allPlane); if (!sha1PixelsOnlyPlane.equals(sha1AllPlane)) { fail(String.format( "MISMATCH: Series:%d Image:%d PixelsOnly:%s All:%s", i, j, sha1PixelsOnlyPlane, sha1AllPlane)); } } } } private String sha1(byte[] buf) { try { MessageDigest md = MessageDigest.getInstance("SHA-1"); return DataTools.bytesToHex(md.digest(buf)); } catch (Exception e) { throw new RuntimeException(e); } } }