// // NetCDFServiceTest.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 java.io.File; import java.io.IOException; import java.net.URL; import java.util.Arrays; import java.util.Hashtable; import java.util.Vector; import loci.common.services.DependencyException; import loci.common.services.ServiceFactory; import loci.formats.services.NetCDFService; import org.testng.annotations.BeforeMethod; 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/NetCDFServiceTest.java">Trac</a>, * <a href="http://git.openmicroscopy.org/?p=bioformats.git;a=blob;f=components/bio-formats/test/loci/formats/utests/NetCDFServiceTest.java;hb=HEAD">Gitweb</a></dd></dl> * * @author Chris Allan <callan at blackcat dot ca> */ public class NetCDFServiceTest { // The test file is 'C1979091.h5' from: // http://www.hdfgroup.org/training/other-ex5/sample-programs/convert/Conversion.html private static final String TEST_FILE = "test.h5"; private static final String[][] ATTRIBUTES = new String[][] { {"/Product_Name_GLOSDS", "C19790911979120.L3_BRS_MO"}, {"/Title_GLOSDS", "CZCS Level-3 Browse Data"}, {"/Data_Center_GLOSDS", "NASA/GSFC DAAC"}, {"/Mission_GLOSDS", "Nimbus CZCS"}, {"/Mission_Characteristics_GLOSDS", "Nominal orbit: inclination = 99.3 (Sun-synchronous); node = 11:52 " + "a.m. local (ascending); eccentricity = <0.0009; altitude = 955 km; " + "ground speed = 6.4km/sec"}, {"/Sensor_GLOSDS", "Coastal Zone Color Scanner (CZCS)"}, {"/Sensor_Characteristics_GLOSDS", "Number of bands = 6; number of active bands = 6; wavelengths per " + "band (nm)= 443, 520, 550, 670, 750, 11500; bits per pixel = 8; " + "instantaneous field-of-view = .865 mrad; pixels per scan = 492; " + "scan rate = 8.08/sec; sample rate =3975/sec"}, {"/Replacement_Flag_GLOSDS", "ORIGINAL"}, {"/Software_ID_GLOSDS", "L3bin2hdf.c_v.1"}, {"/Processing_Time_GLOSDS", "1995200120000000"}, {"/Input_Files_GLOSDS", "c79120.Chlor.bin.mean"}, {"/Processing_Control_GLOSDS", "L3bin2hdf L3.info L3.input"}, {"/Processing_Log_GLOSDS", "L3bin2hdf_history"}, {"/Parent_Input_Files_GLOSDS", "c79120.Chlor.bin.mean"}, {"/Product_Type_GLOSDS", "month"}, {"/Station_Name_GLOSDS", "Wallops Flight Facility"}, {"/Station_Latitude_GLOSDS", "37.9272"}, {"/Station_Longitude_GLOSDS", "-75.4753"}, {"/Data_Type_GLOSDS", "GAC"}, {"/Parent_Number_of_Lines_GLOSDS", "1024"}, {"/Parent_Number_of_Columns_GLOSDS", "2048"}, {"/Period_Start_Year_GLOSDS", "1979"}, {"/Period_Start_Day_GLOSDS", "91"}, {"/Period_End_Year_GLOSDS", "1979"}, {"/Period_End_Day_GLOSDS", "120"}, {"/Start_Time_GLOSDS", "1979091000000000"}, {"/End_Time_GLOSDS", "1979120235959999"}, {"/Start_Year_GLOSDS", "1979"}, {"/Start_Day_GLOSDS", "91"}, {"/Start_Millisec_GLOSDS", "0"}, {"/End_Year_GLOSDS", "1979"}, {"/End_Day_GLOSDS", "120"}, {"/End_Millisec_GLOSDS", "86400000"}, {"/Map_Projection_GLOSDS", "Equidistant Cylindrical"}, {"/Latitude_Units_GLOSDS", "degrees North"}, {"/Longitude_Units_GLOSDS", "degrees East"}, {"/Northernmost_Latitude_GLOSDS", "90.0"}, {"/Southernmost_Latitude_GLOSDS", "-90.0"}, {"/Westernmost_Longitude_GLOSDS", "-180.0"}, {"/Easternmost_Longitude_GLOSDS", "180.0"}, {"/Parameter_GLOSDS", "Chlorophyll a concentration"}, {"/Measure_GLOSDS", "Mean"}, {"/Units_GLOSDS", "mg m^-3"}, {"/Start_Column_GLOSDS", "1"}, {"/Column_Subsampling_Rate_GLOSDS", "6"}, {"/Number_of_Columns_GLOSDS", "360"}, {"/Start_Line_GLOSDS", "1"}, {"/Line_Subsampling_Rate_GLOSDS", "6"}, {"/Number_of_Lines_GLOSDS", "180"}, {"/Scaling_GLOSDS", "logarithmic"}, {"/Scaling_Equation_GLOSDS", "Base**((Slope*brs_data) + Intercept) = chlorophyll a"}, {"/Base_GLOSDS", "10.0"}, {"/Slope_GLOSDS", "0.012"}, {"/Intercept_GLOSDS", "-1.4"}, {"/HDF4_FILE_LABEL_0", "CZCS Level 3 GAC Browse Data for April, 1979"} }; private static final String[][][] VARS = new String[][][] { { {"CLASS", "PALETTE"}, {"HDF4_OBJECT_TYPE", "palette"}, {"HDF4_REF_NUM", "2"}, {"PAL_COLORMODEL", "RGB"}, {"PAL_TYPE", "STANDARD8"}, {"PAL_VERSION", "1.2"}, {"_lastModified", "2003-07-09T18:33:39Z"}, {"_unsigned", "true"}, }, { {"CLASS", "IMAGE"}, {"HDF4_IMAGE_LABEL_0", "brs_data"}, {"HDF4_OBJECT_NAME", "Raster Image #0"}, {"HDF4_OBJECT_TYPE", "raster8"}, {"HDF4_PALETTE_LIST", "/HDF4_PALGROUP/HDF4_PALETTE_2"}, {"HDF4_REF_NUM", "2"}, {"IMAGE_SUBCLASS", "IMAGE_INDEXED"}, {"IMAGE_VERSION", "1.2"}, {"PALETTE", "1680"}, {"_lastModified", "2003-07-09T18:33:39Z"}, {"_unsigned", "true"}, } }; private NetCDFService service; @BeforeMethod public void setUp() throws DependencyException, IOException { ServiceFactory sf = new ServiceFactory(); service = sf.getInstance(NetCDFService.class); URL file = NetCDFServiceTest.class.getResource(TEST_FILE); service.setFile(file.getPath()); } @Test public void testGetFile() { assertEquals(TEST_FILE, new File(service.getFile()).getName()); } @Test public void testAttributes() { Vector<String> attributes = service.getAttributeList(); assertEquals(attributes.size(), ATTRIBUTES.length); for (int i=0; i<attributes.size(); i++) { String attribute = attributes.get(i); assertEquals(attribute, ATTRIBUTES[i][0]); assertEquals(service.getAttributeValue(attribute), ATTRIBUTES[i][1]); } } @Test public void testVariables() { Vector<String> variables = service.getVariableList(); assertEquals(variables.size(), 2); assertEquals(variables.get(0), "/Raster_Image_0"); assertEquals(variables.get(1), "/HDF4_PALGROUP/HDF4_PALETTE_2"); Hashtable<String, Object> var1 = service.getVariableAttributes("/HDF4_PALGROUP/HDF4_PALETTE_2"); Hashtable<String, Object> var2 = service.getVariableAttributes("/Raster_Image_0"); assertEquals(var1.size(), VARS[0].length); assertEquals(var2.size(), VARS[1].length); String[] keys = var1.keySet().toArray(new String[var1.size()]); Arrays.sort(keys); for (int i=0; i<keys.length; i++) { assertEquals(keys[i], VARS[0][i][0]); assertEquals(var1.get(keys[i]), VARS[0][i][1]); } keys = var2.keySet().toArray(new String[var2.size()]); Arrays.sort(keys); for (int i=0; i<keys.length; i++) { assertEquals(keys[i], VARS[1][i][0]); assertEquals(var2.get(keys[i]), VARS[1][i][1]); } } }