package com.meteogroup.grib2geotiff.grib;
import org.junit.Test;
import ucar.grib.grib2.Grib2Record;
import ucar.unidata.io.RandomAccessFile;
import java.io.File;
import java.util.List;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;
/**
* Created by danielt on 14.09.15.
*/
public class GribFileAccessTest {
private static final String IN = "src/main/resources/GoldenTestData/";
private static final String FILE_2p5_f000 = "gfs.t18z.pgrb2.2p50.f000";
private static final String FILE_1p0_f003 = "gfs.t18z.pgrb2.1p00.f003";
private static final String FILE_2p5_f006 = "gfs.t18z.pgrb2.2p50.f006";
/**
* @throws Exception
*/
@Test
public void gribfiles_are_detected_properly() throws Exception {
//given
GribFileAccess grib = new GribFileAccess();
grib.setInputDirectory(new File(IN));
//when
List<RandomAccessFile> validGribFiles = grib.getRafFiles();
//then
assertEquals(3, validGribFiles.size());
}
/**
* @throws Exception
*/
@Test
public void record_count_is_correct() throws Exception {
//given
GribFileAccess grib = new GribFileAccess();
grib.setInputDirectory(new File(IN));
//when
List<RandomAccessFile> validGribFiles = grib.getRafFiles();
//then
for (RandomAccessFile gribFile : validGribFiles) {
List<Grib2Record> records = grib.getRecords(gribFile);
if (gribFile.getLocation().endsWith(FILE_2p5_f000)) {
assertEquals(321, records.size());
} else if (gribFile.getLocation().endsWith(FILE_1p0_f003)) {
assertEquals(365, records.size());
} else if (gribFile.getLocation().endsWith(FILE_2p5_f006)) {
assertEquals(365, records.size());
} else {
fail("test file not registered: " + gribFile.getLocation());
}
}
}
}