package org.esa.beam.smos.ee2netcdf.variable;
import org.esa.beam.dataio.netcdf.nc.NVariable;
import org.junit.Before;
import org.junit.Test;
import ucar.ma2.DataType;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import static org.mockito.Mockito.mock;
public class VariableWriterFactoryTest {
private VariableDescriptor variableDescriptor;
private NVariable nVariable;
@Before
public void setUp() {
variableDescriptor = new VariableDescriptor();
nVariable = mock(NVariable.class);
}
@Test
public void testCreateByteStructMemberWriter() {
variableDescriptor.setDataType(DataType.BYTE);
variableDescriptor.setGridPointData(true);
final VariableWriter writer = VariableWriterFactory.create(nVariable, variableDescriptor, 12, 13);
assertTrue(writer instanceof ByteStructMemberWriter);
}
@Test
public void testCreateByteStructMember2DWriter_unsupported() {
variableDescriptor.setDataType(DataType.BYTE);
variableDescriptor.setIs2d(true);
try {
VariableWriterFactory.create(nVariable, variableDescriptor, 12, 13);
fail("IllegalArgumentException expected");
} catch (IllegalArgumentException expected) {
}
}
@Test
public void testCreateFloatStructMemberWriter() {
variableDescriptor.setDataType(DataType.FLOAT);
variableDescriptor.setGridPointData(true);
final VariableWriter writer = VariableWriterFactory.create(nVariable, variableDescriptor, 13, 14);
assertTrue(writer instanceof FloatStructMemberWriter);
}
@Test
public void testCreateFloatStructSequence2DWriter() {
variableDescriptor.setDataType(DataType.FLOAT);
variableDescriptor.setIs2d(true);
variableDescriptor.setGridPointData(true);
final VariableWriter writer = VariableWriterFactory.create(nVariable, variableDescriptor, 14, 15);
assertTrue(writer instanceof FloatStructSequence2DWriter);
}
@Test
public void testCreateFloatStructMember2DWriter() {
variableDescriptor.setDataType(DataType.FLOAT);
variableDescriptor.setIs2d(true);
variableDescriptor.setGridPointData(false);
final VariableWriter writer = VariableWriterFactory.create(nVariable, variableDescriptor, 14, 15);
assertTrue(writer instanceof FloatStructMember2DWriter);
}
@Test
public void testCreateIntStructMemberWriter() {
variableDescriptor.setDataType(DataType.INT);
variableDescriptor.setGridPointData(true);
final VariableWriter writer = VariableWriterFactory.create(nVariable, variableDescriptor, 16, 17);
assertTrue(writer instanceof IntStructMemberWriter);
}
@Test
public void testCreateIntStructSequence2DWriter() {
variableDescriptor.setDataType(DataType.INT);
variableDescriptor.setIs2d(true);
variableDescriptor.setGridPointData(false);
final VariableWriter writer = VariableWriterFactory.create(nVariable, variableDescriptor, 18, 19);
assertTrue(writer instanceof IntStructSequence2DWriter);
}
@Test
public void testCreateShortStructMemberWriter() {
variableDescriptor.setDataType(DataType.SHORT);
variableDescriptor.setGridPointData(true);
final VariableWriter writer = VariableWriterFactory.create(nVariable, variableDescriptor, 18, 19);
assertTrue(writer instanceof ShortStructMemberWriter);
}
@Test
public void testCreateShortStructSequence2DWriter() {
variableDescriptor.setDataType(DataType.SHORT);
variableDescriptor.setIs2d(true);
variableDescriptor.setGridPointData(false);
final VariableWriter writer = VariableWriterFactory.create(nVariable, variableDescriptor, 19, 20);
assertTrue(writer instanceof ShortStructSequence2DWriter);
}
@Test
public void testCreateLongStructMemberWriter() {
variableDescriptor.setDataType(DataType.LONG);
variableDescriptor.setGridPointData(true);
final VariableWriter writer = VariableWriterFactory.create(nVariable, variableDescriptor, 21, 22);
assertTrue(writer instanceof LongStructMemberWriter);
}
@Test
public void testCreateDoubleStructMemberWriter() {
variableDescriptor.setDataType(DataType.DOUBLE);
variableDescriptor.setIs2d(false);
final VariableWriter writer = VariableWriterFactory.create(nVariable, variableDescriptor, 21, 22);
assertTrue(writer instanceof DoubleStructMemberWriter);
}
@Test
public void testCreateVariableWithUnsupportedDataTypeThrowsException() {
variableDescriptor.setDataType(DataType.BOOLEAN);
variableDescriptor.setGridPointData(true);
try {
VariableWriterFactory.create(nVariable, variableDescriptor, 19, 20);
fail("IllegalArgumentException expected");
} catch (IllegalArgumentException expected) {
}
variableDescriptor.setDataType(DataType.ENUM2);
variableDescriptor.setGridPointData(false);
try {
VariableWriterFactory.create(nVariable, variableDescriptor, 19, 20);
fail("IllegalArgumentException expected");
} catch (IllegalArgumentException expected) {
}
}
}