### Question:
ReadHelper { public static double extractValue(Value value, double defaultValue) { return extractValue(Aggregation.NONE, value, defaultValue); } private  ReadHelper(); static void readProperties(
        PropertyCursor pc,
        int[] propertyIds,
        double[] defaultValues,
        Aggregation[] aggregations,
        double[] properties
    ); static double extractValue(Value value, double defaultValue); static double extractValue(Aggregation aggregation, Value value, double defaultValue);  }### Answer:
@Test void extractValueReadsAnyNumericType() { assertEquals(42.0, ReadHelper.extractValue(Values.byteValue((byte) 42), 0.0)); assertEquals(42.0, ReadHelper.extractValue(Values.shortValue((short) 42), 0.0)); assertEquals(42.0, ReadHelper.extractValue(Values.intValue(42), 0.0)); assertEquals(42.0, ReadHelper.extractValue(Values.longValue(42), 0.0)); assertEquals(42.0, ReadHelper.extractValue(Values.floatValue(42.0F), 0.0)); assertEquals(42.0, ReadHelper.extractValue(Values.doubleValue(42.0D), 0.0)); assertTrue(Double.isNaN(ReadHelper.extractValue(Values.floatValue(Float.NaN), 0.0))); assertTrue(Double.isNaN(ReadHelper.extractValue(Values.doubleValue(Double.NaN), 0.0))); }
@Test void extractValueReturnsDefaultWhenValueDoesNotExist() { assertEquals(42.0, ReadHelper.extractValue(Values.NO_VALUE, 42.0)); }