|
| 1 | +package com.bc.fiduceo.reader.insitu.sic_cci; |
| 2 | + |
| 3 | +import org.junit.Before; |
| 4 | +import org.junit.Test; |
| 5 | +import ucar.ma2.Array; |
| 6 | +import ucar.ma2.DataType; |
| 7 | +import ucar.nc2.Variable; |
| 8 | + |
| 9 | +import java.text.ParseException; |
| 10 | +import java.util.List; |
| 11 | + |
| 12 | +import static org.junit.Assert.assertEquals; |
| 13 | + |
| 14 | +public class AMSR2SectionParserTest { |
| 15 | + |
| 16 | + private AMSR2SectionParser parser; |
| 17 | + |
| 18 | + @Before |
| 19 | + public void setUp() { |
| 20 | + parser = new AMSR2SectionParser(); |
| 21 | + } |
| 22 | + |
| 23 | + @Test |
| 24 | + public void testGetVariables() { |
| 25 | + final List<Variable> variables = parser.getVariables(); |
| 26 | + assertEquals(23, variables.size()); |
| 27 | + assertEquals(variables.size(), parser.getNumVariables()); |
| 28 | + |
| 29 | + Variable variable = variables.get(0); |
| 30 | + assertEquals("AMSR2_longitude", variable.getShortName()); |
| 31 | + assertEquals(DataType.FLOAT, variable.getDataType()); |
| 32 | + |
| 33 | + variable = variables.get(2); |
| 34 | + assertEquals("AMSR2_time", variable.getShortName()); |
| 35 | + assertEquals(DataType.INT, variable.getDataType()); |
| 36 | + |
| 37 | + variable = variables.get(4); |
| 38 | + assertEquals("AMSR2_6.9GHzH", variable.getShortName()); |
| 39 | + assertEquals(DataType.FLOAT, variable.getDataType()); |
| 40 | + |
| 41 | + variable = variables.get(7); |
| 42 | + assertEquals("AMSR2_7.3GHzV", variable.getShortName()); |
| 43 | + assertEquals(DataType.FLOAT, variable.getDataType()); |
| 44 | + |
| 45 | + variable = variables.get(8); |
| 46 | + assertEquals("AMSR2_10.7GHzH", variable.getShortName()); |
| 47 | + assertEquals(DataType.FLOAT, variable.getDataType()); |
| 48 | + |
| 49 | + variable = variables.get(11); |
| 50 | + assertEquals("AMSR2_18.7GHzV", variable.getShortName()); |
| 51 | + assertEquals(DataType.FLOAT, variable.getDataType()); |
| 52 | + |
| 53 | + variable = variables.get(12); |
| 54 | + assertEquals("AMSR2_23.8GHzH", variable.getShortName()); |
| 55 | + assertEquals(DataType.FLOAT, variable.getDataType()); |
| 56 | + |
| 57 | + variable = variables.get(15); |
| 58 | + assertEquals("AMSR2_36.5GHzV", variable.getShortName()); |
| 59 | + assertEquals(DataType.FLOAT, variable.getDataType()); |
| 60 | + |
| 61 | + variable = variables.get(17); |
| 62 | + assertEquals("AMSR2_89.0GHzV", variable.getShortName()); |
| 63 | + assertEquals(DataType.FLOAT, variable.getDataType()); |
| 64 | + |
| 65 | + variable = variables.get(18); |
| 66 | + assertEquals("AMSR2_Earth-Incidence", variable.getShortName()); |
| 67 | + assertEquals(DataType.FLOAT, variable.getDataType()); |
| 68 | + |
| 69 | + variable = variables.get(19); |
| 70 | + assertEquals("AMSR2_Earth-Azimuth", variable.getShortName()); |
| 71 | + assertEquals(DataType.FLOAT, variable.getDataType()); |
| 72 | + |
| 73 | + variable = variables.get(20); |
| 74 | + assertEquals("AMSR2_scanpos", variable.getShortName()); |
| 75 | + assertEquals(DataType.SHORT, variable.getDataType()); |
| 76 | + |
| 77 | + variable = variables.get(21); |
| 78 | + assertEquals("AMSR2_upstreamfile", variable.getShortName()); |
| 79 | + assertEquals(DataType.CHAR, variable.getDataType()); |
| 80 | + |
| 81 | + variable = variables.get(22); |
| 82 | + assertEquals("AMSR2_timediff", variable.getShortName()); |
| 83 | + assertEquals(DataType.SHORT, variable.getDataType()); |
| 84 | + } |
| 85 | + |
| 86 | + @Test |
| 87 | + public void testGetNamePrefix() { |
| 88 | + assertEquals("AMSR2", parser.getNamePrefix()); |
| 89 | + } |
| 90 | + |
| 91 | + @Test |
| 92 | + public void testParse() throws ParseException { |
| 93 | + // the first and the last token do not belong to the AMSR data - just for offset testing here tb 2022-11-11 |
| 94 | + final String[] tokens = {"0.0000", |
| 95 | + "+54.974", "+179.959", "2016-01-02T01:00:00Z", "AMSR2_L1R_JAXA", "79.79", "160.12", "80.68", "160.68", "86.50", |
| 96 | + "168.86", "106.16", "186.98", "130.80", "200.80", "144.96", "212.90", "197.88", "244.46", "55.26", "-173.87", |
| 97 | + "093", "GW1AM2_201601020019_177A_L1SGRTBR_2210210.h5", "0", |
| 98 | + "+55.000,"}; |
| 99 | + |
| 100 | + final Section section = parser.parse(tokens, 1); |
| 101 | + |
| 102 | + assertEquals(54.974f, section.get("AMSR2_latitude").getFloat(0), 1e-8); |
| 103 | + assertEquals(179.959f, section.get("AMSR2_longitude").getFloat(0), 1e-8); |
| 104 | + assertEquals(1451696400, section.get("AMSR2_time").getInt(0)); |
| 105 | + |
| 106 | + final Array refId = section.get("AMSR2_reference-id"); |
| 107 | + char[] valueAsArray = (char[]) refId.get1DJavaArray(DataType.CHAR); |
| 108 | + assertEquals("AMSR2_L1R_JAXA", new String(valueAsArray)); |
| 109 | + |
| 110 | + assertEquals(79.79f, section.get("AMSR2_6.9GHzH").getFloat(0), 1e-8); |
| 111 | + assertEquals(160.12f, section.get("AMSR2_6.9GHzV").getFloat(0), 1e-8); |
| 112 | + assertEquals(80.68f, section.get("AMSR2_7.3GHzH").getFloat(0), 1e-8); |
| 113 | + assertEquals(160.68f, section.get("AMSR2_7.3GHzV").getFloat(0), 1e-8); |
| 114 | + assertEquals(86.50f, section.get("AMSR2_10.7GHzH").getFloat(0), 1e-8); |
| 115 | + assertEquals(168.86f, section.get("AMSR2_10.7GHzV").getFloat(0), 1e-8); |
| 116 | + assertEquals(106.16f, section.get("AMSR2_18.7GHzH").getFloat(0), 1e-8); |
| 117 | + assertEquals(186.98f, section.get("AMSR2_18.7GHzV").getFloat(0), 1e-8); |
| 118 | + assertEquals(130.8f, section.get("AMSR2_23.8GHzH").getFloat(0), 1e-8); |
| 119 | + assertEquals(200.8f, section.get("AMSR2_23.8GHzV").getFloat(0), 1e-8); |
| 120 | + assertEquals(144.96f, section.get("AMSR2_36.5GHzH").getFloat(0), 1e-8); |
| 121 | + assertEquals(212.9f, section.get("AMSR2_36.5GHzV").getFloat(0), 1e-8); |
| 122 | + assertEquals(197.88f, section.get("AMSR2_89.0GHzH").getFloat(0), 1e-8); |
| 123 | + assertEquals(244.46f, section.get("AMSR2_89.0GHzV").getFloat(0), 1e-8); |
| 124 | + assertEquals(55.26f, section.get("AMSR2_Earth-Incidence").getFloat(0), 1e-8); |
| 125 | + assertEquals(93, section.get("AMSR2_scanpos").getInt(0)); |
| 126 | + |
| 127 | + final Array fileName = section.get("AMSR2_upstreamfile"); |
| 128 | + valueAsArray = (char[]) fileName.get1DJavaArray(DataType.CHAR); |
| 129 | + assertEquals("GW1AM2_201601020019_177A_L1SGRTBR_2210210.h5", new String(valueAsArray)); |
| 130 | + |
| 131 | + assertEquals(0, section.get("AMSR2_timediff").getShort(0)); |
| 132 | + } |
| 133 | +} |
0 commit comments