package org.esa.snap.opendap; import opendap.dap.DArrayDimension; import org.esa.snap.opendap.datamodel.DAPVariable; import org.junit.Before; import org.junit.Test; import static junit.framework.Assert.*; public class DAPVariableTest { private String vType; private String vDataType; private String vName; private DArrayDimension validXDim; private DArrayDimension validYDim; private DArrayDimension[] vDimensions; private DAPVariable dapVariable; @Before public void setUp() throws Exception { vName = "validName"; vType = "validType"; vDataType = "Float32"; validXDim = new DArrayDimension(1121, "X"); validYDim = new DArrayDimension(812, "Y"); vDimensions = new DArrayDimension[]{validYDim, validXDim}; dapVariable = new DAPVariable(vName, vType, vDataType, vDimensions); } @Test public void testGetInfoString() { assertEquals("Float32 validName (Y:812, X:1121)", dapVariable.getInfotext()); DAPVariable metadataVariable = new DAPVariable("metadata", "someType", "byte", new DArrayDimension[0]); assertEquals("byte metadata", metadataVariable.getInfotext()); } @Test public void testCompareTo() { //preparation DAPVariable dapVariable2 = new DAPVariable(vName, vType, vDataType, vDimensions); DAPVariable dapVariable3 = new DAPVariable("zzzzzzName", vType, vDataType, vDimensions); DAPVariable dapVariable4 = new DAPVariable("ZzzzzzName", vType, vDataType, vDimensions); DAPVariable dapVariable5 = new DAPVariable("aAAnotherName", vType, vDataType, vDimensions); DAPVariable dapVariable6 = new DAPVariable("AAAnotherName", vType, vDataType, vDimensions); DAPVariable dapVariable7 = new DAPVariable(vName, vType, vDataType, new DArrayDimension[0]); //verification assertEquals(0, dapVariable.compareTo(dapVariable2)); assertEquals(-1, dapVariable.compareTo(dapVariable3)); assertEquals(-1, dapVariable.compareTo(dapVariable4)); assertEquals(1, dapVariable.compareTo(dapVariable5)); assertEquals(1, dapVariable.compareTo(dapVariable6)); assertEquals(1, dapVariable.compareTo(dapVariable7)); } @Test public void testEquals() throws Exception { //preparation DAPVariable dapVariable2 = new DAPVariable(vName, vType, vDataType, vDimensions); final DArrayDimension otherDimension = new DArrayDimension(1000, "otherDimension"); DAPVariable dapVariable3 = new DAPVariable(vName, vType, vDataType, new DArrayDimension[]{otherDimension}); final DArrayDimension otherXDimension = new DArrayDimension(1121, "X"); final DArrayDimension otherYDimension = new DArrayDimension(812, "Y"); DArrayDimension[] otherDimensions = {otherYDimension, otherXDimension}; DAPVariable dapVariable4 = new DAPVariable(vName, vType, vDataType, otherDimensions); //verification assertTrue(dapVariable.equals(dapVariable2)); assertFalse(dapVariable.equals(dapVariable3)); assertTrue(dapVariable.equals(dapVariable4)); } @Test public void testIllegalArgumentExceptionIsThrownIfNameIsNotValid() { final String invalidName1 = null; final String invalidName2 = ""; final String invalidName3 = " "; try { new DAPVariable(invalidName1, vType, vDataType, vDimensions); fail("never come here"); } catch (IllegalArgumentException e) { assertEquals("name", e.getMessage()); } try { new DAPVariable(invalidName2, vType, vDataType, vDimensions); fail("never come here"); } catch (IllegalArgumentException e) { assertEquals("name", e.getMessage()); } try { new DAPVariable(invalidName3, vType, vDataType, vDimensions); fail("never come here"); } catch (IllegalArgumentException e) { assertEquals("' ' is not a valid name", e.getMessage()); } } @Test public void testIllegalArgumentExceptionIsThrownIfTypeIsNotValid() { final String invalidType1 = null; final String invalidType2 = ""; final String invalidType3 = " "; try { new DAPVariable(vName, invalidType1, vDataType, vDimensions); fail("never come here"); } catch (IllegalArgumentException e) { assertEquals("type", e.getMessage()); } try { new DAPVariable(vName, invalidType2, vDataType, vDimensions); fail("never come here"); } catch (IllegalArgumentException e) { assertEquals("type", e.getMessage()); } try { new DAPVariable(vName, invalidType3, vDataType, vDimensions); fail("never come here"); } catch (IllegalArgumentException e) { assertEquals("' ' is not a valid type", e.getMessage()); } } @Test public void testIllegalArgumentExceptionIsThrownIfDataTypeIsNotValid() { final String invalidDataType1 = null; final String invalidDataType2 = ""; final String invalidDataType3 = " "; try { new DAPVariable(vName, vType, invalidDataType1, vDimensions); fail("never come here"); } catch (IllegalArgumentException e) { assertEquals("dataType", e.getMessage()); } try { new DAPVariable(vName, vType, invalidDataType2, vDimensions); fail("never come here"); } catch (IllegalArgumentException e) { assertEquals("dataType", e.getMessage()); } try { new DAPVariable(vName, vType, invalidDataType3, vDimensions); fail("never come here"); } catch (IllegalArgumentException e) { assertEquals("' ' is not a valid dataType", e.getMessage()); } } @Test public void testIllegalArgumentExceptionIsThrownIfDimensionsIsNotValid() { final DArrayDimension[] invalidDimensions = null; try { new DAPVariable(vName, vType, vDataType, invalidDimensions); fail(); } catch (IllegalArgumentException e) { assertEquals("dimensions may not be null", e.getMessage()); } } }