/*
* Copyright (C) 2010 Brockmann Consult GmbH (info@brockmann-consult.de)
*
* 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 3 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, see http://www.gnu.org/licenses/
*/
package org.esa.beam.dataio.smos.dddb;
import org.junit.Before;
import org.junit.Test;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Map;
import java.util.Properties;
import static org.junit.Assert.*;
public class DddbTest {
private static final String DBL_SM_XXXX_AUX_ECMWF__0200 = "DBL_SM_XXXX_AUX_ECMWF__0200";
private static final String DBL_SM_XXXX_MIR_SMDAP2_0200 = "DBL_SM_XXXX_MIR_SMDAP2_0200";
private static final String DBL_SM_XXXX_MIR_SMDAP2_0201 = "DBL_SM_XXXX_MIR_SMDAP2_0201";
private static final String DBL_SM_XXXX_MIR_SMDAP2_0300 = "DBL_SM_XXXX_MIR_SMDAP2_0300";
private static final String DBL_SM_XXXX_MIR_OSDAP2_0200 = "DBL_SM_XXXX_MIR_OSDAP2_0200";
private static final String DBL_SM_XXXX_MIR_OSDAP2_0300 = "DBL_SM_XXXX_MIR_OSDAP2_0300";
private static final String DBL_SM_XXXX_MIR_OSUDP2_0200 = "DBL_SM_XXXX_MIR_OSUDP2_0200";
private static final String DBL_SM_XXXX_MIR_OSUDP2_0300 = "DBL_SM_XXXX_MIR_OSUDP2_0300";
private static final String DBL_SM_XXXX_MIR_SMUDP2_0200 = "DBL_SM_XXXX_MIR_SMUDP2_0200";
private static final String DBL_SM_XXXX_AUX_DGGROU_0400 = "DBL_SM_XXXX_AUX_DGGROU_0400";
private static final String DBL_SM_XXXX_AUX_DGGTFO_0300 = "DBL_SM_XXXX_AUX_DGGTFO_0300";
private static final String DBL_SM_XXXX_MIR_BWLF1C_0200 = "DBL_SM_XXXX_MIR_BWLF1C_0200";
private static final String DBL_SM_XXXX_MIR_BWND1C_0200 = "DBL_SM_XXXX_MIR_BWND1C_0200";
private static final String DBL_SM_XXXX_MIR_BWNF1C_0200 = "DBL_SM_XXXX_MIR_BWNF1C_0200";
private Dddb dddb;
@Before
public void setUp() {
dddb = Dddb.getInstance();
}
@Test
public void testGetBandDescriptors_ECMWF() {
final Family<BandDescriptor> descriptors = dddb.getBandDescriptors(DBL_SM_XXXX_AUX_ECMWF__0200);
assertEquals(57, descriptors.asList().size());
final BandDescriptor descriptor = descriptors.getMember("RR");
assertNotNull(descriptor);
assertEquals("RR", descriptor.getBandName());
assertEquals("Rain_Rate", descriptor.getMemberName());
assertTrue(descriptor.hasTypicalMin());
assertTrue(descriptor.hasTypicalMax());
assertFalse(descriptor.isCyclic());
assertTrue(descriptor.hasFillValue());
assertFalse(descriptor.getValidPixelExpression().isEmpty());
assertEquals("RR.raw != -99999.0 && RR.raw != -99998.0", descriptor.getValidPixelExpression());
assertFalse(descriptor.getUnit().isEmpty());
assertFalse(descriptor.getDescription().isEmpty());
assertEquals(0.0, descriptor.getTypicalMin(), 0.0);
assertEquals("m 3h-1", descriptor.getUnit());
}
@Test
public void testGetBandDescriptors_BUFR() throws Exception {
final Family<BandDescriptor> descriptors = dddb.getBandDescriptors("BUFR");
assertEquals(27, descriptors.asList().size());
final BandDescriptor flagsBandDescriptor = descriptors.getMember("Flags");
assertNotNull(flagsBandDescriptor);
assertEquals("Flags", flagsBandDescriptor.getFlagCodingName());
assertNotNull("Flags", flagsBandDescriptor.getFlagDescriptors());
}
@Test
public void testGetFlagDescriptors_BUFR() throws Exception {
final Family<FlagDescriptor> descriptors = dddb.getFlagDescriptors("BUFR_flags");
assertEquals(13, descriptors.asList().size());
}
@Test
public void testGetFlagDescriptors() {
final Family<FlagDescriptor> descriptors = dddb.getFlagDescriptors(DBL_SM_XXXX_AUX_ECMWF__0200 + "_flags1");
assertEquals(21, descriptors.asList().size());
FlagDescriptor descriptor;
descriptor = descriptors.getMember("RR_FLAG");
assertNotNull(descriptor);
assertEquals("RR_FLAG", descriptor.getFlagName());
assertEquals(0x00000080, descriptor.getMask());
assertNull(descriptor.getColor());
assertEquals(0.5, descriptor.getTransparency(), 0.0);
assertFalse(descriptor.getDescription().isEmpty());
}
@Test
public void testGetFlagDescriptorsFromBandDescriptor() {
final Family<BandDescriptor> bandDescriptor = dddb.getBandDescriptors(DBL_SM_XXXX_AUX_ECMWF__0200);
final Family<FlagDescriptor> flagDescriptors = bandDescriptor.getMember("F1").getFlagDescriptors();
assertNotNull(flagDescriptors);
assertNotNull(dddb.getFlagDescriptors(DBL_SM_XXXX_AUX_ECMWF__0200 + "_flags1"));
assertSame(flagDescriptors, dddb.getFlagDescriptors(DBL_SM_XXXX_AUX_ECMWF__0200 + "_flags1"));
}
@Test
public void testFindBandDescriptorForMember() {
final BandDescriptor descriptor = dddb.findBandDescriptorForMember(DBL_SM_XXXX_MIR_OSUDP2_0300, "Sigma_Tb_42.5Y");
assertNotNull(descriptor);
assertEquals("Sigma_TBY", descriptor.getBandName());
}
@Test
public void testFindBandDescriptorForMember_unknownFormatName() {
assertNull(dddb.findBandDescriptorForMember("schnick-schnack-for-mat", "Sigma_Tb_42.5Y"));
}
@Test
public void testFindBandDescriptorForMember_unknownBandName() {
assertNull(dddb.findBandDescriptorForMember(DBL_SM_XXXX_MIR_OSUDP2_0300, "rubber-band"));
}
@Test
public void testGetSMDAP2_v0200Descriptors() {
final Family<BandDescriptor> descriptors = dddb.getBandDescriptors(DBL_SM_XXXX_MIR_SMDAP2_0200);
assertEquals(70, descriptors.asList().size());
final BandDescriptor x_swath = descriptors.getMember("X_Swath");
assertNotNull(x_swath);
}
@Test
public void testGetSMDAP2_v0201Descriptors() {
final Family<BandDescriptor> descriptors = dddb.getBandDescriptors(DBL_SM_XXXX_MIR_SMDAP2_0201);
assertEquals(70, descriptors.asList().size());
final BandDescriptor tSurf_init_std = descriptors.getMember("TSurf_Init_Std");
assertNotNull(tSurf_init_std);
}
@Test
public void testGetSMDAP2_v0300Descriptors() {
final Family<BandDescriptor> descriptors = dddb.getBandDescriptors(DBL_SM_XXXX_MIR_SMDAP2_0300);
assertEquals(70, descriptors.asList().size());
final BandDescriptor hr_in_dqx = descriptors.getMember("HR_IN_DQX");
assertNotNull(hr_in_dqx);
}
@Test
public void testGetOSDAP2_v0200Descriptors() {
final Family<BandDescriptor> descriptors = dddb.getBandDescriptors(DBL_SM_XXXX_MIR_OSDAP2_0200);
assertEquals(133, descriptors.asList().size());
final BandDescriptor param2_sigma_m3 = descriptors.getMember("Param2_sigma_M3");
assertNotNull(param2_sigma_m3);
final BandDescriptor param6_sigma_m2 = descriptors.getMember("Param6_sigma_M2");
assertNotNull(param6_sigma_m2);
}
@Test
public void testGetOSDAP2_v0300Descriptors() {
final Family<BandDescriptor> descriptors = dddb.getBandDescriptors(DBL_SM_XXXX_MIR_OSDAP2_0300);
assertEquals(133, descriptors.asList().size());
final BandDescriptor out_of_lut_flags_4 = descriptors.getMember("Out_of_LUT_flags_4");
assertNotNull(out_of_lut_flags_4);
final BandDescriptor diff_tb_1 = descriptors.getMember("Diff_TB_1");
assertNotNull(diff_tb_1);
}
@Test
public void testGetOSUDP2_v0200Descriptors() {
final Family<BandDescriptor> descriptors = dddb.getBandDescriptors(DBL_SM_XXXX_MIR_OSUDP2_0200);
assertEquals(64, descriptors.asList().size());
final BandDescriptor dg_num_meas_l1c = descriptors.getMember("Dg_num_meas_L1c");
assertNotNull(dg_num_meas_l1c);
final BandDescriptor a_card = descriptors.getMember("Acard");
assertNotNull(a_card);
}
@Test
public void testGetSMUPD2_v0200Descriptors() {
final Family<BandDescriptor> descriptors = dddb.getBandDescriptors(DBL_SM_XXXX_MIR_SMUDP2_0200);
assertEquals(66, descriptors.asList().size());
final BandDescriptor n_instrument_error = descriptors.getMember("N_Instrument_Error");
assertNotNull(n_instrument_error);
}
@Test
public void testGetMemberDescriptors_BWLF1C() throws IOException {
final File hdrFile = TestHelper.getResourceFile("SM_OPER_MIR_BWLF1C_20111026T143206_20111026T152520_503_001_1.HDR");
final Family<MemberDescriptor> memberDescriptors = dddb.getMemberDescriptors(hdrFile);
assertNotNull(memberDescriptors);
assertEquals(12, memberDescriptors.asList().size());
final MemberDescriptor flagsDescriptor = memberDescriptors.getMember("Flags");
assertNotNull(flagsDescriptor);
assertTrue(flagsDescriptor.isGridPointData());
assertEquals("ushort", flagsDescriptor.getDataTypeName());
assertEquals("n_grid_points n_bt_data", flagsDescriptor.getDimensionNames());
assertEquals(0, flagsDescriptor.getMemberIndex());
final short[] flagMasks = flagsDescriptor.getFlagMasks();
assertNotNull(flagMasks);
assertEquals(16, flagMasks.length);
final short[] flagValues = flagsDescriptor.getFlagValues();
assertNotNull(flagValues);
assertEquals(16, flagValues.length);
assertEquals("POL_FLAG_1 POL_FLAG_2 SUN_FOV SUN_GLINT_FOV MOON_GLINT_FOV SINGLE_SNAPSHOT FTT SUN_POINT SUN_GLINT_AREA MOON_POINT AF_FOV EAF_FOV BORDER_FOV SUN_TAILS RFI_1 RFI_2", flagsDescriptor.getFlagMeanings());
assertEquals("", flagsDescriptor.getUnit());
assertEquals(0.0f, flagsDescriptor.getFillValue(), 1e-8);
assertEquals(1.0f, flagsDescriptor.getScalingFactor(), 1e-8);
assertEquals(0.0f, flagsDescriptor.getScalingOffset(), 1e-8);
final MemberDescriptor btValueDescriptor = memberDescriptors.getMember("BT_Value");
assertNotNull(btValueDescriptor);
assertTrue(btValueDescriptor.isGridPointData());
assertEquals("float", btValueDescriptor.getDataTypeName());
assertEquals("n_grid_points n_bt_data", btValueDescriptor.getDimensionNames());
assertEquals(1, btValueDescriptor.getMemberIndex());
assertNull(btValueDescriptor.getFlagMasks());
assertEquals("K", btValueDescriptor.getUnit());
assertEquals(-999.0f, btValueDescriptor.getFillValue(), 1e-8);
assertEquals(1.0f, btValueDescriptor.getScalingFactor(), 1e-8);
assertEquals(0.0f, btValueDescriptor.getScalingOffset(), 1e-8);
final MemberDescriptor radiometricAccuracyOfPixelDescriptor = memberDescriptors.getMember("Radiometric_Accuracy_of_Pixel");
assertNotNull(radiometricAccuracyOfPixelDescriptor);
assertTrue(radiometricAccuracyOfPixelDescriptor.isGridPointData());
assertEquals("ushort", radiometricAccuracyOfPixelDescriptor.getDataTypeName());
assertEquals("n_grid_points n_bt_data", radiometricAccuracyOfPixelDescriptor.getDimensionNames());
assertEquals(2, radiometricAccuracyOfPixelDescriptor.getMemberIndex());
assertNull(radiometricAccuracyOfPixelDescriptor.getFlagValues());
assertEquals("K", radiometricAccuracyOfPixelDescriptor.getUnit());
assertEquals(0.0f, radiometricAccuracyOfPixelDescriptor.getFillValue(), 1e-8);
assertEquals(1.52587890625E-5f, radiometricAccuracyOfPixelDescriptor.getScalingFactor(), 1e-8);
assertEquals(0.0f, radiometricAccuracyOfPixelDescriptor.getScalingOffset(), 1e-8);
final MemberDescriptor azimuthAngleDescriptor = memberDescriptors.getMember("Azimuth_Angle");
assertNotNull(azimuthAngleDescriptor);
assertTrue(azimuthAngleDescriptor.isGridPointData());
assertEquals("ushort", azimuthAngleDescriptor.getDataTypeName());
assertEquals("n_grid_points n_bt_data", azimuthAngleDescriptor.getDimensionNames());
assertEquals(3, azimuthAngleDescriptor.getMemberIndex());
assertEquals("deg", azimuthAngleDescriptor.getUnit());
assertEquals(0.0f, azimuthAngleDescriptor.getFillValue(), 1e-8);
assertEquals(0.0054931640625f, azimuthAngleDescriptor.getScalingFactor(), 1e-8);
assertEquals(0.0f, azimuthAngleDescriptor.getScalingOffset(), 1e-8);
final MemberDescriptor footprintAxis1Descriptor = memberDescriptors.getMember("Footprint_Axis1");
assertNotNull(footprintAxis1Descriptor);
assertTrue(footprintAxis1Descriptor.isGridPointData());
assertEquals("ushort", footprintAxis1Descriptor.getDataTypeName());
assertEquals("n_grid_points n_bt_data", footprintAxis1Descriptor.getDimensionNames());
assertEquals(4, footprintAxis1Descriptor.getMemberIndex());
assertEquals("km", footprintAxis1Descriptor.getUnit());
assertEquals(0.0f, footprintAxis1Descriptor.getFillValue(), 1e-8);
assertEquals(1.52587890625E-5f, footprintAxis1Descriptor.getScalingFactor(), 1e-8);
assertEquals(0.0f, footprintAxis1Descriptor.getScalingOffset(), 1e-8);
final MemberDescriptor footprintAxis2Descriptor = memberDescriptors.getMember("Footprint_Axis2");
assertNotNull(footprintAxis2Descriptor);
assertTrue(footprintAxis2Descriptor.isGridPointData());
assertEquals("ushort", footprintAxis2Descriptor.getDataTypeName());
assertEquals("n_grid_points n_bt_data", footprintAxis2Descriptor.getDimensionNames());
assertEquals(5, footprintAxis2Descriptor.getMemberIndex());
assertEquals("km", footprintAxis2Descriptor.getUnit());
assertEquals(0.0f, footprintAxis2Descriptor.getFillValue(), 1e-8);
assertEquals(1.52587890625E-5f, footprintAxis2Descriptor.getScalingFactor(), 1e-8);
assertEquals(0.0f, footprintAxis2Descriptor.getScalingOffset(), 1e-8);
final MemberDescriptor gridPointIdDescriptor = memberDescriptors.getMember("Grid_Point_ID");
assertNotNull(gridPointIdDescriptor);
assertTrue(gridPointIdDescriptor.isGridPointData());
assertEquals("uint", gridPointIdDescriptor.getDataTypeName());
assertEquals("n_grid_points", gridPointIdDescriptor.getDimensionNames());
assertEquals(0, gridPointIdDescriptor.getMemberIndex());
assertEquals("", gridPointIdDescriptor.getUnit());
assertEquals(Float.NaN, gridPointIdDescriptor.getFillValue(), 1e-8);
assertEquals(1.0f, gridPointIdDescriptor.getScalingFactor(), 1e-8);
assertEquals(0.0f, gridPointIdDescriptor.getScalingOffset(), 1e-8);
final MemberDescriptor latitudeDescriptor = memberDescriptors.getMember("Grid_Point_Latitude");
assertNotNull(latitudeDescriptor);
assertEquals("Latitude", latitudeDescriptor.getBinXName());
assertTrue(latitudeDescriptor.isGridPointData());
assertEquals("float", latitudeDescriptor.getDataTypeName());
assertEquals("n_grid_points", latitudeDescriptor.getDimensionNames());
assertEquals(1, latitudeDescriptor.getMemberIndex());
assertEquals("deg", latitudeDescriptor.getUnit());
assertEquals(Float.NaN, latitudeDescriptor.getFillValue(), 1e-8);
assertEquals(1.0f, latitudeDescriptor.getScalingFactor(), 1e-8);
assertEquals(0.0f, latitudeDescriptor.getScalingOffset(), 1e-8);
final MemberDescriptor longitudeDescriptor = memberDescriptors.getMember("Grid_Point_Longitude");
assertNotNull(longitudeDescriptor);
assertEquals("Longitude", longitudeDescriptor.getBinXName());
assertTrue(longitudeDescriptor.isGridPointData());
assertEquals("float", longitudeDescriptor.getDataTypeName());
assertEquals("n_grid_points", longitudeDescriptor.getDimensionNames());
assertEquals(2, longitudeDescriptor.getMemberIndex());
assertEquals("deg", longitudeDescriptor.getUnit());
assertEquals(Float.NaN, longitudeDescriptor.getFillValue(), 1e-8);
assertEquals(1.0f, longitudeDescriptor.getScalingFactor(), 1e-8);
assertEquals(0.0f, longitudeDescriptor.getScalingOffset(), 1e-8);
final MemberDescriptor altitudeDescriptor = memberDescriptors.getMember("Grid_Point_Altitude");
assertNotNull(altitudeDescriptor);
assertEquals("Altitude", altitudeDescriptor.getBinXName());
assertTrue(altitudeDescriptor.isGridPointData());
assertEquals("float", altitudeDescriptor.getDataTypeName());
assertEquals("n_grid_points", altitudeDescriptor.getDimensionNames());
assertEquals(3, altitudeDescriptor.getMemberIndex());
assertEquals("m", altitudeDescriptor.getUnit());
assertEquals(Float.NaN, altitudeDescriptor.getFillValue(), 1e-8);
assertEquals(1.0f, altitudeDescriptor.getScalingFactor(), 1e-8);
assertEquals(0.0f, altitudeDescriptor.getScalingOffset(), 1e-8);
final MemberDescriptor maskDescriptor = memberDescriptors.getMember("Grid_Point_Mask");
assertNotNull(maskDescriptor);
assertTrue(maskDescriptor.isGridPointData());
assertEquals("ubyte", maskDescriptor.getDataTypeName());
assertEquals("n_grid_points", maskDescriptor.getDimensionNames());
assertEquals(4, maskDescriptor.getMemberIndex());
assertEquals("", maskDescriptor.getUnit());
assertEquals(Float.NaN, maskDescriptor.getFillValue(), 1e-8);
assertEquals(1.0f, maskDescriptor.getScalingFactor(), 1e-8);
assertEquals(0.0f, maskDescriptor.getScalingOffset(), 1e-8);
final MemberDescriptor btCountDescriptor = memberDescriptors.getMember("BT_Data_Counter");
assertNotNull(btCountDescriptor);
assertTrue(btCountDescriptor.isGridPointData());
assertEquals("ubyte", btCountDescriptor.getDataTypeName());
assertEquals("n_grid_points", btCountDescriptor.getDimensionNames());
assertEquals(5, btCountDescriptor.getMemberIndex());
assertEquals("", btCountDescriptor.getUnit());
assertEquals(Float.NaN, btCountDescriptor.getFillValue(), 1e-8);
assertEquals(1.0f, btCountDescriptor.getScalingFactor(), 1e-8);
assertEquals(0.0f, btCountDescriptor.getScalingOffset(), 1e-8);
}
@Test
public void testGetDGGROU_v0400Descriptors() {
final Family<BandDescriptor> descriptors = dddb.getBandDescriptors(DBL_SM_XXXX_AUX_DGGROU_0400);
assertEquals(11, descriptors.asList().size());
final BandDescriptor dt_branch_hr_asc = descriptors.getMember("DT_Branch_HR_Asc");
assertNotNull(dt_branch_hr_asc);
final BandDescriptor hr_asc = descriptors.getMember("HR_Asc");
assertNotNull(hr_asc);
assertEquals("HR_DQX_Asc", hr_asc.getAncilliaryBandName());
}
@Test
public void testGetDGGTFO_v0300Descriptors() {
final Family<BandDescriptor> descriptors = dddb.getBandDescriptors(DBL_SM_XXXX_AUX_DGGTFO_0300);
assertEquals(7, descriptors.asList().size());
final BandDescriptor date_stamp_fo = descriptors.getMember("Date_Stamp_FO");
assertNotNull(date_stamp_fo);
final BandDescriptor tau_nad_fo = descriptors.getMember("Tau_Nad_FO");
assertNotNull(tau_nad_fo);
assertEquals("Tau_Nad_FO_DQX", tau_nad_fo.getAncilliaryBandName());
}
@Test
public void testGetBWLF1C_v0200Descriptors() {
final Family<BandDescriptor> descriptors = dddb.getBandDescriptors(DBL_SM_XXXX_MIR_BWLF1C_0200);
assertEquals(25, descriptors.asList().size());
final BandDescriptor footprint_axis2_xy = descriptors.getMember("Footprint_Axis2_XY");
assertNotNull(footprint_axis2_xy);
final BandDescriptor bt_value_xy_real = descriptors.getMember("BT_Value_XY_Real");
assertNotNull(bt_value_xy_real);
assertEquals("Pixel_Radiometric_Accuracy_XY", bt_value_xy_real.getAncilliaryBandName());
}
@Test
public void testGetBWND1C_v0200Descriptors() {
final Family<BandDescriptor> descriptors = dddb.getBandDescriptors(DBL_SM_XXXX_MIR_BWND1C_0200);
assertEquals(18, descriptors.asList().size());
final BandDescriptor flags_x = descriptors.getMember("Flags_X");
assertNotNull(flags_x);
final BandDescriptor bt_value_y = descriptors.getMember("BT_Value_Y");
assertNotNull(bt_value_y);
assertEquals("Pixel_Radiometric_Accuracy_Y", bt_value_y.getAncilliaryBandName());
}
@Test
public void testGetBWNF1C_v0200Descriptors() {
final Family<BandDescriptor> descriptors = dddb.getBandDescriptors(DBL_SM_XXXX_MIR_BWNF1C_0200);
assertEquals(25, descriptors.asList().size());
final BandDescriptor flags_xy = descriptors.getMember("Flags_XY");
assertNotNull(flags_xy);
final BandDescriptor bt_value_xy_real = descriptors.getMember("BT_Value_XY_Real");
assertNotNull(bt_value_xy_real);
assertEquals("Pixel_Radiometric_Accuracy_XY", bt_value_xy_real.getAncilliaryBandName());
}
@Test
public void testGetOriginalName() {
final Properties properties = new Properties();
properties.setProperty("a_key", "a_value");
properties.setProperty("another_key", "another_value");
final String key = Dddb.findOriginalName(properties, "another_value");
assertEquals("another_key", key);
}
@Test
public void testGetOriginalName_nameNotInProperties() {
final Properties properties = new Properties();
properties.setProperty("a_key", "a_value");
properties.setProperty("another_key", "another_value");
final String key = Dddb.findOriginalName(properties, "the Werner Value");
assertNull(key);
}
@Test
public void testExtractUniqueMemberNames() {
final ArrayList<BandDescriptor> descriptors = new ArrayList<>();
descriptors.add(new TestBandDescriptor("name"));
descriptors.add(new TestBandDescriptor("name_2"));
descriptors.add(new TestBandDescriptor("name_3"));
descriptors.add(new TestBandDescriptor("name_4"));
descriptors.add(new TestBandDescriptor("name_2"));
descriptors.add(new TestBandDescriptor("name"));
final Map<String, BandDescriptor> descriptorMap = Dddb.extractUniqueMembers(descriptors);
assertEquals(4, descriptorMap.size());
assertTrue(descriptorMap.containsKey("name"));
assertTrue(descriptorMap.containsKey("name_2"));
assertTrue(descriptorMap.containsKey("name_3"));
assertTrue(descriptorMap.containsKey("name_4"));
}
private class TestBandDescriptor implements BandDescriptor {
private final String memberName;
private TestBandDescriptor(String memberName) {
this.memberName = memberName;
}
@Override
public String getBandName() {
return null;
}
@Override
public String getMemberName() {
return memberName;
}
@Override
public int getPolarization() {
return 0;
}
@Override
public boolean isVisible() {
return false;
}
@Override
public int getSampleModel() {
return 0;
}
@Override
public double getScalingOffset() {
return 0;
}
@Override
public double getScalingFactor() {
return 0;
}
@Override
public boolean hasTypicalMin() {
return false;
}
@Override
public boolean hasTypicalMax() {
return false;
}
@Override
public boolean hasFillValue() {
return false;
}
@Override
public double getTypicalMin() {
return 0;
}
@Override
public double getTypicalMax() {
return 0;
}
@Override
public double getFillValue() {
return 0;
}
@Override
public String getValidPixelExpression() {
return null;
}
@Override
public String getUnit() {
return null;
}
@Override
public boolean isCyclic() {
return false;
}
@Override
public String getDescription() {
return null;
}
@Override
public String getFlagCodingName() {
return null;
}
@Override
public Family<FlagDescriptor> getFlagDescriptors() {
return null;
}
@Override
public String getAncilliaryBandName() {
return null;
}
@Override
public boolean isGridPointData() {
return false;
}
@Override
public String getDimensionNames() {
return null;
}
}
}