/** * Check for equality * * @param oo object in question * @return true if equal */ public boolean equals(Object oo) { if (this == oo) { return true; } if (!(oo instanceof LevelCoord)) { return false; } LevelCoord other = (LevelCoord) oo; return (ucar.nc2.util.Misc.closeEnough(value1, other.value1) && ucar.nc2.util.Misc.closeEnough(value2, other.value2)); }
public void testAggCoordVar(NetcdfFile ncfile) { Variable time = ncfile.findVariable("time"); assert null != time; assert time.getShortName().equals("time"); assert time.getRank() == 1; assert time.getSize() == 3; assert time.getShape()[0] == 3; assert time.getDataType() == DataType.DOUBLE; assert time.getDimension(0) == ncfile.findDimension("time"); try { Array data = time.read(); assert data.getRank() == 1; assert data.getSize() == 3; assert data.getShape()[0] == 3; assert data.getElementType() == double.class; int count = 0; IndexIterator dataI = data.getIndexIterator(); while (dataI.hasNext()) { assert Misc.closeEnough(dataI.getDoubleNext(), result[count]); count++; } } catch (IOException io) { io.printStackTrace(); assert false; } }
public void testAggCoordVar3(NetcdfFile ncfile) throws IOException { Variable time = ncfile.findVariable("time"); assert null != time; assert time.getShortName().equals("time"); assert time.getRank() == 1 : time.getRank(); assert time.getShape()[0] == 3; assert time.getDataType() == DataType.DOUBLE : time.getDataType(); assert time.getDimension(0) == ncfile.findDimension("time"); Array data = time.read(); assert (data instanceof ArrayDouble); IndexIterator dataI = data.getIndexIterator(); double val = dataI.getDoubleNext(); assert Misc.closeEnough(val, 0.0) : val; assert Misc.closeEnough(dataI.getDoubleNext(), 10.0) : dataI.getDoubleCurrent(); assert Misc.closeEnough(dataI.getDoubleNext(), 99.0) : dataI.getDoubleCurrent(); }
public void testAggCoordVarSubsetDefeatLocalCache(NetcdfFile ncfile) throws InvalidRangeException, IOException { Variable time = ncfile.findVariable("time"); assert null != time; assert time.getShortName().equals("time"); assert time.getRank() == 1; assert time.getSize() == 3; assert time.getShape()[0] == 3; assert time.getDataType() == DataType.DOUBLE; assert time.getDimension(0) == ncfile.findDimension("time"); time.setCachedData(null, false); Array data = time.read("1:2"); assert data.getRank() == 1; assert data.getSize() == 2; assert data.getShape()[0] == 2; assert data.getElementType() == double.class; int count = 0; IndexIterator dataI = data.getIndexIterator(); while (dataI.hasNext()) { assert Misc.closeEnough(dataI.getDoubleNext(), result[count + 1]); count++; } time.setCachedData(null, false); data = time.read("0:2:2"); assert data.getRank() == 1; assert data.getSize() == 2; assert data.getShape()[0] == 2; assert data.getElementType() == double.class; count = 0; dataI = data.getIndexIterator(); while (dataI.hasNext()) { assert Misc.closeEnough(dataI.getDoubleNext(), result[count * 2]); count++; } }
/** * Get the coordinate index for the record * * @param record record in question * @return index or -1 if not found */ private int coordIndex(GridRecord record) { double val = record.getLevel1(); double val2 = record.getLevel2(); if (usesBounds && (val > val2)) { val = record.getLevel2(); val2 = record.getLevel1(); } for (int i = 0; i < levels.size(); i++) { LevelCoord lc = (LevelCoord) levels.get(i); if (usesBounds) { if (ucar.nc2.util.Misc.closeEnough(lc.value1, val) && ucar.nc2.util.Misc.closeEnough(lc.value2, val2)) { return i; } } else { if (ucar.nc2.util.Misc.closeEnough(lc.value1, val)) { return i; } } } return -1; }
protected boolean protocheck(String path, String expected) { if (expected == null) expected = ""; List<String> protocols = Misc.getProtocols(path); StringBuilder buf = new StringBuilder(); for (String s : protocols) { buf.append(s); buf.append(":"); } String result = buf.toString(); boolean ok = expected.equals(result); System.err.printf("path=|%s| result=|%s| pass=%s\n", path, result, (ok ? "true" : "false")); System.err.flush(); return ok; }
/** return true if val equals a missing_value (low level) */ public boolean isMissingValue(double val) { if (!hasMissingValue) return false; for (double aMissingValue : missingValue) if (Misc.closeEnough(val, aMissingValue)) return true; return false; }
@Test public void testArraySubset() throws IOException { DODSNetcdfFile dodsfile = TestDODSRead.open("test.02?i32[1:10],f64[2:2:10]"); Variable v = null; Array a = null; // int32 assert (null != (v = dodsfile.findVariable("i32"))); assert v.getFullName().equals("i32"); assert v.getRank() == 1; assert v.getSize() == 10; assert v.getDataType() == DataType.INT; a = v.read(); assert a.getRank() == 1; assert a.getSize() == 25; assert a.getElementType() == int.class; assert a instanceof ArrayInt.D1; ArrayInt.D1 ai = (ArrayInt.D1) a; for (int i = 0; i < 10; i++) { int val = ai.get(i); assert (val == i * 2048) : val + " != " + (i * 2048); } // uint16 assert null == (v = dodsfile.findVariable("ui16")); assert null == (v = dodsfile.findVariable("ui32")); // double assert (null != (v = dodsfile.findVariable("f64"))); assert v.getFullName().equals("f64"); assert v.getRank() == 1; assert v.getSize() == 5; assert v.getDataType() == DataType.DOUBLE : v.getDataType(); a = v.read(); assert a.getRank() == 1; assert a.getSize() == 25; assert a.getElementType() == double.class; assert a instanceof ArrayDouble.D1; ArrayDouble.D1 ad = (ArrayDouble.D1) a; double[] tFloat64 = new double[] { 1.0, 0.9999500004166653, 0.9998000066665778, 0.9995500337489875, 0.9992001066609779, 0.9987502603949663, 0.9982005399352042, 0.9975510002532796, 0.9968017063026194, 0.9959527330119943, 0.9950041652780257, 0.9939560979566968, 0.9928086358538663, 0.9915618937147881, 0.9902159962126371, 0.9887710779360422, 0.9872272833756269, 0.9855847669095608, 0.9838436927881214, 0.9820042351172703, 0.9800665778412416, 0.9780309147241483, 0.9758974493306055, 0.9736663950053749, 0.9713379748520297 }; for (int i = 0; i < 5; i++) { double val = ad.get(i); assert Misc.closeEnough(val, tFloat64[i], 1.0e-9); } dodsfile.close(); }