// // ScreenDetectionTest.java // /* OME Bio-Formats package for reading and converting biological file formats. Copyright (C) 2005-@year@ UW-Madison LOCI and Glencoe Software, Inc. 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, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ package loci.formats.utests; import static org.testng.AssertJUnit.assertEquals; import static org.testng.AssertJUnit.assertTrue; import java.io.File; import java.io.IOException; import loci.common.Location; import loci.common.services.DependencyException; import loci.common.services.ServiceException; import loci.common.services.ServiceFactory; import loci.formats.ClassList; import loci.formats.FormatException; import loci.formats.IFormatReader; import loci.formats.ImageReader; import loci.formats.in.ScreenReader; import loci.formats.ome.OMEXMLMetadata; import loci.formats.services.OMEXMLService; import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; /** * <dl><dt><b>Source code:</b></dt> * <dd><a href="http://trac.openmicroscopy.org.uk/ome/browser/bioformats.git/components/bio-formats/test/loci/formats/utests/ScreenDetectionTest.java">Trac</a>, * <a href="http://git.openmicroscopy.org/?p=bioformats.git;a=blob;f=components/bio-formats/test/loci/formats/utests/ScreenDetectionTest.java;hb=HEAD">Gitweb</a></dd></dl> * * @author Melissa Linkert melissa at glencoesoftware.com */ public class ScreenDetectionTest { private static String[][] SCREENS = new String[][] { { "screen1/plate/well_a1", "screen1/plate/well_a2", "screen1/plate/well_c6", "screen1/plate/well_f10", }, { "screen2/plate1/b05", "screen2/plate1/e10", "screen2/plate1/p14", "screen2/plate2/f09", "screen2/plate2/g03" }, { "screen3/plate1/test_A1_0", "screen3/plate1/test_A2_1", "screen3/plate1/test_A3_2", "screen3/plate1/test_A4_3", } }; private static final int[] PLATE_COUNTS = new int[] {1, 1, 1}; private static final int[] SERIES_COUNTS = new int[] {4, 3, 4}; private ImageReader[] readers; private OMEXMLMetadata[] omexml; @BeforeClass public void setUp() throws DependencyException, FormatException, IOException, ServiceException { readers = new ImageReader[SCREENS.length]; omexml = new OMEXMLMetadata[SCREENS.length]; ServiceFactory factory = new ServiceFactory(); OMEXMLService service = factory.getInstance(OMEXMLService.class); ClassList<IFormatReader> readerClasses = ImageReader.getDefaultReaderClasses(); Class<IFormatReader>[] c = (Class<IFormatReader>[]) readerClasses.getClasses(); ClassList<IFormatReader> validReaderClasses = new ClassList<IFormatReader>(IFormatReader.class); validReaderClasses.addClass(ScreenReader.class); for (Class<IFormatReader> readerClass : c) { validReaderClasses.addClass(readerClass); } for (int i=0; i<SCREENS.length; i++) { setupScreen(SCREENS[i]); readers[i] = new ImageReader(validReaderClasses); omexml[i] = service.createOMEXMLMetadata(); readers[i].setMetadataStore(omexml[i]); readers[i].setId(SCREENS[i][0]); } } @Test public void testTypeDetection() throws FormatException, IOException { for (ImageReader reader : readers) { assertTrue(reader.getReader() instanceof ScreenReader); } } @Test public void testSeriesCounts() throws FormatException, IOException { for (int i=0; i<SCREENS.length; i++) { assertEquals(readers[i].getSeriesCount(), SERIES_COUNTS[i]); } } @Test public void testPlateCounts() { for (int i=0; i<SCREENS.length; i++) { int plateCount = omexml[i].getPlateCount(); assertEquals(plateCount, PLATE_COUNTS[i]); } } // -- Helper methods -- private void setupScreen(String[] screen) throws IOException { for (int i=0; i<screen.length; i++) { int lastSeparator = screen[i].lastIndexOf(File.separator); String dirPath = screen[i].substring(0, lastSeparator); String filename = screen[i].substring(lastSeparator + 1); String[] dirs = dirPath.split(File.separator); File dir = new File(System.getProperty("java.io.tmpdir")); for (String dirName : dirs) { dir = new File(dir, dirName); dir.mkdir(); dir.deleteOnExit(); } File file = new File(dir, filename + ".fake"); file.createNewFile(); screen[i] = file.getAbsolutePath(); file.deleteOnExit(); } } }