package org.esa.beam.smos.ee2netcdf; import org.esa.beam.framework.datamodel.MetadataElement; import org.esa.beam.framework.datamodel.Product; import org.esa.beam.smos.ee2netcdf.variable.VariableDescriptor; import org.junit.Test; import java.io.File; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.TreeSet; import static org.junit.Assert.*; public class ExporterUtilsTest { @Test public void testCreateInputFileSet_emptyList() { final TreeSet<File> inputFileSet = ExporterUtils.createInputFileSet(new String[0]); assertNotNull(inputFileSet); assertEquals(0, inputFileSet.size()); } @Test public void testCreateInputFileSet_oneDir() { final String resourcePath = getResourcePath(); final TreeSet<File> inputFileSet = ExporterUtils.createInputFileSet(new String[]{resourcePath + File.separator + "*"}); assertNotNull(inputFileSet); assertEquals(4, inputFileSet.size()); final Iterator<File> iterator = inputFileSet.iterator(); assertEquals("SM_OPER_MIR_BWLF1C_20111026T143206_20111026T152520_503_001_1.zip", iterator.next().getName()); assertEquals("SM_OPER_MIR_OSUDP2_20091204T001853_20091204T011255_310_001_1.zip", iterator.next().getName()); assertEquals("SM_OPER_MIR_SMUDP2_20120514T163815_20120514T173133_551_001_1.zip", iterator.next().getName()); assertEquals("SM_REPB_MIR_SCLF1C_20110201T151254_20110201T151308_505_152_1.zip", iterator.next().getName()); } @Test public void testCreateInputFileSet_oneDir_wildcard() { final String resourcePath = getResourcePath(); final TreeSet<File> inputFileSet = ExporterUtils.createInputFileSet(new String[]{resourcePath + File.separator + "*BWL*"}); assertNotNull(inputFileSet); assertEquals(1, inputFileSet.size()); final Iterator<File> iterator = inputFileSet.iterator(); assertEquals("SM_OPER_MIR_BWLF1C_20111026T143206_20111026T152520_503_001_1.zip", iterator.next().getName()); } @Test public void testEnsureNoDuplicateDblFiles_noDuplicates() { final TreeSet<File> files = new TreeSet<>(); files.add(new File("SM_OPER_MIR_BWSD1C_20100201T134256_20100201T140057_324_002_1.zip")); files.add(new File("SM_OPER_MIR_OSUDP2_20120514T181819_20120514T191137_550_001_1.zip")); files.add(new File("SM_OPER_MIR_SCLF1C_20100119T002827_20100119T012226_323_001_1.zip")); final TreeSet<File> cleanedSet = ExporterUtils.ensureNoDuplicateDblFiles(files); assertEquals(3, cleanedSet.size()); } @Test public void testEnsureNoDuplicateDblFiles_duplicatesRemoved() { final TreeSet<File> files = new TreeSet<>(); files.add(new File("SM_OPER_MIR_BWSD1C_20100201T134256_20100201T140057_324_002_1.zip")); files.add(new File("SM_OPER_MIR_OSUDP2_20120514T181819_20120514T191137_550_001_1.hdr")); files.add(new File("SM_OPER_MIR_OSUDP2_20120514T181819_20120514T191137_550_001_1.dbl")); files.add(new File("SM_OPER_MIR_SCLF1C_20100119T002827_20100119T012226_323_001_1.zip")); final TreeSet<File> cleanedSet = ExporterUtils.ensureNoDuplicateDblFiles(files); assertEquals(3, cleanedSet.size()); } @Test public void testGetSpecificProductHeader_noVariableHeader() { final Product product = new Product("hic", "haec", 2, 2); assertNull(ExporterUtils.getSpecificProductHeader(product)); } @Test public void testGetSpecificProductHeader_noSpecificHeader() { final Product product = new Product("helge", "schneider", 2, 2); final MetadataElement metadataRoot = product.getMetadataRoot(); metadataRoot.addElement(new MetadataElement("Variable_Header")); assertNull(ExporterUtils.getSpecificProductHeader(product)); } @Test public void testGetSpecificProductHeader() { final Product product = new Product("nasen", "mann", 2, 2); final MetadataElement metadataRoot = product.getMetadataRoot(); final MetadataElement variable_header = new MetadataElement("Variable_Header"); final MetadataElement sph = new MetadataElement("Specific_Product_Header"); variable_header.addElement(sph); metadataRoot.addElement(variable_header); final MetadataElement specificProductHeader = ExporterUtils.getSpecificProductHeader(product); assertSame(sph, specificProductHeader); } @Test public void testCorrectScaleFactor_variableNotPresent() { Map<String, VariableDescriptor> variableDescriptors = new HashMap<>(); variableDescriptors.put("_its_here", new VariableDescriptor()); ExporterUtils.correctScaleFactor(variableDescriptors, "the_missing", 2.8); } @Test public void testCorrectScaleFactor() { Map<String, VariableDescriptor> variableDescriptors = new HashMap<>(); variableDescriptors.put("the_one", new VariableDescriptor()); final VariableDescriptor corrected = new VariableDescriptor(); corrected.setScaleFactor(2.8); variableDescriptors.put("corrected", corrected); ExporterUtils.correctScaleFactor(variableDescriptors, "corrected", 2); assertEquals(5.6, corrected.getScaleFactor(), 1e-8); } private String getResourcePath() { File testDir = new File("./smos-ee2netcdf/src/test/resources/org/esa/beam/smos/ee2netcdf/"); if (!testDir.exists()) { testDir = new File("./src/test/resources/org/esa/beam/smos/ee2netcdf/"); } return testDir.getPath(); } }