Skip to content

Close timestamps within tolerance are not recognised #62

@SprdNils

Description

@SprdNils

Hi there,

when comparing timestamps of a row with some given value within a specific tolerance sometimes it happens that the assertions fails although the current timestamp is within the tolerance. Problem is caused when the expected value is on the edge of a minute shift like 09:24:58 and the current value is after that value like 09:25:00. When comparing these two values with a tolerance of 10 seconds the corresponding method returns false.

Sample code to reproduce the problem:

public static void main(String[] args) throws IllegalAccessException, InstantiationException, InvocationTargetException {
        // current value: 2019-12-03 09:25:00.345
        Instant instant = Instant.parse("2019-12-03T09:25:00.34Z");
        Timestamp timestamp = Timestamp.from(instant);

        Value currentValue = createValue("blub", timestamp, LetterCase.COLUMN_DEFAULT);

        // expected: 2019-12-03T09:24:58.000000000
        Instant expectedInstant = Instant.parse("2019-12-03T09:24:58.00Z");
        DateTimeValue expectedDateTime = DateTimeValue.from(Timestamp.from(expectedInstant));

        boolean areClose = Values.areClose(currentValue, expectedDateTime, new TimeValue(0, 0, 10));
        System.out.println("Values are close: " + areClose);
    }

 private static Value createValue(String columnName, Object actualObject, LetterCase letterCase)
            throws IllegalAccessException, InvocationTargetException, InstantiationException {

        Class<Value> valueClass = Value.class;
        Constructor<?>[] constructors = valueClass.getDeclaredConstructors();
        Constructor<?> singleConstructor = constructors[0];
        singleConstructor.setAccessible(true);
        return (Value) singleConstructor.newInstance(columnName, actualObject, letterCase);

    }

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions